くだすれVB6.0以前(超初心者向け)at TECH
くだすれVB6.0以前(超初心者向け) - 暇つぶし2ch95:デフォルトの名無しさん
08/09/26 09:11:06
今さらっとこのスレ見たけど
やっぱくだらないスレだわ
役に立ってるかもしれんが
相手のことをおまえだとか
自分に知識があるからと偉そうな態度だわで
人格疑うよ
ここは超初心者向けのスレじゃないのか…
がっかりだね

96:デフォルトの名無しさん
08/09/26 09:13:05
>>95
>>85さん、おはようございます


97:デフォルトの名無しさん
08/09/26 10:38:36
だってここ、もともと本スレじゃないし。全体的にネタに走ってるのはしょうがないな。

98:デフォルトの名無しさん
08/09/26 13:05:39
おはようございます
85です
えっと、とりあえず95は俺じゃないよ?
さっき起きただけだし…

Enabled=False
のすぐ下でDoEventsしても他のプログラムが走るってこと?
なんかよく分からないね
難しい


99:デフォルトの名無しさん
08/09/26 13:55:14
新規のフォームにボタン2つとラベル1つ貼り付ける。
これで1の処理中に2のボタンが押せる。
情報を出したがらないから直接の原因と結果とは結びつかないが、
これに近い現象だとみんな思ってるはずだよ。
Private Sub Command1_Click()
    Dim i As Long
    Command1.Enabled = False
    For i = 0 To 50000
        Label1.Caption = i
        DoEvents
    Next
    Command1.Enabled = True
End Sub

Private Sub Command2_Click()
    Command1.Enabled = True
End Sub


100:デフォルトの名無しさん
08/09/26 15:33:52
えっとですね
Command2のボタンを押すと情報をグリッドに表示させるという処理があって
Command1のボタンを押すとグリッドから選んだデータの情報を詳しく表示させるという
感じのプログラムなんですけど
Command2のボタンを押して情報検索したり表示したりという処理中は
Command1のボタンを押せないようにしようとしています
なので
Command2のボタンを押した時にCommand1のボタンのEnabled=Falseにして
処理が終わった時に
Command1のボタンのEnabled=Trueにする処理を書いています
実際にDoEventsを書いているのはFalseにしている場所とかなり離れているのですが
そこでTrueに変わって押下可能状態になっていたので
DoEventsを少しずつFalseの場所に近づけて実行を繰り返したんですが
結局はFalseの真下に書いた状態でもTrueになっている事が分かったので
訳が分からなくなったという状態です
って説明結構苦手なので分かってもらえるかは不安ですが
こんな感じです

101:デフォルトの名無しさん
08/09/26 15:52:03
バグだからマイクロソフトに連絡しろ。それで気が済むんだろ!

102:デフォルトの名無しさん
08/09/26 16:31:25
>>100
そのフォームのすべてのイベントの最初でログを出すように
してみるといいよ。
たぶん予想していないイベントが発生してると思うよ。
DoEventsは難しい。

103:デフォルトの名無しさん
08/09/26 16:33:45
>>95
罵倒されるのが嫌なら書込まなきゃいい  そんだけ・・・
もうくんなよ  ってそのうち書かれるよん。
VBの情報なんてネット上にゴロゴロしてるわけだしヒントもらえればラッキーくらいじゃないとねぇ

回答者の立場で考えてみてくれ
情報を後出しされるということは どんだけいろんなパターンを想定して回答しなきゃならないかを

ぶしつけな質問にはそういう回答にならざる終えない宿命をかかえているという事だ



104:デフォルトの名無しさん
08/09/26 17:39:47
>>100
いずれにしても、イベント内やDoeventsを使ったロジックを1ラインずつデバックしながら製造するのはやめた方がいいよ。
>102の言うようにトレースしたり、ウオッチ式でプロパティが変わった場所を突き止めるなりしてみたらいいと思う。
あと、単体テストはコンパイル後にEXEで実施しなきゃだめよ!

105:デフォルトの名無しさん
08/09/28 10:40:35
IEを操作する場合なのですが

スタート→処理A→処理B→処理C→処理D→終了

のような場合にA~Dのところで稀にサイトのエラーページに飛ばされることがあります
その時に自動でスタートに戻って再び最初から処理させたいのですが
htmlのタイトル名、もしくはエラーページのテキストで判別することは可能でしょうか?
仮にタイトルは「エラー」、そのページに「エラーです」というテキストがあるとして
これらがあった場合にスタートに戻る処理をさせたいのです
初歩的な質問ですみません

106:デフォルトの名無しさん
08/09/28 13:36:43
>>105
そのロジックの実行は電子計算機損壊等業務妨害に抵触します。

107:デフォルトの名無しさん
08/09/30 11:23:51
GOTO

108:デフォルトの名無しさん
08/09/30 15:43:00
来年6月に出るWindows7ではVB6.0のプログラムは動かないそうですが
どの開発環境に移行しますか?

109:デフォルトの名無しさん
08/09/30 16:06:14
>>108
動かないというソースは?

110:デフォルトの名無しさん
08/09/30 17:11:39
VB6.0のメインストリームサポート(~2005 /03/31)、延長サポート(~2008/04/08)の
両方が終了した後に出るOSだから。

111:デフォルトの名無しさん
08/09/30 17:15:50
で、動かない、という、ソースは?

112:デフォルトの名無しさん
08/09/30 17:18:36
7はvistaのsp2だよ

113:デフォルトの名無しさん
08/09/30 17:46:30
>>108
>来年6月に出る
これのソースは?



114:デフォルトの名無しさん
08/09/30 18:01:58
スピリチュアル

115:デフォルトの名無しさん
08/09/30 18:17:24
>>108
つまり、末端の端末の標準OSが2000かXPになるわけだな。
それほど でかいプログラム扱う場所なんざVB使ってないだろうし。
新しいOS出る度にOS買い直すとか、最先端技術を駆使するなら使うだろうけど、
そうでないならば、ある種の金の無駄だからな。
 (個人的には、今の所はwindows2000が入ってたマシンを
 フルチューンナップした方が使い良いと思う。スペック的にもコスト的にも。)

VBは思い付きで(殆ど設計を書かずに)プログラムを書き始めても
それなりに完成してしまうのが良い所だな。
.NETからその手軽さが少し薄れて個人的には残念な気分だが…。orz

116:デフォルトの名無しさん
08/09/30 19:16:16
仮想PCなんてまさにVBの為にあるようなもの
VB6は将来安泰ですよ

117:デフォルトの名無しさん
08/09/30 23:18:54
>>108
VB6でシェアウェア作って生計たててる俺涙目wwww

VC++勉強しなきゃ・・・

118:デフォルトの名無しさん
08/10/01 00:02:54
.neetじゃだめなん?

119:デフォルトの名無しさん
08/10/01 00:08:36
大体、いまどきVB6しかできませんって奴もいないだろ

120:デフォルトの名無しさん
08/10/01 14:58:33
>>119
ソースは?

121:デフォルトの名無しさん
08/10/01 15:10:53
ソースは今まで仕事してきた相手
だがCOBOLしかできない奴はいたな

122:デフォルトの名無しさん
08/10/01 15:26:55
つまらんソースを隠蔽したいんだろ

123:デフォルトの名無しさん
08/10/01 16:29:58
.netは逆コンパイルできるからダメか

124:デフォルトの名無しさん
08/10/01 16:31:38
>>121
それってたまたま言語がCOBOLだっただけで
VB6もそれしか出来ない人くらい居るだろ…

125:デフォルトの名無しさん
08/10/01 19:40:47
><ノ

126:デフォルトの名無しさん
08/10/02 01:31:43
>>108
絶対に動く。
動かなかったら100万円やるよ。

127:デフォルトの名無しさん
08/10/02 01:33:34
ソースは?

128:デフォルトの名無しさん
08/10/02 02:20:21
ニート御用達言語VB6

129:デフォルトの名無しさん
08/10/02 18:54:20
まあ、VBが動かないのなら、WIN32アプリは、ほぼ全滅と考えたほうがいいな。

130:デフォルトの名無しさん
08/10/02 23:31:07
↑なにこの時代錯誤

131:デフォルトの名無しさん
08/10/02 23:48:24
いまでも普通より延長してサポートしてる状態だから、
動かないというよりサポート対象から外れるということだろうね。
あとランタイムのOSへのバンドルもなくなるだろう。
それでもインストーラでランタイムを入れれば何とか動きはするだろうけど。

132:デフォルトの名無しさん
08/10/03 00:13:16
OfficeVBAが動くんだからVBも動くだろ。
みたいな。

133:デフォルトの名無しさん
08/10/03 00:36:20
動くと思うけどね。
やっぱ互換がある程度保障されてないといくらMSでも買い控えられるのはVistaで分かったろう。
VB6なんて普及度高いんだし、フリーのツールも多いし。

134:デフォルトの名無しさん
08/10/03 00:46:48
MSとしてはサポートしたくないし忌まわしい記憶と共に消したいだろうけどな

135:デフォルトの名無しさん
08/10/03 18:42:28
言語仕様はともかく、画面だけ必要なRAD用途だったらいいものだったからな>VB6
C#今やってるけどやっぱりC++にくらべてライブラリが少なすぎる…><


136:デフォルトの名無しさん
08/10/03 18:45:42
>>134
いや、誇らしい成果だろ、MS的には。

137:デフォルトの名無しさん
08/10/03 21:52:04
VBAのスレからこっちでしろといわれました

クラスモジュールと
標準モジュールの違いがいまいちわからん

クラスはオブジェクトとして使ったりコンパイルしてDLLとして参照すると
名前でプロシージャーを呼び出せるってことなのか?

標準だと他のモジュールのって呼び出せない?

138:デフォルトの名無しさん
08/10/03 22:11:27
クラスっぽいものを書くための場所がクラスモジュール
ふつうのを書くための場所が標準モジュール

139:デフォルトの名無しさん
08/10/04 00:15:00
Newしなくても使えるのが標準モジュール

140:デフォルトの名無しさん
08/10/04 00:17:14
>>139
本気でそう理解してる人が多くて困るんだよなw

141:デフォルトの名無しさん
08/10/04 11:39:14
VB6はすばらしいと思う。。趣味でやってる人ならポインタや構造体で挫折してもVB6ならその悩みは一蹴。
まさか参照とかでつまづく人はいないと思うけど。

やっぱ用途だよ。ゲームづくりだとVB6は物足りないけど、ツール製作ならNO.1だよ。


142:デフォルトの名無しさん
08/10/04 12:03:27
意味不明な機能は使うなと言われて使用禁止されるのがクラスモジュール

143:デフォルトの名無しさん
08/10/04 17:25:27
バカだな。
標準モジュールはクラスモジュールの意味が理解できないアホ専用モジュール。

99%の実装はフォームとクラスモジュールだけで作れるし、作るべきだ。
同じ機能を持つインスタンスを複数作れるということのメリットを理解しろ。
それにクラスモジュールだとC++などのオブジェクト指向言語への移植性が格段に良くなるから、
VB6がWindows7で動かないとしても、移植作業であまり困らない。

144:デフォルトの名無しさん
08/10/04 17:54:05
>>143
君VBでまとまった量のコード書いたことないでしょ?w

145:デフォルトの名無しさん
08/10/04 18:45:23
おれがみてきたほっとんどのプログラムは、クラスモジュール0、標準モジュール200
とかそんなんだ。

146:デフォルトの名無しさん
08/10/04 21:55:01
>>144
今メンテしてるのだと、クラスモジュール80、フォームモジュール20のアプリが俺一人で作ったものでは一番大きい。
今それをVC++に移植してるが、クラス名やソースファイル構成をほとんどそのままで一対一に移植できてる。
VBのクラスはhas-a構造しか持てないが、これだけで十分にオブジェクト指向ライクなプログラミングはできるからな。
クラスモジュールを使ってなかったら、オブジェクト指向言語への移植はまず無理だったろう。

ま、標準モジュールだけでスパゲッティプログラムを作って、DoEvents地獄に陥るアホな開発者は
この先生きのこれないのは確実。

147:デフォルトの名無しさん
08/10/04 22:05:02
>>146
やっぱり分かってないね。

クラスモジュールを積極的に使え、までは正論なんだけど
「標準モジュールはクラスモジュールの意味が理解できないアホ専用」(=標準モジュールを使うな)
は全く正しくない。

VBって言語は嫌でも標準モジュールを使わないとまともなコードは書けないようになってるんだよ。
理由はいくつかあるが、

- VBのクラスは静的メソッドが書けない。
- Win32APIの宣言は標準モジュールにしか書けない。

この二つが大きいかもしれない。

148:デフォルトの名無しさん
08/10/04 22:07:55
というかJavaとかやればVBでも自然とクラスモジュールは
使いたくなる。というか使わないとやってられなくなる。


149:デフォルトの名無しさん
08/10/04 22:47:05
>>147
>Win32APIの宣言は標準モジュールにしか書けない。

すぐばれる嘘をつくな。

150:デフォルトの名無しさん
08/10/04 22:57:28
標準モジュールにしかかけないのは、コールバック関数だっけか?

151:デフォルトの名無しさん
08/10/04 22:58:58
言葉遣いも知らない奴みたいだね。

別に嘘を書いたつもりはないが、VB6を触らなくなって久しいので
間違っているかもしれん。

いずれにせよ、public staticなメソッドが書けるのは標準モジュールだけだ。

152:デフォルトの名無しさん
08/10/05 10:37:52
VB6でクラスモジュールを「使うこと」にこだわってるのってあんま意味がないように思えるが。
例えば、桁数合わせ(左スペース埋めみたいな)関数とか桁数切り取り(左7バイト切り取り)関数のようないわゆるよくある共通関数は標準モジュールに並べるほうが良いと思う。
単なる関数群をクラスモジュールに記述されていると、何か意図的なものがあるのか考えてしまう。


153:デフォルトの名無しさん
08/10/05 10:48:58
共通関数はUtilクラスにまとめる

154:デフォルトの名無しさん
08/10/05 11:02:14
>>153
なんであえてクラスなの?

155:デフォルトの名無しさん
08/10/05 11:05:03
変数関数ともにC#やC++のstatic、VB.NETのsharedに当たる機能がない。
VBのStaticキーワードは別物。たまにそれでバグを作ってるのを見かける。
少なくともUtilクラスをNewして使うようなことはしたくないな。
そんなときはモジュールでしょ。

156:デフォルトの名無しさん
08/10/05 11:08:47
本来staticは無いほうがいいんだよ

157:デフォルトの名無しさん
08/10/05 11:19:28
VB6のクラスをCOMコンパチにしてしまったのが広まらなかった原因のように思えるな。


158:デフォルトの名無しさん
08/10/05 12:00:49
なんつーか、>>146みたいな考え方するやつって何で多いんだろう。
そういう奴って言語仕様とか特性って考えないのかな。
今流行のコーディング思想とかには言語の垣根をすぐ越えて飛びつくけど、
自分が開発している言語でいかにいいプログラムを作るかを考えようとは思わないよな。
保守性、拡張性、メモリの取り方や開放の仕方・タイミングなどなど。
今関わっているプロジェクトに今使っている言語でいかにいいものが提供出来るか、という前提のもとに開発しているとは思えん。
そんなやつはどこいってもただの半端者だろう。
オブジェクト指向とか言語の移植とかを自慢げに語っている時点でピントがずれてる。
そんな大層なことでもないしw

159:デフォルトの名無しさん
08/10/05 12:07:06
まあ、向上心もなくVB6しかやったことなければ
クラスモジュールなんか使わないよね。
使わなくてもものは作れるもん。でもそれでいいのかな。

160:デフォルトの名無しさん
08/10/05 12:15:05
>>159
クラスも使うし、JAVAとVB.NETもメインでやってるけど、
VB6で開発する時にオブジェクト指向を意識することはない。

161:デフォルトの名無しさん
08/10/05 12:23:30
今の言語と比べるのは酷というものだ

162:デフォルトの名無しさん
08/10/05 12:23:33
>>160
オブジェクト指向って意識してやるもんでもないでしょ?
自然とオブジェクト指向脳になるでしょ?


163:デフォルトの名無しさん
08/10/05 12:31:27
>>162
オブジェクト指向脳って言われても困るが、
無意識にクラスを多用してるかと言われるとそうなのかもしれない。
でも、クラスモジュールにする必要がなけりゃ標準モジュールで実装するよ。

164:デフォルトの名無しさん
08/10/05 12:31:32
Utilクラス作って、標準モジュールでインスタンス化して使いまわすんでしょ。

165:デフォルトの名無しさん
08/10/05 12:49:29
Utilクラスなんて作りません。

166:デフォルトの名無しさん
08/10/05 13:17:37
>>158みたいな人も困るw

>>146はたぶんVBでそれなりの規模のコードを書いたことがないだけで、
言ってることがそんなに間違ってるわけじゃないよ。

167:デフォルトの名無しさん
08/10/05 13:33:00
大規模なコードを書けば書くほど、標準モジュールを多用するのが適切だというのか?
アホじゃないの?逆だろ。
規模が大きくなるほどカプセル化して依存性やソース変更の影響範囲を狭めようとするのが常識。
どこからでも直接呼ばれ得る膨大な関数群で出来てる巨大プロジェクトなんて
絶対メンテしたくねーw

てゆうか、すでに死んだ言語の標準モジュールの是非について熱く語るのもアホらしい。。

168:デフォルトの名無しさん
08/10/05 13:35:49
>>167
だからそこはお前さんの言ってることは正しいから
意味なく煽るような書き方するなって。

自分が幼稚なガキじゃないと思いたいならね。

169:デフォルトの名無しさん
08/10/05 14:12:29
クラスを使う使わないで盛り上がれるのはVB6だけ!

170:デフォルトの名無しさん
08/10/05 14:17:39
訂正)VB6で盛り上がれるのはこのスレだけ! 

171:デフォルトの名無しさん
08/10/05 14:22:41
>>167
意味的なまとまりごとにmoduleを分ければいいだけの話

172:デフォルトの名無しさん
08/10/05 14:27:17
そういう問題じゃない。

173:デフォルトの名無しさん
08/10/05 16:55:56
どういう問題だよ

174:デフォルトの名無しさん
08/10/05 16:59:46
クラス分けは一種の差別だから撤廃しましょうって問題。

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ソフトを使用でタッチパネルの反応が遅い現象発生
②EXEを分割して、ActiveX.EXEを導入 >>> タッチパネルの件は解決。mdbが頻繁に壊れる現象発生
③DAO3.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;
}

376:デフォルトの名無しさん
08/11/29 23:22:22
VB4で作られたソフトウェアが動きません。
VB40032.dll、MCI32.ocx、grid32.ocx、comdlg32.ocxが必要なソフトなんですがXPでは入れても動かないんです。
「ファイルの読み込み中にエラーが発生しました」と出てしまいます・・・
MEでは正常に動きました。
上記4つのファイルはME、XP共に同じバージョンでした。

解決方法知っていたら教えて下さい。お願いします。

377:デフォルトの名無しさん
08/11/29 23:27:06
>>376
スレ違い

378:デフォルトの名無しさん
08/12/04 10:59:01
>>367
循環参照できないんですよねー。ケチケチしやがって。
可変長配列なら無限ループにならないから許可してほしいところです。
等価ではないがクラスモジュールでこう

(CLASS ABC)
Public I As Integer
Public J As Collection

あくまで等価ではないので使えなさそうですが。


379:デフォルトの名無しさん
08/12/07 08:21:48
>>367
すまん、どんな場合それを使うのか教えてくれ・・・

380:デフォルトの名無しさん
08/12/07 13:33:33
いわゆる「自己参照構造体」ってやつを作りたいんだろうけど、
だったらVBの場合ユーザー定義型じゃないくてクラスを使わないと駄目だね。

仮にユーザー定義型に循環参照(余談ながら、この用語の使い方は本来不適切だと
思うんだが、MSDNがそうなってるんだね)が可能だとしても、ユーザー定義型は
ドトネトでいう値型になるから無駄が多すぎる。

381:デフォルトの名無しさん
08/12/07 13:57:04
Private Type ABC
  i As Integer
  j() As ABC*
End Type

Dim udtABC As ABC
udtABC.j = &udtABC

夢のようだが、() は誰が実装すんのかね。
j() が自己参照にしては自己が配列であることは保障されてないし。
まぁ蛇足でしかないけど。

382:デフォルトの名無しさん
08/12/08 03:32:56
>>381
そこまでなくても…
循環参照はメモリ確保がどこまでも終わらないから禁止なんだろうけど、
JはREDIMするまで要素数ゼロだから、それは許されるようにしてくれていても
いいのにと思うんだが。
理解が違っていたらすまん。

早く寝なきゃ…

383:デフォルトの名無しさん
08/12/08 03:36:40
そういえば>>377
スレ違いだっけ?


384:デフォルトの名無しさん
08/12/11 23:35:25
30Hex + 30Hex + 30Hex + 30Hex + 30Hex + 33Hex + 30Hex + 30Hex +35Hex + 33Hex + 30Hex
+30Hex +31Hex + 03Hex = 37Hex
(+は排他的論理和、Hexは16進数)

とオムロンのマニュアルに書いてあるんですが
これをVBで計算すると37なんて数字が出てきません。

val(hex(30)) xor val(hex(30)) xor ・・・
とかじゃぁ 根本的に何か間違ってるのかな。。

385:デフォルトの名無しさん
08/12/11 23:41:40
間違っています

386:デフォルトの名無しさん
08/12/12 00:08:30
30h

387:デフォルトの名無しさん
08/12/12 00:13:39
&h30 xor &h30 xor …

388:デフォルトの名無しさん
08/12/12 00:14:36
00h+33h+00h+02h+00h+02h

389:デフォルトの名無しさん
08/12/12 00:17:42
00h+33h+00h+06h+00h+02h

390:デフォルトの名無しさん
08/12/12 00:43:38
Private Sub hoge()
  Const hexList As String _
    = "30, 30, 30, 30, 30, 33, 30, 30, 35, 33, 30, 30, 31, 03"

  Dim hexText As Variant
  Dim result As Integer
  result = 0
  For Each hexText In Split(hexList, ",")
    result = result Xor CInt("&h" & Trim(hexText))
  Next
  MsgBox (hex$(result))
End Sub

391:デフォルトの名無しさん
08/12/12 01:02:04
リストボックスには、複数の学生の名前、教科、点数と
その合計、平均などが表示されていて、
ボタンを押すと、ひとりひとりの学生の点数の合計と点数の表示をする
プログラムを作成したいのですが、教えて下さい。

392:デフォルトの名無しさん
08/12/12 01:13:35
どんな表示されてんだよ

393:デフォルトの名無しさん
08/12/12 01:28:50
ああ、悪い。

氏名  国語  英語 合計 平均

A   50   60  110  55
B   60   70  130  65
C   70   70  140  70

合計  180  210  
平均  60   70


こんな感じに表示されています。
ボタンの名前を「縦計 横計」と表示させ、
押すと、ひとりひとりの合計と平均を表示し、
最後に国語と英語の合計、ならびに平均を表示させたいのです。

394:デフォルトの名無しさん
08/12/12 01:31:18
>ああ、悪い。
なんだその態度は
氏ねばいいのに

395:デフォルトの名無しさん
08/12/12 01:33:29
select case


end select

396:デフォルトの名無しさん
08/12/12 01:58:37
悪い印象を与えてしまったのなら謝るよ。
日本語って難しいな…
例えば「ああ、スマソ」って言ったらまた印象は違うだろうしね。



397:デフォルトの名無しさん
08/12/12 02:04:34
ドシロウトはエクセルでも使っとけ

398:デフォルトの名無しさん
08/12/12 02:19:54
在日は国へ帰れ

399:デフォルトの名無しさん
08/12/12 06:28:24
>>396
他人に物を聞く態度じゃない
ここにいるのは親しい友人じゃない

400:デフォルトの名無しさん
08/12/12 06:34:12
で、何がわからんの? 足し算して割り算するだけだろ?

401:デフォルトの名無しさん
08/12/12 09:14:50
>>393
excelのVBAで充分
そこで人間性を磨いて来い 

402:デフォルトの名無しさん
08/12/12 22:03:09
>>391ですが、今日までの課題だったので
情報科の人に教えてもらい、無事解決しました。
基礎なのでさすがに学校で聞くのは気が引けました。



403:デフォルトの名無しさん
08/12/12 22:04:35
何も解決してないだろw

404:デフォルトの名無しさん
08/12/12 22:17:35
continueがない!!gotoで代用した。

405:デフォルトの名無しさん
08/12/13 01:30:41
>>404
お前はVBを知ってるのかと小一時間(ry

406:デフォルトの名無しさん
08/12/13 01:57:10
>>405
whileとかforのループのcontinueね。あんの?

407:デフォルトの名無しさん
08/12/13 02:44:13
Continue Forとかのこと?

408:デフォルトの名無しさん
08/12/13 03:31:59
日本        日本語でおk
英          please in Japnese
独          bitte auf japanisch
仏          veuillez dans le Japonais
イタリア     . prego nel giapponese
ポルトガル  . por favor no japones
スペイン    . por favor en japones
オランダ   ..Japanner gelieve in
スウェーデン behaga i japan
ギリシア    .παρακαλ? στα ιαπωνικ
ロシア      пожалуйста в японце
トルコ     . Japoncata tamam.
中国        請在日文
沖縄        やまとぅぐちっしいい
アイヌ      . sisam itak ani ukoitak yan.
大阪民国    日本語でおkや

409:デフォルトの名無しさん
08/12/13 09:34:26
>>408
日本語でおk


410:デフォルトの名無しさん
08/12/13 13:23:33
フイタ

411:デフォルトの名無しさん
08/12/13 13:25:30
>>405
いやおまえの方がVB知らなさ過ぎる。
.NET以後にVBはじめた情報弱者のにわかは消えろよ。


412:デフォルトの名無しさん
08/12/13 15:11:55
.NET以降にVBはじめたら情報弱者!うは

413:デフォルトの名無しさん
08/12/13 15:20:02
いやまあ、スレがスレだからね。
TPOを考えれば>>411のように罵倒されてもまあ仕方がない面はある。

414:デフォルトの名無しさん
08/12/13 15:24:00
このスレ時々スレタイの意味が理解できてないやつが混じるんだよな。


415:デフォルトの名無しさん
08/12/13 15:27:20
>>412
これは正解。普通C#選ぶ。あえてVBを選ぶ理由がない。

416:デフォルトの名無しさん
08/12/13 16:14:52
405 はVB6でgoto使うのはスパゲティの始まりだから
continueのためだけにgotoに逃げるんじゃねぇ!って事を
言いたかったんジャマイカ?

わからんけど。

417:デフォルトの名無しさん
08/12/13 17:21:49
でもifのネストが深くなるよりわかりやすいんじゃね。

418:デフォルトの名無しさん
08/12/17 09:43:20
日頃はVC使い。今更VB6始めたが、(VCもそうだが)仕事とかではない

VB6でdllexportするっていったら、基本的にはOCX化するのみ?
あと、簡潔に、通常の.objファイルをスタティックリンクする方法とかある?


ついでに参加
>>415
最近、VB6で書かれたマルウェアが増えてきて、ちょっと勉強しとこうと思ったのが、
いまさらVB6やろうと思ったきっかけ どう考えてもVCで書いた方が楽なような処理を
ごりごりVB6で書いてあるようで、もしかすると、難読化のつもりもあるのかもしれん
あと、IDE軽かったから、遊ぶ分にはいいかなとw

419:デフォルトの名無しさん
08/12/17 10:49:40
恥ずかしいにもほどがある

420:デフォルトの名無しさん
08/12/17 11:13:14
OCX化というよりActiveX(COM)化、EXE, DLL, OCX 形式のCOM。
ものすごい裏技でVBの関数を直接呼び出す方法もあるちゃあるが現実的ではない。

>最近、VB6で書かれたマルウェアが増えてきて
VBSなどで書かれてるその手のスクリプトをそのまま流用できるからじゃないのかね。
COMの扱いは簡単だしランタイムも大概入っている。


421:デフォルトの名無しさん
08/12/17 13:53:25
流れぶった切って申し訳ない。
vbは余り馴染みがなく今から記述することが出来るかどうかお教え頂きたい。

VBで作成したアプリに中国語を表示したい。
OSの設定ロケールは日本語。
vb6jp.dllはインストール済み。

OSのロケールが中国の場合は上手く中国語が表示出来ました。
日本ロケールだと文字化けしてしまいます。
SetThreadLocaleを使いロケールを変更してみましたが効果ありませんでした。
SetLocaleInfoは使い方が解りませんでした…。

ロケール変更にて文字化けを直すことは可能なのでしょうか?
お教え願います。

422:デフォルトの名無しさん
08/12/17 16:01:54
あきらめるか、.netにする。

423:デフォルトの名無しさん
08/12/17 20:05:59
>>421
中国語版のVB6.0で開発すればできるよ。

424:デフォルトの名無しさん
08/12/17 20:26:15
似たような質問
URLリンク(www.biz.kotaete-net.net)

425:デフォルトの名無しさん
08/12/18 01:44:45
>>422-424
回答ありがとうございます。
自分で調査したうえでそのような予感はしてましたが・・・。

特に424さんありがとうございました。
何故ダメなのか?という理由までわかったのですっきり諦められます。
別の方法で処理を回避、またはオペレーション誘導などで
問題を回避したいと思います。

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

426:デフォルトの名無しさん
08/12/18 12:13:42
VB6にての質問。
ファイル名が文字化けしているファイルを、コモンダイアログで指定して読み込みたいんだけど、
読み込んだ段階でパス名が変わってしまって、読み込みが出来ない。
解決策はありますか?

427:デフォルトの名無しさん
08/12/18 13:40:42
文字は化けてなどいない

428:デフォルトの名無しさん
08/12/18 20:41:41
リネームしたら

429:デフォルトの名無しさん
08/12/19 12:19:15
>>427
一般的に文字化けと言うと思う。

>>428
リネームしたら確かに読み込めるけど、そのままいける方法が無いかなとね。

430:デフォルトの名無しさん
08/12/19 13:23:25
>>429
何がどう化けたと思ってるんだ?

431:デフォルトの名無しさん
08/12/19 14:19:53
UNICODEのファイル名を読んで化けたとか言うオチじゃあるまいな

432:デフォルトの名無しさん
08/12/19 15:07:57
VB6でMDBからデータを引っ張りクリスタルレポートに出力しています。
最初はクリスタルレポート8.5を使っていたのですが使いにくいので前使っていた4.7を入れなおしました。
プリンターとプレビューの出力は上手く行くのですがテキストファイルやCSVの外部ファイルにエクスポートの際に
実行時エラー20540
エクスポート DLL がないかまたは古いです。
というエラーメッセージが出ます。
散々ぐぐりましたが解決策が見つかりません。
何かコンポーネートか参照をし忘れてるのでしょうか?

433:デフォルトの名無しさん
08/12/19 16:12:02
OSのクリーンインストールからやり直して、やっぱりエラーが出てから文句言え

434:デフォルトの名無しさん
08/12/19 18:40:38
リネームできるんだからよめるだろ

435:デフォルトの名無しさん
08/12/20 09:45:58
根本的に変な質問かもしれませんが教えて下さい。
VBで作られたEXEはデバッグというかコードを
読むことができるんでしょうか?
Visual Studio 6.0は入ってます。

正直なところ、EXEはアセンブラで読むしかない
みたいなイメージがあるんですが・・・

436:デフォルトの名無しさん
08/12/20 10:16:52
読めない

437:デフォルトの名無しさん
08/12/20 11:24:20
VB用の逆アセツールもあるけどね

438:デフォルトの名無しさん
08/12/20 11:29:25
>>435
URLリンク(www.watahiki.info)

439:デフォルトの名無しさん
08/12/20 19:20:56
Dynamic HTML Editing Control SDK を入手できるWebサイトは?
まあ無くても、もう持ってるから別に困りませんが。





440:デフォルトの名無しさん
08/12/21 08:23:22
>>439
MSDN

441:デフォルトの名無しさん
08/12/24 00:03:19
VB6.0でエクセルのAVERAGEみたいな計算できませんか?

| 10| 20| |=AVERAGE(A1:C1)


442:デフォルトの名無しさん
08/12/24 00:11:07
(10+20)/2

443:デフォルトの名無しさん
08/12/24 00:13:39
>>441
スレタイどおりで乙


444:デフォルトの名無しさん
08/12/24 01:27:17
(10+20)/3だろ

445:デフォルトの名無しさん
08/12/24 08:44:14
C1のnullをどう扱うかだな

446:441
08/12/24 10:56:17
>>445
そうなんです。nullをどう処理するかなんです。
IF 文でだらだら書くのがちょっと思い書きました。
>>444
10ではなく15の答えが欲しいのです。



447:デフォルトの名無しさん
08/12/24 11:21:18
FlexGridか何かでやってるのかな
/nのnの数を
セルの値がisnumericでTrueになったらインクリメントしていくとか

448:デフォルトの名無しさん
08/12/24 12:25:59
>>446
次は最初からそう書こうね 後出しはじゃんけんでも嫌われるだろ?

449:デフォルトの名無しさん
08/12/25 06:44:52
まだいるかな

>>435
Pコードだと、Pコード逆アセンブラがいる >>438
ネイティブコードなら、デバッグシンボル吐かせれば、お好きなように
clでいう、/Faみたいなものは、ラベルが大幅に置き換わってしまうため、
ろくな内容にならない exeを直接逆汗したほうがまし

450:デフォルトの名無しさん
08/12/25 11:05:47
VB5.0のツリービューのノードのテキストは
一部分を色を変えることはできるでしょうか?

例えば
hoge (100)
という文字列の場合(100)だけ青にするといったことが
可能でしょうか?


451:デフォルトの名無しさん
08/12/25 20:49:55
たぶん無理。カスタムドローできないよね?

452:デフォルトの名無しさん
08/12/30 20:41:11
vb6.0でImageListコントロールを表示するにはどうしたらいいのでしょうか?

453:デフォルトの名無しさん
08/12/30 20:47:59
自己解決しました

454:デフォルトの名無しさん
09/01/01 00:03:49
あけおめ

455: 【だん吉】 【1371円】
09/01/01 01:13:05
С Новым Годом!

456:デフォルトの名無しさん
09/01/01 03:33:22
質問お願いします。
3種類の商品をi(i=1,2,3)として、
それぞれの発注プログラムを構築したいと思っています。

計算方法は同じなので、iが3になるまでのFor~Next処理でやりたいのですが、
それぞれのパラメータ(例えば需要INVi)のiのなかに数値を代入して
あらかじめ決めておいたINV1からINV3の数値を利用して作りたいと思っています。

この場合はINViのiの中に数値i=1~3を代入してINV1~INV3とするにはどのようなコードを書けばよいのでしょうか?
また、そうしたらそれ以前に決めておいたINV1~INV3の数値を参照できるのでしょうか?

初心者の質問で申し訳ないですが、どうかご教授お願い致します。

457:デフォルトの名無しさん
09/01/01 10:24:52
何をしたいのかまったくわからん・・・

とりあえず、配列ではだめなんかい?

458:デフォルトの名無しさん
09/01/02 02:54:20
AからBまでの和を求めるとしたらどうやってコードすればいいんですか?
大小のチェックをして場合分けしてやると思うんですけど。
教えてください。

459:デフォルトの名無しさん
09/01/02 02:59:46
ΣA+B

460:デフォルトの名無しさん
09/01/02 02:59:54
そーなんですよ川崎さん

461:デフォルトの名無しさん
09/01/02 03:06:10
For i = A To B
   result += i
Next

462:デフォルトの名無しさん
09/01/02 10:14:02
>>357さん

なるほど~配列使ってやってみます!

説明下手ですいませんでした…ありがとうございました!

463:デフォルトの名無しさん
09/01/05 22:54:11
VB6でform1の何らかの処理中にform2で処理中って表示したいんだけど
なんかいい方法ありますか?
モーダルだとform1の処理が止まってしまうんで・・・

464:デフォルトの名無しさん
09/01/05 22:58:49
止まってるように見える事なんて気にせず実行ファイル作ればいいとおもうよ

465:デフォルトの名無しさん
09/01/05 23:03:29
DoEvent

466:デフォルトの名無しさん
09/01/05 23:19:37
もしかして別フォームをモーダルで表示しても
その後の処理は続いてると?

ついでに教えてもらいたいんですが
モーダルで表示したフォームってshowイベントで止まるでいいですか?

467:デフォルトの名無しさん
09/01/05 23:24:24
>>463
素直にドトネトつかってマルチスレッドのコードを書く方がいい。
ってういか、だからFormのコードに処理なんか書いちゃダメなんだよそもそも。
だからVB厨って呼ばれるんだ。

468:デフォルトの名無しさん
09/01/05 23:26:04
モードレスで出せばいいだろJK

469:デフォルトの名無しさん
09/01/05 23:40:33
処理中はform1を操作できなくしてform2のみ操作できるようにしたいのです
モードレスでもいい方法があればいいのですがありますか?

質問ばかりですいません・・・

470:デフォルトの名無しさん
09/01/05 23:47:05
vodal

471:デフォルトの名無しさん
09/01/05 23:50:59
Enable = False でいいだろJK

472:デフォルトの名無しさん
09/01/05 23:52:28
form1.enabled=false

473:デフォルトの名無しさん
09/01/06 00:13:55
一度enabledでやってみたんですがウィンドウがアクティブにならなかったので諦めてました
もう一度試してみます

夜遅くに付き合ってくださってありがとうございました!

474:デフォルトの名無しさん
09/01/06 00:31:11
操作できないウィンドウをアクティブにして何がしたいんだよ?

475:デフォルトの名無しさん
09/01/06 00:35:15
form2をアンロードして、form1のenabledをtrueにしたときです
やり方がまずかったのか、もう一度試してみます

476:デフォルトの名無しさん
09/01/06 10:27:29
本当に申し訳ありませんが、どなたか教えてください。

'住所1の印字
P_PRINT.E_Font "FC行楷書体", ADRS_FNT, True, 0
HH = ADRS_FNT / 2.835 + 1
If Not IsNull(AdoRs![住所1]) Then
For I = 1 To Len(AdoRs![住所1])
BAR = Mid$(AdoRs![住所1], I, 1)
' If BAR = "-" Then BAR = "ー"
' P_PRINT.E_String_Tate 60, 14 + (I - 1) * HH, BAR, RGB(0, 0, 0) '縦書き
If BAR = "ー" Or BAR = "-" Then BAR = "|"
P_PRINT.E_String 60, 14 + (I - 1) * HH, BAR, RGB(0, 0, 0)
Next
End If

上記はVBでのアプリケーションから封筒に宛名を印刷する。
というコードの一部なのですが、現在縦書き仕様になっており、
横書き仕様に書き換えたいのですが、一体どこをどう換えれば良いのか、
全く検討つきません。
心優しい方、ご教示いただければありがたいです。。。


477:デフォルトの名無しさん
09/01/06 12:25:18
age

478:デフォルトの名無しさん
09/01/06 16:18:35
>>476
縦書きの部分がREMになってて横書きの部分が有効になってるように見えるんだけど…
とりあえずこれでどうかな

P_PRINT.E_Font "@FC行楷書体", ADRS_FNT, True, 0

(略)

If BAR = "-" Then BAR = "ー"
P_PRINT.E_String_Tate 60, 14 + (I - 1) * HH, BAR, RGB(0, 0, 0) '縦書き
' If BAR = "ー" Or BAR = "-" Then BAR = "|"
' P_PRINT.E_String 60, 14 + (I - 1) * HH, BAR, RGB(0, 0, 0)

(略)

479:デフォルトの名無しさん
09/01/06 17:34:42
>>478
回答ありがとうございます!


480:デフォルトの名無しさん
09/01/06 17:41:48
>>478 さんは
私の神様です!まだ実行してないですが、とにかく嬉しかったので・・・
連投すみません!

481:デフォルトの名無しさん
09/01/07 02:15:27
Google先生に頑張ってもらったのですが見つからないので、力をお貸しください。

VBAでListViewを作成しています。
グリッド表示で任意の行にある項目をダブルクリックした時、それが列の何番目なのかを取得したいのですが
VBAでは上手く出来なくて困っています。
ヒントや方法、解説されているサイトなどがありましたら、教えていただけないでしょうか。
よろしくお願いします。

482:デフォルトの名無しさん
09/01/07 18:06:16
質問です。

コードの中で計算したものを
エクセルに表示したいのですが、どのようにすればいいですか?

483:デフォルトの名無しさん
09/01/07 18:21:45
VB/VBAに限らない簡単なFAQのほうだけ

>>482
Excel側のドキュメント読んで、サンプル探すといい
どのみち、慣れるまではExcel側のドキュメントを読み漁ることになる

484:デフォルトの名無しさん
09/01/08 10:27:19
>>482
URLリンク(chaichan.web.infoseek.co.jp)
このへんで

485:デフォルトの名無しさん
09/01/08 11:05:24
低レベルの質問ですいません。クラスとか、オブジェクト、
インスタンスなどと言う用語の意味が良くわからない
のですが下のような解釈でいい?

Step 1 私のタコ焼き(オブジェクト:器)の用意をする
Dim 私のタコ焼き(オブジェクト:器) As タコ焼き(クラス:器と具の仕様書)

Step 2 私のタコ焼き(器)に具(インスタンス)を入れ焼く
Set 私のタコたこ焼き(オブジェクト:器) = New タコたこ焼き(クラス:器と具の仕様書)

Step 3 私のタコ焼きに仕事をさせる
私のタコ焼き(オブジェクト:具の入った器).私に食われる

あと、Step 1~Step 3 において、物理メモリー上で何が起きてん?
領域の確保とか、コピーとか、値の代入とか起きてるような気が
するんですがどうなんでしょう? それと、各領域の先頭部分
にはヘッダーみたいなのが存在するはずだと思うのですが。

486:デフォルトの名無しさん
09/01/08 12:10:20
すいません、間違えました。
タコたこ -> タコ

487:デフォルトの名無しさん
09/01/08 18:31:21
クラスモジュールひとつ書いてみればいいんじゃね

488:デフォルトの名無しさん
09/01/08 19:43:19
>>485
知能指数が余程高い人は別として、普通の頭の人間がまず抽象的な概念を
先に完全に理解しようとするのは無理がある。

↓辺りの文章をさらっと読んで、とにかく実際にクラスモジュールを使ってみる方がずっと理解が早い。
抽象的な概念はあとから自ずと分かってくるから。
URLリンク(homepage1.nifty.com)

489:485
09/01/08 20:46:44
>>487 >>488
やはり、複雑なことを一足飛びに抽象的に
理解しようとするのには無理があるって事ですね。
紹介していただいたWebページを参考に一つ一つ理解して
いこうと思います。感謝です。

490:デフォルトの名無しさん
09/01/09 15:50:10
ボタンを1回クリックで1増える処理があるとして
ボタンを長く押していると連続して1が増えていくような
処理ってどうやったらできるのでしょうか?
クリックイベントだといったん離さないと次のクリック
イベントが発生してくれませんでした。

491:デフォルトの名無しさん
09/01/09 16:52:09
MouseDown, MouseUpイベント+Timerとか

492:デフォルトの名無しさん
09/01/09 17:14:07
>>491
やはりTimerですかorz

493:デフォルトの名無しさん
09/01/09 17:38:19
>>483
>>484

ありがとうございます!
早速試したのですが、最初の参照設定からうまくできず、
Excel.Applicationは宣言されていませんとエラーが出てしまいます。

VB2008なのですが…

494:デフォルトの名無しさん
09/01/09 19:16:58
>>493
スレタイ嫁

495:デフォルトの名無しさん
09/01/18 11:01:05
Excelとかの他のオブジェクトを使うことを何て言葉で表現したらいいのか。
「ライブラリを使う」っていうのか、「オートメーションを使う」って言えばいいのか、
そして、あれもCOMと言えるのかな。「COMを使う」って言えばいいのかな。

今は、その適切な言葉の使い方で説明できなくてもどかしいが、VB6のソースはなぜか遅延
バインディング多いみたいだな。何で事前バインディングにしないのか疑問だが。遅延でしか
対応不可能な特別な場合を除いて、原則として事前にしない意味がわからん。単に知識が無い
だけなのか?
理解不能でないように補足しておくと、遅延とは、CreateObjectのことで、事前は参照設定して
専用のデータ型で宣言してNewでオブジェクトを作ることだ。

496:デフォルトの名無しさん
09/01/18 11:30:54
参照設定するのが面倒くさいんじゃないの?知らんけど。

497:デフォルトの名無しさん
09/01/18 12:20:47
>>495
クライアント環境のOfficeがバージョン不定の場合なんかは遅延にせざるをえない



498:デフォルトの名無しさん
09/01/18 12:31:48
まあ理屈としては497の言うとおりなんだけど、
実際は97-2007でほとんどのメソッドは互換性があるんだけどね。

一部動かないメソッドを使うところだけ部分的に遅延バインド(といっても
WorksheetとかWorkbookのインスタンスをObject型の変数にぶち込むだけだが)
するように作った方が、最初から全部遅延バインドで作るより開発効率がいい。

499:デフォルトの名無しさん
09/01/18 12:37:43
遅延バインドだと、動かないメソッドが使えるようになるのか?

500:デフォルトの名無しさん
09/01/18 13:22:44
>>499
愚問過ぎる。

501:デフォルトの名無しさん
09/01/18 14:09:23
>>499
お前勉強しろよ・・・
インテリセンスくらいの差しかない

502:デフォルトの名無しさん
09/01/18 16:51:35
開発時は参照設定してインテリセンスに助けてもらって、最後に直すとかよくやった。

503:デフォルトの名無しさん
09/01/20 13:48:59
この流れだといまさら聞けないんだが、くだすれだから投げてみる
事前バインドっていうのは、いうなれば、コード生成の時点で、
(たとえば、inprocserverなら)vtable呼び出しになっている。みたいなイメージでおk?
んで、実行時バインドってのは、typelibみにいって呼ぶみたいな。
だから、実行時バインドなら、理論上、タイプライブラリが替えられちゃっても動く?
(そんなことしょっちゅうあってほしくないけど、まあ、理論上な)

504:デフォルトの名無しさん
09/01/20 14:40:44
ググレカス

505:デフォルトの名無しさん
09/01/22 10:13:58
つれないなあw

投稿前にぐぐって、かわりに知ったのは、VBどとねと移行ツールが、
事前バインドになってない個所を指摘してくれるらしい?ってことだった
どとねとは食わず嫌いだが、これはたまに使えるかもしれん

506:デフォルトの名無しさん
09/01/22 19:25:24
VB6のソースをダウンロードして見てみたのですが、
グローバル変数とローカル変数に同じ名前をつけたり、
ループの中にDimで変数を宣言するのって普通のことですか?
URLリンク(www.pccard.co.uk)


507:デフォルトの名無しさん
09/01/22 19:38:27
「シンタックスエラー」以外は普通。

508:デフォルトの名無しさん
09/01/22 19:40:36
ループなどブロック内での変数宣言は禁止にしてることが多いな。
嵌ることがある。VB.NETから意味が変わったし。

509:デフォルトの名無しさん
09/01/23 00:49:38
オレもブロック内での宣言は絶対しない。
宣言は冒頭にまとめてする事にしている。

510:デフォルトの名無しさん
09/01/23 01:01:38
BASICじゃあるまいしwwww

しまった、VBはBASICか

511:デフォルトの名無しさん
09/01/23 01:10:59
基本的には使う直前に定義すべきだと俺は思うけどね。

「嵌る」というのはループ内の定義箇所で変数の値がデフォルト値に初期化されると
(誤って)期待した場合だと思うけど、それはむしろきちんと明示的に初期化しない
ことの方に問題がある。

あとVB6だと見た目ブロック内スコープに見えても実際のスコープは関数内、
っていうのも仕様としてはいやらしいけど、あまり問題にならんと思う。

512:デフォルトの名無しさん
09/01/23 06:58:10
>>509
こういう頭の固い奴たまに見るけど、何言語出身なの?

513:デフォルトの名無しさん
09/01/23 07:44:10
K&R CかCOBOLだろ

514:デフォルトの名無しさん
09/01/23 08:06:27
goto使う奴は、とか

しまった、VBはBASICか

515:デフォルトの名無しさん
09/01/23 10:49:54
gotoは使わざるえないだろw

516:デフォルトの名無しさん
09/01/23 11:40:26
>>511 が全部書いているが、
同じ理由で関数/サブルーチン内の一番外側のブロックでDimすることにしてる。
やらん方がいいのはブロックの中の宣言したものを外で使うこと。
If ... Then
   Dim x as ...
End If
print x
ブロックの中で配列の宣言やDim x As New ,,, でオブジェクト宣言はしないこと。
前者はVB.NETでコンパイルエラーになるが、後者はコンパイルは通るが動作が異なる。

517:デフォルトの名無しさん
09/01/23 16:34:27
VB5とVB6の違いは大きいですか? 中古で5の入門書のほうが安かったので。

518:デフォルトの名無しさん
09/01/23 16:49:37
5でも6でも80過ぎの借金だらけのババアと結婚するようなもんだ

519:デフォルトの名無しさん
09/01/23 17:10:44
VB6を持っているならMSDN LibraryにVB6の新機能といった項目がある
一番大きい違いはDB(DAO->ADO)関係かな

520:デフォルトの名無しさん
09/01/23 17:52:44
入門するならターゲットに出来るだけ近いものがいい
書いてあることと同じ結果が出ないと無駄な時間を費やすことに なったりならなかったり


521:デフォルトの名無しさん
09/01/24 00:21:20
>>515
お前エラートラップ限定で使わざるを得ないっていってんだよな?
そうだよな?そうだと言えよ!!!


522:515
09/01/24 00:46:30
>>521
それ以外になにがあるw


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