くだすれVB6.0以前( ..
[2ch|▼Menu]
175:デフォルトの名無しさん
08/10/05 17:20:49
>>167
それは合ってる。
だが逆に極端な例を出せば、標準モジュールのmainに100step程度書けば実装出来るようなものも出来るわけだ。
要するにクラスを使う→正、標準を使う→誤 みたいな固定観念を持っていること自体がおかしいのよ。
それに気づいてくれ。

176:デフォルトの名無しさん
08/10/05 23:53:16
クラスモジュールを一度も使ったことが無く、存在意義も知らない奴が多いことを問題視してるんだが。
>>142みたいに使うことを禁止してるような職場など論外。
よほどレベルが低い人間が集まってるんだろう。

「クラスモジュール使わなくても大規模なソフトを作れてるよ。特に困ってないよ。」
とかいうけど、そういう考えの奴がチームに一人でも居ると、まともなプログラマが迷惑するんだよ。

今時オブジェクト指向を理解しようとしない奴なんてプログラム書く資格ないよ。

177:デフォルトの名無しさん
08/10/05 23:57:53
資格とか、そういう非技術的な話題はどうでもいいよ。

178:デフォルトの名無しさん
08/10/06 00:27:56
短納期で納品後あぷでーとなし。顧客の満足するバグがでないプログラムであったら、
ソースがどんな書き方されててもかんけーねーよ。メンテしないんだから。
俺はその手の納品を何件もみてきたが、C長くやっててクラスがなんたるか理解できて
ないけど、腕はたしか。で、標準モジュールだけでかかれてた奴が軽快に動作して
バグなし、しかも短納期なのをみてると、ほんと口だけの奴はどーでもいいよ。

ま、しかし、どとねっと案件は、怖くて発注できませんわなw

179:デフォルトの名無しさん
08/10/06 00:32:18
煽るつもりはないけど、>>178ってダメグラマーの典型的な言い訳に聞こえるよ。

180:デフォルトの名無しさん
08/10/06 00:38:26
俺の経験したのは、
ほとんどの関数をCで書いてDll化。
DeclareでVBから呼び出し。Formがほとんど。
っていう納品のされ方なんだが、DllのソースがVC++なんで
メンテのときVBと両方みるのが素人のおれには、ややつらい。
構造体の受け渡しとかめんどーなんだよな。

181:デフォルトの名無しさん
08/10/06 00:42:27
>>178のようにはなりたくないと素直に思った。

182:デフォルトの名無しさん
08/10/06 00:48:12
VB6でちょっと手の込んだようなことやろうとするとどうしてもWin32APIの
お世話にならんといかんからなー。じゃ、結局C++でやっちゃえよ、って
ほうにいってから作るから180みたいなのは非常に多い。

183:デフォルトの名無しさん
08/10/06 00:50:26
全部VC++でいいじゃんと思うのだけどなぁ
わざわざDLLにして呼ぶくらいならなぁ
MFC使えば生産性も2倍も変わらないと思うんだけどなぁ

184:デフォルトの名無しさん
08/10/06 02:33:29
自分のレベルでも人のレベルでもなく、中間のレベルに皆が合わせて開発すればうまくいくんじゃね?

185:デフォルトの名無しさん
08/10/06 03:14:45
問題は、中間というのが皆の思う所より随分低いようだということ。

186:デフォルトの名無しさん
08/10/06 10:45:29
メンテもいらないし軽快に動いてるから
グローバル変数やgoto文使いまくりでもOKと同類の主張する人がいるスレはここですか?

187:デフォルトの名無しさん
08/10/06 21:10:16
偉そうなおまいらはそんなことはないと思うが、
一応それなりの数のソース見てきた俺としてはだな。
コメントは「コメント」をつけろ!
ゴミ変数残しとくな!
これ出来ていないソースがむっちゃくちゃめちゃいけ多い。
'ここで日付の入力を非活性化にする とか

とか書いてんの。アホか。ソースの日本語訳なんていらんわ!

188:デフォルトの名無しさん
08/10/06 21:30:29
なんでそこで「めちゃイケ」入れたん?

189:デフォルトの名無しさん
08/10/07 21:51:28
動かない綺麗なコードより、動くコードのほうが金になる。

190:デフォルトの名無しさん
08/10/07 22:00:08
>>187
コメント無しのソースを、読む練習をすると良い。
まぁ、変なコメント付いてるといらつくんだが、修正跡は全文残しておいて欲しいし(その一つの修正がバグの原因になる事も多い)
書いてる人が読めないソースになるのも本末転倒だしな。
愚痴るよりは、その人にソースの書き方をアドバイス。

  上司だったりしたら目も当てられんが。

191:デフォルトの名無しさん
08/10/07 22:29:41
修正跡はCVSのほうでコメント残ってりゃいいや

192:デフォルトの名無しさん
08/10/07 23:42:23
本当にカナリの初心者で
最近クラスについて勉強中なのですが
ちょうどクラスモジュールと標準モジュールのことが話題に
のぼっていたので質問させてください。

私の中では
「クラスモジュールでやれることはクラスモジュールでやり、
それ以外は標準モジュールで」
という認識でした。
あとは、標準モジュールは
・プログラムで汎用的に使われるメソッドや変数
をおくべき場所なのかなぁって。

結局のところ上の議論が集結していなくて答えが分からなかったのですが
認識は正しいのでしょうか?
クラスモジュールと標準モジュールの使い分け方や
クラスについて正しい理解がしたいので教えてください。

193:デフォルトの名無しさん
08/10/07 23:49:47
そんなことはいいから他の言語を学べ
そうすれば自然にわかってくる

194:デフォルトの名無しさん
08/10/08 00:13:06
言い方はどうかと思うがその通りだね。

そもそも今からVB6を学ぶってどうなの、って感は否めないけど
仮にそれが避けられないとしても、先にC#なりVB.NETなりで今時のプログラミングの
考え方をマスターしてからやった方が、回り道のようで案外早いと思う。

まあ、VB.NETとかに慣れちゃうと、なまじ中途半端に似てる分
VB6のダメさが目についてイライラするかもしれんけど。

195:デフォルトの名無しさん
08/10/08 01:26:32
>192
>・プログラムで汎用的に使われるメソッドや変数
メソッドはともかく変数はどうだろうな?と個人的には思うなぁ。
標準モジュールにPublic変数の宣言書いちゃうのは個人的には禁止したい。

196:デフォルトの名無しさん
08/10/09 10:57:14
標準モジュールに書いていいのは
sub main()

だけ

197:デフォルトの名無しさん
08/10/09 11:23:35
クラスモジュールのグローバルなインスタンスを標準モジュールに書くということはある。

198:デフォルトの名無しさん
08/10/09 11:57:55
グローバルのインスタンスが許されるのは1個まで

199:デフォルトの名無しさん
08/10/09 18:29:17
何いってんだ?
グローバル変数はすべての基本。
全てグローバル使ってこそ本物。

200:デフォルトの名無しさん
08/10/09 21:10:10
>>199
了解した、その手筈でやってみるZE!

201:デフォルトの名無しさん
08/10/11 15:37:04
グローバルマンセー!!!

202:デフォルトの名無しさん
08/10/11 16:08:55
VBのまともなソースを未だにみたことないので参考にしたいのですが
どなたかありませんかね?リンクでもいいです。

203:デフォルトの名無しさん
08/10/11 22:06:51
>>202
まず202氏の書いている『まともなソース』を頼む。

204:デフォルトの名無しさん
08/10/12 15:42:01
VBでまともなソースってそもそも無理難題。ましてや絶滅寸前でメンテナンス案件しか残ってないんだし。

205:デフォルトの名無しさん
08/10/12 18:20:50
俺はまともだ

206:デフォルトの名無しさん
08/10/12 18:27:17
VB6の最終使用日みたら2072年になってた

207:デフォルトの名無しさん
08/10/13 22:05:05
つまり、目の前にあるぐちゃぐちゃなソースはまともなソースである可能性が高い。
そういうことでしょうか?

208:デフォルトの名無しさん
08/10/13 22:10:13
ぐちゃぐちゃなら、まともではないでしょ。

209:デフォルトの名無しさん
08/10/13 22:13:50
みてみたい、みてみたいのぅ。まともな奴を、一生に一度でも。。。

210:デフォルトの名無しさん
08/10/13 22:15:56
歌丸です?

211:デフォルトの名無しさん
08/10/13 22:27:36
URLリンク(homepage2.nifty.com)
例えば、このあたりのソースは、どんなもんです?
英単語の綴りミスや、関数のコメントが冗長なのが気になりますが
結構好みです。

212:デフォルトの名無しさん
08/10/13 22:44:39
>>211
暗号のやつとかみてみたけど、それほどきれいじゃないね。

213:デフォルトの名無しさん
08/10/13 22:48:54
俺は、コメントがC++風なのが好みだな
html埋め込みも可
'///////////////////////////
'//
'///////////////////////////

もしくはJavaDoc風。 C#風なのはいいのだがXMLがださい。

214:デフォルトの名無しさん
08/10/13 22:55:56
>211
そのサイトのどれだろう
FTPと文字列変換クラスしか見てないけど、いいと思う。
機能数が増えてもこの感じを維持できれば十分だ。

215:デフォルトの名無しさん
08/10/13 23:07:56
もうちょっと大きい規模の良ソースあればなー。
オープンソース文化がVBになかったのが、技術あがらない原因のひとつだとはおもう。

216:デフォルトの名無しさん
08/10/14 00:53:03
そんなことはない。
3年ぐらい前まではインターネット上にVB6のソースがどの言語のソースよりも豊富にあった。
ほとんどが英語圏だけどな。

217:デフォルトの名無しさん
08/10/14 00:56:37
FTPのをちょっと見ただけだけど、
「好みかどうかで言えば」個人的にはいまいちかなぁ。

関数はcallをきちんと書きたいし、
変数宣言は先頭でまとめたい。
if A then B も
if A then
B
end if
と書きたいかな。

エラー処理はよく出来ているが、ErrRaiseのあとにExit Subが書いてあるのが残念な気がする。

218:デフォルトの名無しさん
08/10/14 01:02:26
お前のソースを出してもらおうか?

219:デフォルトの名無しさん
08/10/14 01:03:00
こういうこと言う奴が現れると思った・・・

220:デフォルトの名無しさん
08/10/14 01:25:30
出せよ

221:デフォルトの名無しさん
08/10/14 09:50:12
たっても無いのにそんなに急に出せないっすよww

222:デフォルトの名無しさん
08/10/14 18:31:22
>>217
「1行で完結するからインデントする必要ない」として、解釈するようにしている。
インデントはIf〜End If等の構造の始点と終点を見るための物なので、
Ifを1行だけの場合は、EndIf含めて3行も使う必要性が無い。
ソースを縦に延ばすと逆に見難くなってしまう挙句に
If文如きでインデントしてると(If文は頻繁に出てくる傾向があるので…)インデントが不必要に多くなってしまって
忘れた後でソースを見た時に目も当てられん状況になる。

私的にはこの様な感じで構造的な形式を取る場合以外はEnd Ifが出てくる状況を避ける様にしている。
 If hoge = n Then
  If hogehoge = nn Then
   hogehogehoge = nnn
  End If
 End If

1行で済ませるのが通常の条件判定、
End Ifが含まれるのが構造の条件判定…と言った形もお勧めしてみる。

223:デフォルトの名無しさん
08/10/14 18:53:51
Call使いたがる人って、引数の括弧が無いと落ち着かない人かな?
組み込み関数もCallしてるの?

224:デフォルトの名無しさん
08/10/14 21:05:52
>>223
人それぞれだろうね。
自作した関数の呼び出しはCallでやってる人とか、
戻り値を捨ててる目印にしている人とか。

225:デフォルトの名無しさん
08/10/14 21:42:56
俺は、ピーターノートンで学んだから
if A then
B
end if
派だな。
あと引数をはっきりとわからせるようCallも付ける派。

226:デフォルトの名無しさん
08/10/15 00:36:08
というか、callを省略するメリットってどれほど?
関数を明示することと、callをつけて戻り値有無を表すといったメリットをなくすほどのものなのか
俺はコメントをきちんと書くのと同じレベルの感覚だから、ちゃんとつけるってだけ。

227:デフォルトの名無しさん
08/10/15 01:39:15
わざわざCallを付けるほうが、何かの意図があるかと思うけどね。
Functionの戻り値を無視する意図があるとか。

228:デフォルトの名無しさん
08/10/15 01:44:28
質問です。

if((条件式A = False ) or (条件式B = False ) ) then
  処理(チョメチョメ)
end if

こういうif文で、条件式A、BそれぞれがBoolean値を返す関数
であった場合、デバッグ時の処理の流れとビルド後のEXEの
処理の流れが変わることがあったんです。

デバッグ時は条件式Aの後に条件式Bの順番だったんだけど
EXEでデバッグポイント代わりのmsgboxをいれてたら
条件式Bを示すmsgboxの後に条件式Aのmsgboxが出てきた
ので、デバッグ時と異なっているのは明らかなんです。

こういう現象の発生する原因って何だろうと思ったんですけど
ご存知の方いらっしゃいますか

また、環境ですが
開発PCがXPPro(SP3) ,VB6(SP6) ,IE7
実可動のPCが2003R2(SP2) ,IE7

となります。
よろしくお願いします。


229:デフォルトの名無しさん
08/10/15 01:49:56
そこから導き出される結論は、特定の評価順所を期待したコードを書いてはいけないってことになるのでは?

230:228
08/10/15 10:43:03
ごめんなさい、今起きました。
(久々の休みだったもので・・・)

>>229
そのとおりです。

条件式Bはその直前の条件式Aによって出力値の影響を受けてしまいます。
ちなみに、この現象XPでExeを走らせると発生しなくて、2003でExe走らせると
おきたんです。

ちなみに、似たようなソースを書いて検証したのですが、それでは
EXE環境でもXP,2003問わず、こちらの意図している
「条件式Aの評価」後に「条件式Bの評価」を行うのです。

なので、余計に前述の現象が奇異なものにみえたので
この現象が「なぜ起きるんだ?」という知的探究心(好奇心のほうが正しい?)
と気になったわけなんです。

ソースはけっきょく
if 条件式A = false then
if 条件式B = false then
ちょめちょめ
end if
else
いやんばかん
end if

になりました。

231:デフォルトの名無しさん
08/10/15 20:17:27
賭けてもいい。
絶対228の勘違いだと思う。

232:デフォルトの名無しさん
08/10/15 20:41:01
> 条件式Bはその直前の条件式Aによって出力値の影響を受けてしまいます。
こういう設計って一般的なの?

233:デフォルトの名無しさん
08/10/15 20:41:49
a + b のどっちが先に評価されるかなんてことに依存するコードを書こう
なんてやつを相手にすんな

234:デフォルトの名無しさん
08/10/15 20:47:11
>>232
それは普通。VB.NETなら
if 条件式A AndAlso 条件式B then


235:デフォルトの名無しさん
08/10/15 21:45:53
副作用を伴って、なおかつお互いに関連がある関数は、複数if-conditionには書かないのが
どんな言語でも普通。

236:デフォルトの名無しさん
08/10/15 23:07:50
>>235
15年くらい前ならそう言ってもよかったんだが、
最近はショートサーキット演算子があるのが普通だな。
PerlあたりのLL、Java、JavaScript、VB.net・・・例外はCくらいか。


237:デフォルトの名無しさん
08/10/15 23:10:38
だよねえ。
ってああ、思い出した、これだ。

URLリンク(msdn.microsoft.com)

> トラブルシューティング
>
>  実行順序。Visual Basic では、演算効率を高めるために数式が自動的に
>  並べ替えられることがあります。このため、変数の値を変えてしまうような
>  Function プロシージャを数式の中で実行しないようにしてください。

238:デフォルトの名無しさん
08/10/15 23:12:17
>>237のだよねえは>>235宛だったんだけど>>236に否定されてるな。まあいいか。

239:デフォルトの名無しさん
08/10/15 23:20:53
そしてリンク先がVB2008のヘルプだった。まあ該当部分はVB6でも一緒なんで。

240:デフォルトの名無しさん
08/10/15 23:35:01
>>236
Cだって&&と||は短絡評価だ。

241:228
08/10/15 23:55:34
>>237
そういうことだったんですね。目から鱗です。

皆様の貴重なご意見身に染みました。
有難うございました。

242:デフォルトの名無しさん
08/10/16 00:52:12
vb6でAndAlsoを代替するなら

if not 条件式A then
elseif 条件式B then

end if


243:デフォルトの名無しさん
08/10/16 01:00:49
(複雑な式の)数値演算の順序と単純な論理演算の順序の問題は
普通に考えればまったく別問題だろう。
目からうろこが落ちてどうする。
だから間違いなくお前さんの勘違いだから。

244:デフォルトの名無しさん
08/10/16 01:28:11
Dim txt As New TextBox
→Newキーワードの使用法が不正です。

これってどうしてでしょうか?
クラスである以上Newできるのが当然と思っているのですけど
できなくてすごく疑問です。


245:デフォルトの名無しさん
08/10/16 02:46:48
質問する前にVBのヘルプを読め。
New で 検索掛ければ 出てくる筈だ。

246:デフォルトの名無しさん
08/10/16 04:31:12
>>240
そうだった。算術演算子と勘違いしてた。

247:デフォルトの名無しさん
08/10/16 13:45:09
Andはどっち?

248:244
08/10/18 18:21:41
キーワード New を使って、固有のデータ型の変数の宣言、または従属オブジェクトのインスタンスの宣言はできません。
→CreateObject または New を使用して従属オブジェクトを作成することはできません
 →クラスの従属オブジェクトからオブジェクトを作るには、クラス モジュールの Instancing プロパティに PublicNotCreatable を設定します。

従属オブジェクトってことですね。

249:デフォルトの名無しさん
08/10/18 18:28:05
>>248
違うと思う。普通に New できるもん。

TextBox ってのの定義と、プロジェクトの種類を教えて。

250:245
08/10/18 20:01:02
>>248
Newにカーソル置いてF1押してるだけだとそのヘルプは出てこないから、
キーワードのヘルプだけでやってるとそこらでドツボにハマる。
というか、私もハマった一人なんだがな。なので、教えるのに若干くどい手段に。

ただ、>>248で従属オブジェクトと言ってるのは多分違う。
>>248の言っている従属オブジェクトと言うのは、
自作したクラスの中にTextBoxを丸ごと包括してたりする場合などを示す。
と言う訳で、Newの仕様を理解した所で回答。(宣言時のNewは自作Class専用みたいな物。)
ヘルプで探してもナイスな方法が出てこなかった気がするので説明添えてサンプル提示してみる。



Controls.Addで追加してそれを参照する形でNewの代用とする。
※txtNewは作成されるコントロール名なので複数Addする際は重複不可。
動的に割り当てる場合、大概は複数作る筈なのでindexに配列値を入れて、
Set Txt(index) = Me.Controls.Add("VB.TextBox", "txtNew" & format(index))
と言う形で作成する。
'--------------------------------始
Dim Txt(1) As TextBox
Set Txt(0) = Me.Controls.Add("VB.TextBox", "txtNew" & Format(0))
Set Txt(1) = Me.Controls.Add("VB.TextBox", "txtNew" & Format(1))
'--------------------------------
'単発版
Dim Txt1 As TextBox
Set Txt1 = Me.Controls.Add("VB.TextBox", "txtNew1")
'--------------------------------終
これを走らせると、定義したformにtxtNew1と言うオブジェクト名を持つTextBoxを作成し、
参照の設定を終えた形になる。
ただし、Me.Controlsの数は255以下とされていて、それを超えて生成しようとすると失敗する。
「際限なくコントロールを作成できるボタン」等を作成する場合は、
カウント数を見ながらエラートラップすべし。

251:デフォルトの名無しさん
08/10/19 12:40:44
コントロール配列にすれば良いじゃん

252:デフォルトの名無しさん
08/10/19 20:17:00

ハード(分解能=1μs)のタイマとソフトのタイマ使ったソフト仕事で作ってるんですが
VB6のタイマの分解能って実際50msぐらいなんですか?Windowsのタイマの分解能が1msらしいですが、、、

253:デフォルトの名無しさん
08/10/19 20:24:19
>>252
はい。約55msecです。

#10msec ってのも会ったような気がしたけど

それより細かい値が必要なときは、パフォーマンスカウンタを使いましょう。

254:デフォルトの名無しさん
08/10/19 22:48:52
>>253
ありがとうございます
細かい分解能必要な時はソフトのタイマ使うのはちょっと怖いですね
VBのタイマとか、APIのタイマってハードのクロックを常に取得しているんですかね?
VBでタイミングの遅延を気にするのなんてナンセンスな気もしますが
他のプロセスの動作でタイマの遅延みたいのってあるのかな・・?
実際はソフトウェアのタイマは使わないので遅延があっても構わないんですが、、、

255:デフォルトの名無しさん
08/10/19 23:23:55
rtos使え

256:デフォルトの名無しさん
08/10/19 23:39:03
>>252
timeBeginPeriod/timeEndPeriodで1msになるようだ。
URLリンク(www.emit.jp)
URLリンク(d.hatena.ne.jp)

257:デフォルトの名無しさん
08/10/19 23:45:45
>>253
55msecとか10msecとか決まってないって。
VBのタイマーはWM_TIMERだから、メッセージループを最低1回回すだけの時間は確実に掛かる。
具体的な数値はパソコンの性能とかそのとき行ってる処理内容による。
そういういいかげんなタイマーだ。

258:デフォルトの名無しさん
08/10/20 00:44:51
>メッセージループを最低1回回すだけの時間は確実に掛かる。
そらそうだが今はそういう話じゃないだろw


259:244
08/10/20 02:58:58
>>249
どうも違うみたいですね汗
TextBoxはフォームに乗せるTextBoxです

>>250
>宣言時のNewは自作Class専用みたいな物
これで納得しました。

New出来ないClassは例のように
Controls.Addのように間接的にしかNewできないんですね。
確かにTextBoxクラスなどはこっちで勝手にNewできる必要はないですし、
できたとしてもどう初期化すればいいのか困る気もします。

260:デフォルトの名無しさん
08/10/21 23:34:16
マルチスレッドで組めないVB6で苦悩しているVB厨の私が
次に手をつけるべきお勧めの言語は何でしょうか?

261:デフォルトの名無しさん
08/10/21 23:44:08
もうやめろ

262:デフォルトの名無しさん
08/10/21 23:56:03
選択肢はC#ぐらいしかないでしょ?このスレでDelphiとかいったら喧嘩売ってるようなもんだし。

263:デフォルトの名無しさん
08/10/22 03:13:02
>>260
VB,NETかC#辺りをお勧め。
とは言え、それなりにプログラムを何度か組んでいるのであれば
言語仕様は解ってきてると思うんだがな。
VBが粗方解ってきたらC++を少し齧っておくと後で覚えようとする時に楽かな。

264:デフォルトの名無しさん
08/10/22 04:34:15
>>260
なでしこにでも手を出せば?

265:デフォルトの名無しさん
08/10/22 06:41:03
>>263
ブイビーコンマネットいいよね

266:デフォルトの名無しさん
08/10/22 20:21:04
コロンネットの方が優れている

267:260
08/10/22 23:11:45
レス有難う
大幅な仕様変更でシビアなタイミングが求められてきて
タイマで誤魔化しきれなくなってきました
2005のC#なら少し使ったことあるので、そっちに移行出来るよう勉強します
といっても納期は来週頭なんですが・・・ハハハ
orz

268:デフォルトの名無しさん
08/10/22 23:36:38
C#なら解決するとでも思ってるんだろうか

269:デフォルトの名無しさん
08/10/22 23:42:27
解決するんじゃないあるいは?

例えば通信とか、機器の制御なんかだとワーカースレッドが使えるかどうかは
雌雄を決する場合があるよ。

270:デフォルトの名無しさん
08/10/23 22:19:52
VB6でまともなマルチスレッドがやりたければ、別スレッドの処理をCで書いたDLL関数からCreateThreadするのが常道。
VBとのスレッド間通信もDLL関数でできる。
Cの知識がなければ無理だが、職業プログラマでまさかCが書けないなんてことはないよな?

271:デフォルトの名無しさん
08/10/24 00:16:50
などと意味不明なことを口走っており

272:デフォルトの名無しさん
08/10/24 08:57:00
奥多摩方面に逃走している模様です

273:デフォルトの名無しさん
08/10/24 11:17:11
>>270
時代はJavaだと言うに

274:デフォルトの名無しさん
08/10/24 11:18:35
軽く1000回以上は説得したけど無駄でした。


275:デフォルトの名無しさん
08/10/25 23:10:41
web情報を一行ずつテキストに取り込む方法教えてください

276:デフォルトの名無しさん
08/10/25 23:13:02
web情報って何ですか?

277:デフォルトの名無しさん
08/10/25 23:18:39
馬鹿は黙っててください

278:デフォルトの名無しさん
08/10/25 23:30:37
web情報ってのはブラウザーに表示されている、web内容の意味で使いました。

279:デフォルトの名無しさん
08/10/26 06:31:55
目覚まし時計を作ってます

現在
dim aa

zikoku = Time
aa = DateAdd("m", 10, zikoku)

Dateaddで正確に時刻が入りません、timeを直接引数にしたりもしましたがダメでした
固定された時間しか無理なのですか?


If aa = Time Then
MMControl1.Command = "play"

数時間前はaaに時間が入力できる時がありましたが
同じ時刻のはずなのにif文が反応しませんでした。

マウスをあててみるとaa = "5:30:00" time = 5:30:00とダブルコーテーションのくくりなかったのでこれかなとも思ってます

280:デフォルトの名無しさん
08/10/26 06:33:03
誰か解決法いただけませんか

281:デフォルトの名無しさん
08/10/26 06:38:30
時間を=で比べるな

282:デフォルトの名無しさん
08/10/26 06:48:51
いや、分を”m”にしてたこととスピーカのボリュームが0になったました。
すいません、自己解決しました

283:260
08/10/26 23:54:30
>>270
残念ながら職業プログラマじゃないのです
学生の時ちょこっと齧っただけです
会社に適任者がおらん為、仕事を投げられました
まともにプログラムの勉強したいです

284:デフォルトの名無しさん
08/10/27 00:18:20
そのレベルなら外注するか専任にさせてもらうか、また今後どういう方向性で
プログラムを扱っていくのか、そのコストは見合うのか、など、言語とかそういうこととは
違うレベルで調整が必要だと思う。頑張ってどうにかしたのはいいけど、評価が
下がるんじゃ嬉しくないっしょ?

285:デフォルトの名無しさん
08/10/27 00:43:15
自分も外注に投げたいんですよ本当は
だけど計画性0の会社で5秒後に仕様変更発生みたいな感じなので
社内で作れと・・・
使う機器が1号機ってせいもあるんですが
仕様が全く固まってないので、当面は私が作ることになりそうです
しかもそのソフトを100万で売るっつってるんだから始末に終えない・・・
はぁ・・・こんな仕事やりたくねぇ・・・

286:デフォルトの名無しさん
08/10/27 01:40:59
お前な、成功させようとするからおかしな方向に進んでいくんだよ
ばっさりと動かなくさせれば他の道ができていくんだ
やれることをやってからぼやけ

287:デフォルトの名無しさん
08/10/29 00:53:25
VB6.0でListView(詳細)についてですが、
ListView1.ListItems.Add
のように、行を追加した後で、
ListView1.ListItems(0).Text = "hoge"
のように、やってみると、「インデックスが範囲を超えています」
というエラーが出て、文字の値の変更ができません。
本当に初心者の質問ですみません。悩んでいます。

288:デフォルトの名無しさん
08/10/29 01:08:18
>>287
インデックスが1からってことはない?

289:デフォルトの名無しさん
08/10/29 01:17:01
>>288
できました!インデックスが1からでした!!
有難うございます。しょうもない(?)ところで2〜3時間食っていて悩んでました!

290:デフォルトの名無しさん
08/10/31 00:25:17
スロー再生や倍速ができるアプリを作りたいんですがまるでわかりません
なんかヒントいただけませんか

291:デフォルトの名無しさん
08/10/31 12:03:30
>>285
どこの田舎の零細企業?
会社はソフト産業とは無縁でしょ。
よくいるんだよね。
そういうこと言い出す馬鹿。


292:デフォルトの名無しさん
08/10/31 12:06:42
>>290
まずは自分で再生するソフトを作ってみような。
もちろんデータを読み込んで1コマ1コマ表示する処理を自分で書くんだ。
それが出来てから倍速とか考えるべき。


データフォーマットをいじって30fpsってのを60fpsに変更してWindowsMediaPlayerで再生すれば倍速になるけど
音声も調整しないといけなくて、しかも音程が狂うんじゃなかったっけな。


293:デフォルトの名無しさん
08/11/05 17:13:16
VBで何かシステム作って卒業研究にしたいんですがいいアイデアありませんかね?

294:デフォルトの名無しさん
08/11/05 17:18:16
あるよ!

295:デフォルトの名無しさん
08/11/05 21:00:07
>>294
教えてくれこのとおりだ
or2

296:デフォルトの名無しさん
08/11/05 23:09:39
なんで今からVB6なんだよ?そもそもライセンスが(ry

297:デフォルトの名無しさん
08/11/05 23:20:00
ライセンスがどうかしたのか?
サポートの話ならわかるが

298:293
08/11/06 02:55:47
すまんスレタイの超初心者ってのみてここで相談しちまった

299:デフォルトの名無しさん
08/11/06 22:02:06
フォームサイズの最大値が画面の解像度に依存しないようにする方法ってありますか?
15インチ幅の用紙に印刷する為に印刷内容を載せるフォームを作ったのですが
解像度が低いマシンだとフォームのサイズを小さくされてしまい、
印刷内容が途中で切れてしまいます。

300:デフォルトの名無しさん
08/11/07 00:34:34
VBscriptをつかってHTA上で実行した結果をHTMLへ動的に表示させたいのですがうまく出来ずに悩んでおります。一応VBの部分はちゃんと出来ていることは確認していますが表示が全くダメです。
どなたか教えて下さい。


Option Explicit

Dim objAccess
Dim objDB
Dim objRS
Set objAccess = CreateObject("Access.Application")
objAccess.Visible = True
objAccess.OpenCurrentDatabase("c:\happy\island.mdb")
Set objDB = objAccess.CurrentDb
Set objRS = objDB.OpenRecordset("SELECT COUNT(*) AS 件 FROM 住所録テーブル")
WScript.echo "件数=" & objRS("件数")
objRS.Close
Set objRS = Nothing
Set objDB = Nothing
Set objAccess = Nothing

件数をWScript.echoではなくinnerhtmlで表示したいです。
またSQLを("SELECT * FROM 住所録テーブル")にした場合データをレコードセットで抽出し必要なデータを表にして表示をしたいのですが・・・(これもinnerhtmlを使いたい)

301:デフォルトの名無しさん
08/11/07 00:43:19
>>300
URLリンク(www.google.co.jp)

302:デフォルトの名無しさん
08/11/07 23:12:41
パラメータって引数とは違うの?

303:デフォルトの名無しさん
08/11/07 23:34:17
時と場合による

304:デフォルトの名無しさん
08/11/07 23:39:49
サンクス

305:デフォルトの名無しさん
08/11/08 03:06:03
おならプー

306:デフォルトの名無しさん
08/11/09 12:19:50
>>299
ピクセル数が少ないところに全体を表示するなら
縮小しないと出せませぬ。
Imageコントロールはビットマップを縮小表示できます。
FormやPictureBoxにLineやPrintで書いている場合は、
書いたものをビットマップ(IPicture)として取得してImageに出すか、
こんなときのためのScaleWidthやScaleHeightなので、これらを常に
同じ値にして、Twip単位でLineやPrintを使いましょう。


307:デフォルトの名無しさん
08/11/12 11:09:45
Visual Basics 6 Portable めっけた
URLリンク(www.plunder.com)
makeもできるんですけど

308:デフォルトの名無しさん
08/11/12 14:27:23
>>307
ぷぷw

309:デフォルトの名無しさん
08/11/12 15:55:59
>>307
コメント欄が荒れすぎなのでウィルスかなんかかと思ったけど、結局これ何なの?

310:デフォルトの名無しさん
08/11/12 16:01:33
>>309
ウイルスに決まってんじゃんw

311:デフォルトの名無しさん
08/11/12 16:51:54
AVGは反応しなかった。
普通に起動した。
何かが起きたかどうかは知らん。

312:デフォルトの名無しさん
08/11/13 10:54:38
US評価版だろ。
USBメモリ起動に割ったやつ

313:デフォルトの名無しさん
08/11/14 16:07:09
ベーシックス

314:デフォルトの名無しさん
08/11/15 18:20:55
社内の情報システム部のようなところで勤務していますが、プログラマーではありません。

そんな私が最近、VB6のコードを調べる必要がありました。
.NETのC++やC#のコードとよく似てるように見えるのですが
VB6はオブジェクト指向ではないという理解で正しいでしょうか。

315:デフォルトの名無しさん
08/11/15 18:29:54
何を持ってオブジェクト指向と定義するかで変わってくるが
オブジェクト指向に必要な要素は持っている。
ただ一般的に社内システムレベルのソースがオブジェクト指向ではない可能性は高い。

316:デフォルトの名無しさん
08/11/15 19:02:54
VB6はオブジェクト指向の要素のうちカプセル化を不完全な形で持っているだけで、
継承、多態といった要素を持ちません。つまり>314の認識でほぼ合っていると思われます。

317:デフォルトの名無しさん
08/11/15 19:11:03
オブジェクト指向なんて考え方。Java使ったコボラーの
プログラムなどをオブジェクト指向などと呼びたくない。

318:デフォルトの名無しさん
08/11/15 19:18:37
委譲、包含、インターフェイスといった要素ではダメですか>OOP
一口でオブジェクト指向といっても、オブジェクト指向プログラミングの他に
オブジェクト指向デザイン、オブジェクト指向ユーザーインターフェイス、
オブジェクト指向開発などなどさまざまな概念がそろっております。

319:デフォルトの名無しさん
08/11/15 19:26:44
> 委譲、包含、インターフェイスといった要素ではダメですか>OOP

だめじゃね? 全部 VB6 でできる。

320:デフォルトの名無しさん
08/11/15 19:28:07
とりあえず、VB6は、Cの構造的プログラミング+モジュール分割 の書かれ方が多い。
が、フォームのコントローラ関係は、普通にOOだな。
あ、そうそう、下手にOOしてるVB6ひいちゃったら、しねるぞ。

321:デフォルトの名無しさん
08/11/15 20:10:59
OOの定義の問題は置くとしても愚問だね。
仮に結論が出たとして、それを>>314が知ったところでなんの意味があるんだろう。

322:314
08/11/15 21:13:10
質問の仕方が下手ですみません。
VB6の言語使用を習得すれば、「オブジェクト指向も知ってます」と
いえるのかどうかを知りたかったです。
オブジェクト指向についてはまた別に学習することを考えます。

しかし、オブジェクト指向とは何たるかについては、
本職ではない私にはちょっと難しそうですね・・・

とても参考になりました。
みなさん、ありがとうございました。

323:デフォルトの名無しさん
08/11/15 21:29:29
>>322

> VB6の言語使用を習得すれば、「オブジェクト指向も知ってます」と
> いえるのかどうかを知りたかったです。

いえません

324:デフォルトの名無しさん
08/11/15 21:59:27
いくらOOが考え方だとはいえ、さすがにVB6でOO知ってますは無理があるだろ・・・。
VB6なんて最悪言語の代名詞なのに・・・。

325:デフォルトの名無しさん
08/11/15 22:05:14
かといって、Javaも不完全なんだよなー

326:デフォルトの名無しさん
08/11/15 22:43:44
>322
実装重視であれこれつまみ食いするのが結局一番いいんじゃね?
アカデミックに勉強してたらそれだけで一生終わる

327:デフォルトの名無しさん
08/11/18 13:17:41
なるほどオブジェクト指向を学ぶにはVBが最高なんですねー

328:デフォルトの名無しさん
08/11/18 20:02:59
反面教師としてはいいんじゃね?

329:デフォルトの名無しさん
08/11/19 14:51:36
はじめまして
早速ですが、現在、VB6.0でAccess97のmdbを使うプログラムを作成しているのですが、
実行時エラー 2147023170(800706be)オートメーションエラーです。リモートプロシャジーコールに失敗しました。
のエラーが、稀に発生します。
プログラムの一部
Public wrkJet As Workspace
Public Rundb As Database
Set wrkJet = CreateWorkspace("", "admin", "", dbUseJet)
Set Rundb = wrkJet.OpenDatabase("c:\xxxxx\xxxxxx.mdb", False)
strSql = ""
strSql = "Select * From 送信状況マスタ;"
Set RecSet = Rundb.OpenRecordset(strSql, dbOpenDynaset)
Call CloseRecSet(RecSet)
----------------------------------------------------------------------------------------------------------------------------
Public Sub CloseRecSet(ByRef RecSet As Recordset)
On Error Resume Next
If Not RecSet Is Nothing Then
RecSet.Close <<<<<<<<<<<<<<<<<< この変でエラーになります。
Set RecSet = Nothing
End If
End Sub
ライブラリにMicrosoft DAO 3.6 Object Library を使用しています。
URLリンク(support.microsoft.com)
に、Access97は、DAO 3.5を推奨とあったのですが、上位互換で問題無いと思っていたのですが、
やはり、DAO 3.5を使用した方が良いのでしょうか?
ご指導をお願い致します。



330:デフォルトの名無しさん
08/11/19 15:30:25
>>329
3.6で出なくなるの? 試すのはわけないと思うが・・・

closeを別ルーチンにせず同一ルーチンにしてみるとか
試せることはいろいろあるよね。



331:329
08/11/19 16:05:05
説明が少なく申し訳ありません。
現在までの流れは、
@VB6.0 + DAO3.5 で新規開発 >>> スキャナやFAXソフトを使用でタッチパネルの反応が遅い現象発生
AEXEを分割して、ActiveX.EXEを導入 >>> タッチパネルの件は解決。mdbが頻繁に壊れる現象発生
BDAO3.6を導入 >>> mdb破損回数が軽減。エラーを吐いてEXEが落ちる現象発生
となっています。



332:デフォルトの名無しさん
08/11/19 19:01:55
On Error Resume Nextでごまかすのをやめたほうがいいと思うぞね

333:デフォルトの名無しさん
08/11/19 23:15:35
すんません。
VB2008で教えて下さい。

ソリューションエクスプローラーのタブに
「データソース」が表示されなくなっちゃったんだけど
どう設定すれば、また表示されますか?

334:デフォルトの名無しさん
08/11/19 23:16:58
>>333
スレタイ100回読み直せ

335:デフォルトの名無しさん
08/11/22 21:25:45
>>331
じゃあ次はADO導入だな

336:デフォルトの名無しさん
08/11/23 00:26:37
>331
ネットワークドライブにmdb置いて複数クライアントからアクセスしたりしてない?
あとリンクテーブルとか。

337:デフォルトの名無しさん
08/11/24 19:17:31
質問です。
VB6.0でParadoxと言うデータベースを開きたいのですが、
エラーが出て開きません。

Private Sub Form_Load()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\;Extended Properties=Paradox 5.x;Persist Security Info=False"
cn.Open
rs.Open "ABC", cn, adOpenDynamic, adLockOptimistic, adCmdTableDirect
rs.AddNew
rs.Close
cn.Close
End Sub

上記のコードを書いたんですが、rs.Openの行で
「外部テーブルのフォーマットが正しくありません。」
というエラーが出ます。

何が悪いのでしょうか?
よろしくお願いします。

338:デフォルトの名無しさん
08/11/24 20:22:21
Data Sourceがディレクトリに見えるけど、
そういう話ではない?

339:337
08/11/24 21:56:14
返信ありがとうございます。

cn.Open までは進んでいるし、ファイル名まで指定すると
「パスが間違っています」と言うエラーが出るので、
Data Sourceはこれであっていると思われます。



340:デフォルトの名無しさん
08/11/24 22:08:22
C:\で接続できる方が不思議じゃね?
「Paradox ConnectionString」で検索しる

341:デフォルトの名無しさん
08/11/24 23:32:52
> rs.Open "ABC", cn, adOpenDynamic, adLockOptimistic, adCmdTableDirect
これを
rs.Open "select * from ABC", cn
みたいにシンプルにしてみたら?

342:337
08/11/25 00:28:03
>>340
今回はC:\の直下にファイルをおいてあるので、これで
いいと思います。
Paradoxは1ファイル1テーブルなので、こうしないと
接続出来ません。

>>341
試してみましたが、やはり「外部テーブルのフォーマットが正しくありません。」
のエラーが出てしまいます。



343:デフォルトの名無しさん
08/11/25 08:50:02
断言できるのか?
ネットの事例じゃ軒並みファイルしていしてるぞ?

344:デフォルトの名無しさん
08/11/25 09:03:22
1ファイル1テーブルと ルート指定とは次元が違いすぎるわな
どのファイルかを選択するのかは超能力的なパワーが必要なのかも試練

345:329,331
08/11/25 16:56:58
回答有難う御座います。
返答が遅れた事をお詫び致します。
>>335
確かにADOは考えました。しかし、大きな修正はしないでとの営業の意向がありまして。
断念致しました。
>>336
ネットワークドライブは使用していません。
mdbのリンクは行っています。



346:デフォルトの名無しさん
08/11/25 17:08:56
>>340
そのワードでググったらTOPのページにこんな記載が。
>Please note that you should only specify the folder where the database resides.
>Not the database name itself.
URLリンク(www.connectionstrings.com)

>>337
Paradoxのバージョン5までしか読めないらしいけどそこは大丈夫?

347:デフォルトの名無しさん
08/11/25 17:24:07
>>346
へぇそうなんだ ためになるねぇ つかうことないだろうけど・・・


348:デフォルトの名無しさん
08/11/25 21:08:19
すみません、こちらで質問させて下さい
Excel VBAでwebページをIEオブジェクトで操作して、リンクをクリックさせると別窓でリンク先が表示されます
今後この別窓のIEオブジェクトを掴んでアクティブにして操作するにはどうすればいいのでしょうか?
独学文系のなけなしの知識にて、ウィンドウハンドルを取得すればいいと思い当たり
For Eachで各ウィンドウのそれの取得だけはできました(たぶん)が、使い方というかセオリーが全く分かりません…

Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hWnd As Long)
Private Declare Function GetForegroundWindow Lib "user32.dll" () As Long
(中略)
hWnd = GetForegroundWindow
Set objShell = CreateObject("Shell.Application")
 For Each objIE In objShell.Windows
  Debug.Print objIE.hWnd
 Next
ウィンドウハンドルの値は取得できても、アクティブにしたい(操作したい)ウィンドウのそれだと判別する
方法が解らないので、どなたかご教示&ご解説お願いします

349:デフォルトの名無しさん
08/11/26 21:43:48
>>348
ウィンドウの区別は基本的にはタイトル(タイトルバー)の文字列で行う。
同じアプリを複数開いて同じファイルを開くとタイトルバーの文字列がまったく同じになってしまうが、
この場合はウィンドウを区別するのは、不可能ではないが非常に難しい。
俺の知識で答えられるのはここまで。

350:デフォルトの名無しさん
08/11/26 21:55:08
つか、LocationUrl でいいだろ? その InternetExplorer の hWnd で、
SetForegroundWindow() すれ。

って、それだけだとアクティブにはならんけど。

351:348
08/11/26 22:12:32
>>349
ご回答ありがとうございます!となると、思いつきでは

1).新しいIE窓を開く前に全部のIE窓のタイトル又はハンドルを取得
2)上記を配列にでも入れる
3)新しいIE窓が開かれる
4)2で取得した配列の添え字と比較、大きかったらダウト
 (同じ内容であってもこちらを弄るようにする)

4の配列の添え字の比較って出来るのかな?ド素人なもので…
って、窓数の増加だけならインデックスの上限値を見ればいいのか

…こんな感じで行けるのかな?
汎用化するにはIEのイベントを監視しなくちゃならなそうですが(;´Д`)
しかし用途を限定すれば何とかできる…と思いたいです

352:デフォルトの名無しさん
08/11/26 22:23:49

最初に聞いたExcelVBAスレの質問取り下げてないのでマルチだし
しかもExcel総合スレにまでリンク形式でマルチしてる

> ExcelやExcel VBAからは外れる質問とは承知しているのですが、
> 文系独学なうえ近くに教えを請える人も居ないので、
> 何方か親切な方、ご回答お願いします…(;´Д`)
>
> スレリンク(tech板:348番)

もう、この子は放置の方向で

353:デフォルトの名無しさん
08/11/26 22:29:05
>>352
取り下げも何も、誘導も無しにスレ違いの一言で一蹴されましたが…

ご回答下さいました方々には改めてお礼申し上げます

354:デフォルトの名無しさん
08/11/26 22:29:58
まだマルチが悪いとか思ってるウブな奴っているんだなw
俺的に言えばそんな奴こそいらん。

マルチが悪いって、それって他でもないお前が「人に感謝されたい威張りたがり屋」
なだけじゃんw
むしろそのお前の幼児性こそ問題だよ。

普通は掲示板のやり取りなんて答える方も自分のためにやってるわけで、
その上回答者に感謝されたいなんて図々しいこと思わねえよ。

355:デフォルトの名無しさん
08/11/27 01:17:14
ユーザー定義型の質問なのですが、

Public Type AAA
b as Long
c as Long
End Type

Public A(0 To 99) As AAA

といったようなのをモジュールに書き、フォーム1でA(0).b = 100と書いたとします
しかし、それをフォーム2で参照したところA(0).b = 0となっていました
配列化しなければ問題は起こらなかったのですが、原因は何なのでしょうか?

356:デフォルトの名無しさん
08/11/27 02:22:28
ふつうに動いてるが?

357:デフォルトの名無しさん
08/11/27 09:07:18
>>354
ボク、何か嫌なことでもあったの?


358:デフォルトの名無しさん
08/11/27 11:14:38
使用するosをXPからVistaに移行したところ、矢印の「dumst」部分で
インデックスが有効範囲にない、というエラーが出てしまいます。
アドバイスお願いします。

Private Sub Form_Load()
Const DataFile1 As String = "emadr.txt"
noTA = 0: noID = 0: noFA = 0: noSMTP = 0
fileNum = FreeFile
Open DataFile1 For Input As #fileNum
Do Until EOF(fileNum)
Line Input #fileNum, dummy
→ dumst = Split(dummy, ",")
If (dumst(0) = "TA") Then
noTA = noTA + 1
emTA(noTA) = dumst(1)
End If
Loop
Close #fileNum



359:デフォルトの名無しさん
08/11/27 18:13:33
>>356
普通にいけました…
消したと思っていた変数定義が消えておらず、変数がリセットされていただけでした
お騒がせしました

360:デフォルトの名無しさん
08/11/28 22:55:15
VB6でFTPでの転送結果(スループット等)を取得する関数とかあるのでしょうか?

361:デフォルトの名無しさん
08/11/28 23:27:26
あると思うほうが不思議だが?

362:デフォルトの名無しさん
08/11/28 23:32:46
絶対に無いと確信するほうが不思議

363:360
08/11/28 23:50:40
>>361-362

回答ありがとうございます。

やはり無いんですね・・・

ファイル転送量/時間で出そうと思います。

ありがとうございました。

364:デフォルトの名無しさん
08/11/29 12:43:32
>362
んなこたぁない。FTP(クライアント)はVBの機能じゃないんだぜ?エスパーすればINet系関数だろうが、
あれは腐ってるからな。

365:デフォルトの名無しさん
08/11/29 14:59:29
VB用のコンポーネントにあったって不思議じゃない

366:デフォルトの名無しさん
08/11/29 17:01:16
コンポーネントなら関数とかいわんだろ。

367:デフォルトの名無しさん
08/11/29 18:20:45
お願いします。

構造体の入れ子を作りたいのですが、下記ではエラーになってしまいます。
Private Type ABC
i As Integer
j() As ABC
End Type

動的なツリー構造を作りたいのですが、可能でしょうか。


368:デフォルトの名無しさん
08/11/29 19:39:41
皆さんよろしくお願いします。

URLリンク(upp.dip.jp)
実は↑のような流れのスクリプトを組みたいと思っているのですが
if を使っての簡単なサンプルを書いていただけませんでしょうか?
本当に簡単なもので結構ですので・・・。

369:デフォルトの名無しさん
08/11/29 19:49:37
URLリンク(blogs.yahoo.co.jp)


370:デフォルトの名無しさん
08/11/29 19:49:50
>>368
何だこのフローチャート
もう少しルールに従って書けよw

371:デフォルトの名無しさん
08/11/29 19:53:05
フローチャートと呼んでいいのかww
まあ>368がんばれ

372:368
08/11/29 19:59:04
た、たしかに
酷いことになってますね・・・
すいません・・・

373:デフォルトの名無しさん
08/11/29 21:31:00
むしろ状態遷移図だな。

374:デフォルトの名無しさん
08/11/29 21:47:21
無限ループ

375:デフォルトの名無しさん
08/11/29 22:23:29
start:

if (isExist(a)) {
 goto start;
}

second:

if (isExist(b))
 goto start;
else {
 goto second;
}


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4226日前に更新/174 KB
担当:undef