08/03/30 09:01:59
このスレッドはVBについて、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
VB使いが優しくコメントを返しますが、
お礼はVBの布教はしなくてよいので、初心者の救済をお願いします
前スレ
くだすれVB6.0以前(超初心者向け)
スレリンク(tech板)
2:d
08/03/30 09:02:39
Visual Basic Version 5.0 Control Creation Edition SP2 日本語版
URLリンク(download.microsoft.com)
Visual Basic 5.0 Control Creation Edition: SP2 ヘルプ ファイル
URLリンク(www.microsoft.com)
URLリンク(download.microsoft.com)
Visual Basic Version 5.0 Control Creation Edition: レジストリ修正モジュール
URLリンク(www.microsoft.com)
URLリンク(download.microsoft.com)
Visual Basic 5.0: RecentFiles ツール
URLリンク(www.microsoft.com)
URLリンク(download.microsoft.com)
3:デフォルトの名無しさん
08/03/30 20:08:18
3が取れたらプログラマという職がなくなる
4:デフォルトの名無しさん
08/03/30 20:15:10
おめでとう
5:デフォルトの名無しさん
08/04/02 15:47:48
馘首
6:デフォルトの名無しさん
08/04/02 19:27:21
abc.mdbというデータベースからランダムに情報を抽出したいです。
abc.mdbのフィールド1には、A,B,Cの3種類のうちどれかが入力されており、
このうちAと入力されている列を抽出し、
さらにその中から5つの列をランダムに取り出したい場合、
どのようにすればいいのでしょうか?
ネットで調べましたが出てこなかったので質問させていただきました。
よろしくお願いします。
7:デフォルトの名無しさん
08/04/02 19:34:04
このスレは重複です
本スレで質問してください
8:デフォルトの名無しさん
08/04/02 23:45:14
重複じゃなく、次スレである。
まず、前スレ埋めれ。
9:デフォルトの名無しさん
08/04/02 23:48:19
>>7
ここは、超初心者向けのスレ。
VB5CCEの使い方でもやさしく教えてけろ。
10:デフォルトの名無しさん
08/04/02 23:51:06
断る
11:デフォルトの名無しさん
08/04/03 09:04:33
>>10
ケツ貸してやれば教えてくれるか?
12:6
08/04/03 12:17:54
自己解決しました。
>>7
本スレ見つからなかったです。
13:デフォルトの名無しさん
08/04/07 13:48:28
やりたいのは、form上に固定ディレクトリ(例えばC:\test)の一覧を表示して、
更新ボタンとかリアルタイム更新で確認したい、というものです。
ネット上検索でも、手持ちの参考書でも、
ドライブ→ディレクトリ→拡張子や属性別選択表示のコンボ形式ばかりで、
単純に決めうち表示するやりかたが見つかりません。
教えてください。お願いします。
14:デフォルトの名無しさん
08/04/11 17:41:40
どなたか教えて下さい。
ディレクトリ下の複数テキストファイル(ファイル名は決まっていない固定長の
データ)を1つのファイルに纏める(1つのファイルに連結コピーする)方法を
教えて下さい。ロジックが思い浮かびません(;;)
15:デフォルトの名無しさん
08/04/11 18:00:20
>>14
copy *.txt matome.txt
16:デフォルトの名無しさん
08/04/11 19:45:14
>>15
thx
17:デフォルトの名無しさん
08/04/12 04:03:43
>>14
Thank you
難しく考え過ぎていたようです。
フォルダの下のファイル一覧を作成して、それぞれ1行づつ読み込み
ワークエリアに書き込み・・・すっかり炉坪でした!!
試してみます。
18:デフォルトの名無しさん
08/04/14 08:49:15
>>13
いい事言うなあお前。
みんなが頭じゃわかっててもなかなか実践できない事を口に出して言えるなんざ大した自信だよ。
それで出来てなかったらあのインチキ占いのバアさんと一緒だぞお前。
そんなに当たり前の事を言いたかったら尼さんにでもなって言行等しくなってから説教したらどうだ。
19:デフォルトの名無しさん
08/04/21 21:59:14
VB6.0からExcelに値を貼り付けてプレビュー表示をする処理にて
処理中は見えないようにするためVisibleをFalseにするのですが、
EXEファイルから起動するとVisibleをFalseにした段階で最背面に表示されてしますいます。
Visual Basicから起動するとプレビュー画面が最前面に表示されるのですが何故でしょう?
使っているコンポーネントはQuickPack、Farpoint SpreadSheet、InputMan Proです。
今まで別な環境で作った際はこんな現象になったことはありません。
同じコンポーネントを使っている方で克服した方はおりますか?
ちなみにSetWindowPos等使わないで済ませたいです。
途中ダイアログを表示したりメッセージボックスを表示させたりするので
Visual Basicで起動しているときと同じ用途で実現させたいのです。
ちょっと分かりにくいかも知れませんが宜しくお願い致します。
20:デフォルトの名無しさん
08/04/21 22:12:24
コピペ君って馬鹿だな、まで読んだ。
21:デフォルトの名無しさん
08/04/22 00:46:22
出た、素人童貞。
22:デフォルトの名無しさん
08/04/27 12:52:33
今日起きたら、知らない女の部屋だった
23:デフォルトの名無しさん
08/04/29 18:14:35
おちんちん(^~^)ムズムズ
24:デフォルトの名無しさん
08/05/29 11:58:27
VB5CCEの使い方書いたページ発見した
酒井法雄の Visual Basic 5.0 CCE講座
URLリンク(www.int21.co.jp)
25:デフォルトの名無しさん
08/06/02 17:36:44
VBって神言語ですね。
26:デフォルトの名無しさん
08/06/04 18:28:35
てすつ
27:デフォルトの名無しさん
08/06/04 18:30:38
質問があります。
あるDLLを使用しているVB6のアプリがあるのですが、
いちいちDLLとexeをペアでユーザー配布したくないので、exeの中にDLLを含めてしまいたい
のですが、コンパイルスイッチなどでそのような指定をすることはできるでしょうか?
28:デフォルトの名無しさん
08/06/04 21:24:18
できない
29:27
08/06/10 20:13:29
>>28
ありがとうございます
30:デフォルトの名無しさん
08/06/21 00:37:29
質問です。
VB6.0で、ボタンを押すと最新状態の取得を行う処理を
行いたいのですが、どうしたらいいのかわからないです。
仕様書は以下のようになっているので、
どなたかご説明お願いします。
尚、SQLの部分はSELECT文は使わないとの指示です。
*調査員番号と調査機関コードを取得する。
★取得SQL→SELECT DISTINCT tt.調査員番号, tt.調査機関コード
FROM 調査員地区マスタ tt,地区マスタ tk
WHERE tt.状況フラグ='0' AND tk.市町村コード=画面.市町村選択コンボ
AND tt.地区コード=tk.地区コード
※調査員番号、調査員名が表示されている場合は、
tt.調査員番号 = 画面.調査員番号 AND
tt.調査機関コード = 調査員が属する調査機関のコード(グローバル変数)
の条件を追加をする。
※画面.対象市町村選択コンボで空欄を選択している場合は、
市町村コードでの抽出条件を省く。
*調査日と調査可能数を取得する。
★取得SQL→SELECT 調査日,調査可能数 FROM 調査員時間マスタ
WHERE 調査員番号 = "Aで取得した調査員番号"
AND 調査機関コード = "Aで取得した調査機関コード"
AND 調査日 >= カレンダー日付の最初の年月日(8桁:YYYYMMDD)
AND 調査日 <= カレンダー日付の最後の年月日(8桁:YYYYMMDD)
31:デフォルトの名無しさん
08/06/21 00:46:55
うるせえ馬鹿
32:デフォルトの名無しさん
08/06/21 01:26:54
>30
素直にわかりませんって上に伝えるかわかる人をつかまえて教えてもらえよ
それで金もらうなんておかしーぜ
33:デフォルトの名無しさん
08/06/24 08:43:28
Form1とForm2のふたつのフォームがあります。
Form1にボタンを1個置いて、そのボタンのクリックイベントで
Form2.Show
Unload Me
というコードを記述して実行します。
この場合イベントの発生順ですが
Form2のLoad --> Form1のUnload --> Form2のActivate
となるのですが
予想では
Form2のLoad --> Form2のActivate --> Form1のUnload
だったのですが
なぜこのような順序になるのでしょうか?
34:33
08/06/24 09:29:39
あ、わかりました。
Form2.Show
DoEvents
Unload Me
としたら予想の順序になりました。
35:デフォルトの名無しさん
08/07/08 20:24:57
教えてくれ
VistaにVB6インストールしてプロジェクト‐コンポーネントのコントロールタブから
Microsoft Common Dialog Control 6.0を追加しようと思ったら、
Microsoft Common Dialog Control 6.0が無いんだけどなんでだ?
XPにインストールした場合はあるんだけど。
XPでコモンダイアログを含むコードを開発して、
それをVistaで編集しようと思ったら
comdlg32.ocxを読み込めませんとか出てきてできないじゃん。
36:デフォルトの名無しさん
08/07/10 09:16:34
とあるメソッドがありそれを呼び出したメソッドを
ログにとりたいのですがそのようなことは可能でしょうか?
たとえば
Function hoge()
Call LogWrite ("呼出もと:" & よびだしもと & )
Exit Function
といった感じです。
やはりhoge()を呼び出している側でログを出力する必要が
ありますか?
37:デフォルトの名無しさん
08/07/10 21:57:08
教えてください
Set cn = New ADODB.Connection
cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\WK\TEST.mdb"
でACCESSのMDBに接続、クローズしてからタイマーで1分後に再度
接続するとエラーが発生することがあるのですが
エラーメッセージは
「データベースを開けない状態、またはロックできない状態にしています。」
という内容です、
1分ではなくて5分ほどに
するとエラーは発生しなくなります。
クローズしてから再度オープンする間隔が短いと何か問題とかあるのでしょうか?
38:デフォルトの名無しさん
08/07/10 21:59:33
↑すみません、VB6.0です、ACCESSのほうはバージョンはわかりません
39:デフォルトの名無しさん
08/07/11 03:11:27
>>37
何か問題が、って質問からは外れるけど
ロックされてるか確認した上で接続するようにすればいいじゃない
40:デフォルトの名無しさん
08/07/11 20:22:40
Set cn = Nothing
にしたらどうなる?
41:デフォルトの名無しさん
08/08/29 14:54:45
凄くくだらない質問ですが教えてください
VBでIEを操作していて例えば
Form name = formA
input name = ID
objIE.document.formA.ID.Value = Text1.Text
とかでIDにText1が代入できると思いますが
input name = ID.1
とnameにドットが入ってる場合
objIE.document.formA.ID.1.Value = Text1.Text
でID.1のドットの部分でエラーを吐いてしまって困っています
どうすれば回避できますでしょうか?
42:デフォルトの名無しさん
08/08/29 17:36:45
objIE.document.formA.[ID.1].Value = Text1.Text
43:デフォルトの名無しさん
08/08/29 19:40:54
>>42
ありがとうございます
[]で囲んでみましたが同じくサポートしてないとエラーを吐きます
困りました
VB6.0です
nameにドットが入ってない場合は正常に動作します
44:デフォルトの名無しさん
08/08/29 19:44:00
callbyname
45:デフォルトの名無しさん
08/08/29 21:35:48
インスタンスのコピーは例えば
A a
B b
なるインスタンスa,bがあったとして
b = a
でいいでしょうか?
それともb = a.clone or a.copyなるコピー関数をかかないといけないんでしょうか?
46:デフォルトの名無しさん
08/08/29 21:53:49
コピー関数が必要。
オブジェクトの代入がコピーでないことを示すために、
Set b = a と書くようになっている。
なお、Stringはオブジェクトではなく型扱いなので代入でコピーが発生する。
47:デフォルトの名無しさん
08/08/29 22:41:03
くそっ、そういうことしたかったら、Typeの構造体のほうが便利だな。
48:デフォルトの名無しさん
08/08/29 22:49:23
すんげー長い関数func1(....)が超よみにくいので
sub_func1..... func2
にわけてやろうとおもって3時間ほどトライしているのですが
内部で使われる構造体をずっと参照でわたしていって
深くなってくると値がかわってくれてないような><
なんか深さに制限あるんでしょうか。
実際には、3000行ある処理を30行くらいの関数にわけていって
おります。
type M
end
func1()
dim m1 as M_t
func2(m1)
func3(m1)
end
end
end
end
end
end
private func2(byref m as type M)
private func3(byref m as type M)
49:デフォルトの名無しさん
08/09/01 11:00:44
基本のグローバル変数、アニメーションがわかりません。
ご提示お願いします。
50:デフォルトの名無しさん
08/09/03 20:27:47
t(50000,1)
の配列にはいってる数値を、CSVで出力したいんだが、
for i=0
tmp=tmp & t(i,0) & "," & t(i,1) & vcrlf
next i
open "t.csv" For Binary Access Write As #1
Put #1, , tmp
close #1
で、tmpに溜め込んでバイナリで書き込もうとしたんですが、
tmpの後に追加していくと、行数が多くなるとだんだん重くなってしまいます。
もっと高速に保存する方法はないでしょうか?
Put #1, , t()
これが、怪しいような気がするんですが、、、
51:デフォルトの名無しさん
08/09/03 20:42:45
したいんだが、・・・・・・
>>50
遅いのは恐らく文字列の連結。(遅い理由はVBは文字列の連結ごとにメモリの確保と
コピーが入るから)
解決法は、確かmid$を使った文字列の高速な連結法があったはずだから
ググってそれを使う。
それが面倒なら、変数上で連結なんてせずに直接ファイルに追記すれば
少しはマシになるはず。
52:デフォルトの名無しさん
08/09/03 22:23:16
テキストファイルを書き出すのになんでFor Binary Accessなんだ?
53:デフォルトの名無しさん
08/09/03 22:24:31
つsystem.text.stringbuilder
54:デフォルトの名無しさん
08/09/03 22:32:21
つ、とかヲタっぽい気色のわるい書き方する奴って例外なくアホだな
55:デフォルトの名無しさん
08/09/03 22:36:09
つ よりもVB6で stringbuilderのほうが痛いな
56:デフォルトの名無しさん
08/09/03 23:00:44
Dim sb As Object
Set sb = CreateObject("System.Text.StringBuilder")
sb.AppendFormat "{0}", "やればできるさ"
Text1.Text = sb.ToSTring
AppendLineがなぜかComコンパチじゃなくて使いにくいな。正直おすすめしない(笑
57:デフォルトの名無しさん
08/09/04 06:47:52
VB6ならFSOでおk
58:デフォルトの名無しさん
08/09/04 16:06:18
つ System.IO.StringWriterのWriteLine
59:デフォルトの名無しさん
08/09/18 20:27:20
>>48
どこかのByRefで渡す筈の引数に、ByValが紛れ込んでいるとか。
それくらいの規模になってきたら、そろそろ設計図書いた方が良いかもしれない。
>>49
グローバル変数とは、Publicで宣言された変数のこと。
引数に値を渡す必要が無いメリットがあるものの、
どこからでも読めてしまうデメリットは
最終的にデバッグを非常に困難にする為、扱いに非常に困る。
アニメーションは、そのままだな。
映画館の映写機みたいなイメージで
1秒間に最大60回くらい画面書き換えたりする事。
>>50
Valiant型使っておいて遅いとか言っちゃダメですぜ。
60:59
08/09/18 23:48:31
>>50
この環境にVB6入ってないからデバッグできてない挙句に、久し振りすぎてあちこち怪しいが、草案だけ出しておく。
Const MAX_X = 1 '配列の要素数が固定であるならば、
Const MAX_Y = 50000 'Constを使っておくと修正が楽。
Private t(MAX_Y,MAX_X) As Long
'--------メイン------->
Private Sub mn_Save_Click() 'セーブを要求する場合。例として、メニューの保存辺りから呼ぶとして…。
Dim Ret As Integer
Ret = MsgBox("セーブする?",vbOkOnly)
Select Case Ret
Case vbOK
Debug.Print "csvKakiko => FileName:" & App.Path & "t.csv" '一応、送られた文字列を確認。
Call csvKakiko(App.Path & "t.csv")
End Select
End Sub
'----保存とか--->
Private sub csvKakiko(ByVal FileName As String) 'csvに書き込む。/引数:FileName:ファイル名/絶対パス
Dim Fnum As Integer
Dim i As Long,i_Max As Long
Dim tmp As String
Fnum = FreeFile() '※必須。Closeされていないファイルナンバーを用いてOpen処理以降を発生させると別のファイルに書いてしまったりする。
Open FileName For Binary Access Write As #Fnum
For i=0 To MAX_Y '0から構造のY最大値まで昇順。(MAX_Yが50000なので、0-50000の50001レコードが記述される。)
tmp= Format(t(i,0)) & "," & Format(t(i,1)) & vbCrLf '記録する文字列を組みながら
Put #Fnum, , tmp '記録する。
Next
Close #Fnum
End Sub
61:デフォルトの名無しさん
08/09/20 18:41:23
VBからIE操作する際の話なんですが、
IEを起動時 or 起動後にJavaScriptを切る方法ってないでしょうか?
バージョンはIE8beta2ですがIE6の方法でも構いません
62:デフォルトの名無しさん
08/09/20 21:24:44
Document.designMode="on"
63:デフォルトの名無しさん
08/09/22 13:59:12
Document.designMode="on"で検索したけどそれらしきものが見当たらない
64:デフォルトの名無しさん
08/09/22 14:26:02
URLリンク(www.google.co.jp)"on"
65:デフォルトの名無しさん
08/09/22 23:07:09
IEでダイヤログ(はい、いいえを選択するやつです)が出てきた時に
最初からはいが選択されてる状態で
自動的にエンターキーを押させてはいを決定させたいのですが
SendKeys "{ENTER}", True
これでいけると思ったのですが反応しません
自分でキーボードのエンターキーを押すともちろん反応します
何か手違いか、他に方法ありますでしょうか?
66:デフォルトの名無しさん
08/09/22 23:18:02
キーボードドライバを作成してそれに向かって操作しろ
どうでもいいが、間違いの予想はいくつか出てくるがソース出せやクソガキ
67:デフォルトの名無しさん
08/09/23 01:26:08
>>65
IEのダイヤログが出る部分の設定を全部「常に許可」に設定すればVB側で弄らなくても解決する。
68:デフォルトの名無しさん
08/09/23 21:41:24
keybd_event() or SendInput()
69:デフォルトの名無しさん
08/09/24 10:08:00
結構古い(と思われる)VBのソース見てて
疑問に思ったんで教えて欲しいです。
a=&H100&
みたいに数字の後に & が付いているのは何ですか?
数字の前の&Hはなんとかわかるんですが・・・
参考書とか読んでも & は「文字列を連結するための・・・」
とかしか出てなくて。
70:デフォルトの名無しさん
08/09/24 10:15:36
おまえは一冊しか本を持ってないのか?MSDNは読めないのか?馬鹿なの?
71:デフォルトの名無しさん
08/09/24 12:49:27
>>69
ただの16進数の書式だったかと。
後ろの『&』無しでも普通に動いてると『&』が後ろについてる理由が解らんのだよな。
『&』は、単独ならString型データの結合の演算子として扱う。(一応、『+』演算子でも動作する恐怖。)
Sub Main
'以下の一文で 255 が出力される。@formatを用いているのは、返されたByte型の255の値を文字列型にする為。
Debug.Print format(changeHexStringToByte("ff"))
End Sub
Private Function changeHexStringToByte(ByVal HexStringNN As String)As Byte
changeHexToValue = Val("&H" & HexStringNN & "&") '文字列を作って無理矢理Valに通す。
End Sub
72:デフォルトの名無しさん
08/09/24 12:55:29
嘘を教えるのはよくない。
73:デフォルトの名無しさん
08/09/24 13:11:22
覚え間違えてたわ。サンクス。m(_ _)m>>72
74:デフォルトの名無しさん
08/09/24 13:21:00
&を後置するのは16進数Long型扱いらしい?
調べてみたのだが、いまいち自信が持てない。
(&H0000はInteger型で扱われる。≒最上位ビットが1の場合はマイナス符号化?)
今まで&H0000&のみしか使ってなかったし、何やら損した気分に。orz
75:デフォルトの名無しさん
08/09/24 13:29:56
16進数Long型ってなんですか
76:デフォルトの名無しさん
08/09/24 15:33:49
MsgBox TypeName(&H8000)
MsgBox TypeName(&H8000&)
77:71,73,74
08/09/24 15:50:55
>>76
なるほど納得。
ヒントに感謝です。m(_ _)m
78:デフォルトの名無しさん
08/09/24 16:10:02
MsgBox &H8000
MsgBox &H8000&
MsgBox &H8000=&H8000&
79:77
08/09/24 18:15:36
>>78
ありがとう。数値の扱われ方が何となく解った気がします。
&HFFFFでやってみたら-1と65535になりました。
調べてみたらこんなのが…。
16進数表記:格納されているデータの2進数:10進数(アンダースコアは便宜上の物)
&H8000:1000_0000_0000_0000:-32768
&HFFFF:1111_1111_1111_1111:-1
&H0000:0000_0000_0000_0000:0
&7FFF:0111_1111_1111_1111:32767
&H8000&:0000_0000_0000_0000_1000_0000_0000_0000
切欠を貰えた事にも感謝します。m(_ _)m
80:デフォルトの名無しさん
08/09/24 21:43:07
VB6.0です
button1からbutton30を作って、同じform内に
button100からbutton130を作るって出来ますか?
button31からbutton99は使用しないです。作成も
したくないです。
質問してて、無理っぽいと思ってますが、どうでしょうか?
81:デフォルトの名無しさん
08/09/24 21:55:03
できます
82:デフォルトの名無しさん
08/09/24 23:17:43
え?
83:デフォルトの名無しさん
08/09/25 08:56:55
>>80
1~130作って31~99を消せばいい。
しかし、そこまで多くなったら素直に配列化した方が良いと思う。
フォームに貼り付けたコントロールをコピペするだけで配列化できるから
試してみた方が良いかも。
84:デフォルトの名無しさん
08/09/25 09:42:51
for 1から30
load ボタン
objectの配置
next
for 100から130
load ボタン
objectの配置
next
85:デフォルトの名無しさん
08/09/25 14:26:19
初めまして
VB6でDoEventsを入れると
コマンドボタンのEnabledがTrueになるんですけど…
例
command1.Enabled=False
DoEvents
ここで勝手にcommand1のEnabledがTrueになっています
仕様ですか?
86:デフォルトの名無しさん
08/09/25 15:00:20
バグとか仕様とか言う前に自分のミスを疑えよ
87:デフォルトの名無しさん
08/09/25 15:33:26
>>86
実際にEnabled=False
の真下でDoEventsしたらTrueになってるから聞いてるんですけど?
何でも上から目線で威圧的に言えば良いってものではないですよね
ここでしか偉そうに出来ないからそんな態度なんですか?
恥ずかしい人ですね
88:デフォルトの名無しさん
08/09/25 15:49:41
>>85
それだけのソースだと判断できないと思うが。
その場所でcommand1のEnabledがTrueになったって確実に言い切れるほど
原因が追求できているなら、問題は既に解決してしまっている訳だからね。
はい、次の人どうぞ。
89:デフォルトの名無しさん
08/09/25 16:37:58
それが起きるミニマムのソースをはったらまともに取り合ってもらえると思うよ。
90:デフォルトの名無しさん
08/09/25 16:44:20
ミートのソースはうまいよ。
91:デフォルトの名無しさん
08/09/25 18:54:53
デバッグで止めて見て分かりました
DoEventsで止めて画面を見るとcommand1の文字がきちんと薄くなっている
のにDoEventsの次の行で止めると文字は押せる状態の通常色になっていました
ちなみに上の2回は1回の実行で連続して確認した訳ではなく
1回目の実行ではDoEvents、2回目の実行では次の行という風にしました
これで分かって頂けるでしょうか?
なのでここ以外のソースは関係ないと思っています
92:デフォルトの名無しさん
08/09/25 20:09:30
>>91
Command1_Clickでやってみたけど(ここはあってる?こういうのの確認にソースがいるってこと)
再現しないね。
検索で Command1.Enable = Trueのところを全部探してごらんよ。
あったらそこにもブレークポイントを入れてみる。
93:デフォルトの名無しさん
08/09/25 20:59:17
>>91
DoEventsする前におまえの書いたコードでイベントが発生していて
そのハンドラでおまえが自分でEnable=Trueにしてるからなるんだよ
こんな程度のことでコンパイラ疑うとか図々しいにもほどがある
94:デフォルトの名無しさん
08/09/25 23:46:14
じゃあ、
DoEvents
command1.Enabled=False
DoEvents
こうすれば直るよw
95:デフォルトの名無しさん
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