VB初心者質問スレ Part6

このエントリーをはてなブックマークに追加
1引っ越しました
前スレはこちら
  Part1 = http://piza.2ch.net/test/read.cgi?bbs=tech&key=968328471&ls=50
  Part2 = http://piza2.2ch.net/test/read.cgi?bbs=tech&key=990793224&ls=50
  Part3 = http://pc.2ch.net/test/read.cgi/tech/1000523122/
  Part4 = http://pc.2ch.net/test/read.cgi/tech/1006922992/
  Part5 = http://pc.2ch.net/test/read.cgi/tech/1010624646/

Win32 API関連スレ
  http://pc.2ch.net/test/read.cgi/tech/1006783012/l50

心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調てみる。
参.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
2デフォルトの名無しさん:02/02/16 16:31
CとDelphiとはどう違うんでしょうか?
じゃPro版はフリーソフトということで。
>>1
最初からリンク切れ
5通りすがり:02/02/16 17:11
6通りすがり:02/02/16 17:13
7デフォルトの名無しさん:02/02/16 17:13
さぁ質問しなさい。期待あげ。
8デフォルトの名無しさん:02/02/16 17:18
VBの仕事を無くしたいんですけど、
>VBの仕事を無くしたいんですけど、

VBの仕事請けなければいいのよ。
パンがないなら、ケーキを食べればー。
10デフォルトの名無しさん:02/02/16 23:27
積み残し質問、何かあった?
11デフォルトの名無しさん:02/02/17 01:33
 VBは長島茂雄であるといえよう。
VBでコンパイル時eval作って
13初登場:02/02/17 05:00
マッチングで、文字列を比較したいのだけど、
aaa > bb
となってしまう。
文字数を無視して、bbの方を大きいとみなしたいのですが
どうしたら良いでしょうか?
14デフォルトの名無しさん:02/02/17 05:25
>>13
もしかしたらそういうことができる関数がVBにあるかもしれないけど、
aaaとbbの中の文字列を抜き出してASCIIコードで比較するようにすればいいのでは。
?"aaa" < "bb"
True
1614:02/02/17 05:35
>>14
>aaaとbbの中の文字列を抜き出して
aaaとbbを1文字ずつ抜き出してに訂正
1714:02/02/17 05:59
気になったのでとりあえず作ってみる。
ところで"AA"と"AAA"ではどっちが大きくなるの?
ここでは"AAA"の方を大きくしている。
同じときには"同じ"を返すようにしてる。
= 比較("aaa","bb")

Function 比較(A As String, B As String) As String
 Dim c As Integer, i As Integer, Ok As Byte
 If A = B Then 比較 = "同じ": Exit Function
 If Len(A) > Len(B) Then
  c = Len(B): 比較 = B
 Else
  c = Len(A): 比較 = A
 End If
 Ok = 0
 For i = 1 To c
  If Asc(Mid(A, i, 1)) <> Asc(Mid(B, i, 1)) Then
   If Asc(Mid(A, i, 1)) > Asc(Mid(B, i, 1)) Then
    比較 = A
   Else
    比較 = B
   End If
   Ok = 1
  End If
  If Ok = 1 Then Exit For
 Next i
End Function
1814:02/02/17 06:01
>>17
>ここでは"AAA"の方を大きくしている。
"AA"の間違い。
なんでこんなに間違えるんだろ。
1914:02/02/17 06:38
つーか今普通にif文で比較したら
"bb"の方が大きいんですけど。
わしって踊らされてたんですか?
>>14

>>15を見よ。
21真厨房:02/02/17 07:29
VB6でCGIやるとしたら基礎モデル教えて
<P>タグ1行のHTML返ス例で
2214:02/02/17 07:30
>>20
うん。それで調べてみたんです。
気になって気になって検索かけまくったわしって一体…
>>21
悪いことは言わない。止めときなさい。
代わりにPHP使うのがいいよ。
2413:02/02/17 14:15
すみませんでした。文字数でなく、大文字小文字の違いでした。
"aaa" > "BBB" になってしまうのです。
その前にsortをしているのですが、ソートでは、
aaa
BBB
の順に並んでいるんですけど、
比較すると、aaaの方が大きくなってしまうので、
マッチングできないんです。。
ソートで使用している比較ルーチンを使用すればいいだけじゃないのかな。
まさかリストボックスでソートしているとか、そんな素人っぽいこと言わないよね。

単純に"aaa" < "BBB"にしたいなら、モジュールにOption Compare Textを書けばOK。
ただし、この方法はモジュール全体に適用されるので、StrComp関数を使用して
第三引数にvbTextCompareを指定した方が良い。

ただし、これをやってもソートで使用している比較ルーチンの結果と
同じになるとは限らないので注意すること。
26デフォルトの名無しさん:02/02/17 15:12
>>21
標準出力を GetStdHandleして、WriteFileで文字列を送る。
 sHeader = "Content-type: text/html" & vbCrLf
 sHtml = "<HTML><HEAD><TITLE>test</TITLE></HEAD>" & vbCrLf & _
     "<BODY><P>This is a test.<BR></BODY></HTML>" & vbCrLf

27デフォルトの名無しさん:02/02/17 15:59
Private Sub RichTextBox1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 9 Then
KeyCode = Asc(" ")
End If
End Sub

TABキー押されたとき、RichtextBoxにTabコード(&H9)を入れたいのですが、、、、
無理やりこんなこと(スペースに置き換え)やってます。
なんか方法ないのでしょうか?
28デフォルトの名無しさん:02/02/17 17:07
VB6でデータベースを作っています。
MSFlexGridで、アンドゥリドゥを製作したいのですが、どうしたら良いでしょうか。
配列に入れて・・等考えましたが、複雑になりますし、簡単にコントロールの内容を保存させたりする関数や方法は無いのでしょうか。
それと、ネットの画像をDLしてMSFlexGridのセルに表示したいのですが・・
詳しい説明が載っている場所が無かったので、お願いします。
29デフォルトの名無しさん:02/02/17 17:29
VBっていくらすんの?
ワードとかエクセルに付いてるVBAとかでも
同じ事できるかなぁ?
ちょっと勉強してみようかなと思っとる。
30デフォルトの名無しさん:02/02/17 18:34
>>27
一旦バッファに取り込んで、tabを挿入して書き換える以外に方法は
ありません。 リッチではTabを挿入するのはあきらめましょう。
31デフォルトの名無しさん:02/02/17 18:59
>>29
Delphiならタダです。断然そちらを強く推します。
32デフォルトの名無しさん:02/02/17 19:31
>>28
VB6でデータベースの作成!! 凄い! 惚れたよ。
アンドゥ リドゥ がやりたいなら、[Commandパターン]を使うべし。
>>31
将来性を考慮したらC++BuilderやJBuilderの方がいいんでないかい。
>>27
RichTextBox以外TabStop=Trueのコントロールをフォーム上に置かなければ、
普通にTab入るはず。
3613:02/02/17 20:14
>25
thanks you.
比較はif文でLOOPさせてやってたんですけど、
その方法でやってみます。
37デフォルトの名無しさん:02/02/17 20:17
>>32
"Memento" じゃねーの?
>>29
VBAでも大体一緒。結構違うけど。
3932:02/02/17 20:47
>>37
スマン、状態の保存はMementoパターンでした。
VBスレで指摘されるとは。なんか嬉しい。
4027:02/02/17 21:00
>>34 感謝 !!!!
 巧く行きました。
4128:02/02/17 21:33
レス有難うございます。Commandパターンですか・・少し調べてみます。
サンプル等在れば教えて欲しいのですが・・
MSFlexGridのNetでDLした画像表示ですが、
http://homepage2.nifty.com/inform/vbmania/source/geturl.htm
のを使ってローカルに保存し、表示も心見ましたが、別の方法が在ると思われるんですが・・
これだとちょっと遅いような気がするんですが、仕方ないでしょうか
42デフォルトの名無しさん:02/02/17 21:41
textBoxコントロールを右クリックしたとき
PopupMenuを表示したいのですが、Eventが巧く取れません。
2回クリックしない反応しません。
バグなのでしょうか? 
どなたかお願いします。

Private Sub txtTheme_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then '右クリックをチェック
PopupMenu RightClick ’ポップアップメニュー表示
End If
End Sub
43ヤン:02/02/17 22:32
今現在VBの勉強をしているのですが,良い参考書があれば教えてもらえないでしょうか?
44デフォルトの名無しさん:02/02/17 22:44
Text1.textにno1という名前をつけました。
Text1.textの文字が0だった場合「正しいです」が表示されて、それ以外だった場合「違います」が表示されるのは出来ました。

If no1 = Chr(48) Then
MsgBox ("正しいです")
Else: MsgBox ("違います")
End If

Text1.textが0か1だった場合に「正しいです」が表示され、それ以外の場合に「違います」が表示されるようにするにはどうすればいいのでしょうか?
>>42

txtTheme.Enabled = False
txtTheme.Enabled = True
PopupMenu RightClick

>>43

VBの参考書なんてどーれも一緒

>>44

If no1 = "0" or no1 = "1" Then
MsgBox ("正しいです")
Else: MsgBox ("違います")
End If

46デフォルトの名無しさん:02/02/17 22:56
>>43
プログラミング Microsoft VisualBasic6.0〈VOL.1〉基礎編 マイクロソフト公式解説書
http://www.amazon.co.jp/exec/obidos/ASIN/4891001348/qid%3D/250-0054436-1965029

この本以外は、糞。
4744:02/02/17 22:58
>>45
出来ました。 ありがとう!!
48デフォルトの名無しさん:02/02/17 23:12
Frameコントロールの上に配置したコントロールって、
LeftとかTopとかのプロパティが変わったりFrameの
EnableをFalseにすると使用不可になったりするじゃないですか。
と言う訳で、Frameの上に配置したコントロールを取得したいのですが、
何かいい方法はないでしょうか?

>>48

こんなもんかねぇ。ヘルプも見てないで間違ってるかも。

For I = 0 To Form1.Controls.Count - 1
 If Form1.Controls(I).Container Is Frame1 Then

 ' 処理

 End If
Next
50デフォルトの名無しさん:02/02/17 23:28
>マルチくん
Controlsコレクションで列挙して、Containerプロパティをチェック。
51デフォルトの名無しさん:02/02/17 23:29
>>49
ありがとうございます

Containerに添字は必要なかったのですね。
(0)とか入れて地獄に逝ってました。
ありがとうございます
52デフォルトの名無しさん:02/02/17 23:30
>>49
合ってるけど、Eachを使うほうがモアベター。
53デフォルトの名無しさん:02/02/17 23:30
>>48
VB初心者掲示板の投稿消しとけよ
54デフォルトの名無しさん:02/02/17 23:37
>>52
質問する時はコードを見せろ、バカ!
>>54
誤爆?
5641:02/02/17 23:45
すみません、Commandパターンってやっぱりよく分かりませんでした…
詳しい説明お願いします。
57誤爆者:02/02/17 23:51
>>51 だった。
58デフォルトの名無しさん:02/02/18 00:06
>>53
>VB初心者掲示板の投稿消しとけよ

V友の超初心者専用Q&A掲示板ではなく?こちらも同時期に回答ついてるぞ。

「VB初心者掲示板」がどこかは知らないけど、別の掲示板なら、
他所でもらった回答をまとめて、解決方法をレスしとけよ。>>49
59デフォルトの名無しさん:02/02/18 00:13
>>58
マルチ坊やに理屈は通じない。
こないだから平気でマルチし続けてる。
6032:02/02/18 00:18
>56 (= >28 >41)
Commandパターンじゃなくて、>>37 が指摘したようにMementoパターンだった。
http://www.ff.iij4u.or.jp/~ahirusan/Java/patterns/memento.html
http://www11.u-page.so-net.ne.jp/tk9/ys_oota/mdp/Memento/index.htm
俺も勉強中だし、今、理解できなくてもいいよ。
20年後に、そういえば掲示板でMementoとか言ってたなと思い出してくれ。

さて、MSFlexGridで遅い件だけど、
HTTPのダウンロードが遅いの? MSFlexGridの表示が遅いの?
もうちょっと答えられるように質問してよ。
6149:02/02/18 00:20
>>58
ナンデ俺ナンダヨ…
6258:02/02/18 00:23
ごめんよ、誤爆だ。49じゃなく48でした。

他所でもらった回答をまとめて、解決方法をレスしとけよ。>>48
6356:02/02/18 00:41
>>60,37
Mementoパターンですか・・よく判りませんが見たり調べてみます。
遅い件は、多分DLしてファイルとして保存>開くのところが遅いんだと思いますが・・
ちょっとコードを変えてますが、こんな感じでやっています
Dim b() As Byte
b() = Inet.OpenURL("http://www.dd.iij4u.or.jp/~cap/images/logo.gif", 1)
Open "Date.jpg" For Binary Access Write As #1
Put #1, , b()
Close #1
On Error Resume Next
Picture1.Picture = LoadPicture("Date.jpg")
Set List1.CellPicture = Picture1.Picture
MSFlexGrid1.RowHeight(List1.Row) = Picture1.Height
もうちょっと簡単にすれば早くなると思うのですが・・・
64デフォルトの名無しさん:02/02/18 01:06
>46
それはVBの本だと思うけど、VBAの本でなくて良いのですか?
6546:02/02/18 01:38
>>64
ん、>>43はVBAのお勧め本を聞いてたの?
俺は、ヘルプ見ながら、試行錯誤でやっちゃうからお勧め本はない。
66名無しさん:02/02/18 01:39
VBを1から勉強するに適した本はありますか?
>>66
作って分かるVisual Basic
VBのマニュアルはDelphiと違ってよく出来てると思うけどなぁ。
一通り読んでみそ。
>>66
MSDN見ながら実際やってみることだな
それだけでジュウだな
APIはVB用の解説WEBでさがすことだな
7032:02/02/18 01:53
>>56
List1ってのが何かわからん。ListBox? でも、CellPictureなんてプロパティないしな。
なんでさ、ダウンロード と 表示を一つのサブルーチンでやっちゃうわけ?
そうやっちゃうから、どちらが遅いのかという質問に答えられないんだよ。
学生さん? ならば許す。

とりあえず、On Error Resume Next 以降を少し簡略化してみた。
Dim nRow As Long
Dim nCol As Long
nRow = 1
nCol = 1
With Me.MSFlexGrid1
.Row = nRow
.Col = nCol
Set .CellPicture = LoadPicture("logo.gif")
.ColWidth(1) = .CellPicture.Width
.RowHeight(1) = .CellPicture.Height
End With
俺の環境ではべつに遅くないけどな。
7132:02/02/18 01:58
あう、寝ぼけた。
× >>56
  ↓
>>63

× .ColWidth(1) = .CellPicture.Width
× .RowHeight(1) = .CellPicture.Height
  ↓
○ .ColWidth(nCol) = .CellPicture.Width
○ .RowHeight(nRow) = .CellPicture.Height
72デフォルトの名無しさん:02/02/18 02:10
はじめまして
form1をロードして数秒後に(たとえば2秒後)
form2を立ち上げる。
というようなことをしたいんですがどうすればいいんでしょうか。
>>72
タイマーを使う。
74デフォルトの名無しさん:02/02/18 02:18
>73
それはわかるんですが・・・。
>>74

んじゃ何がわからんのよ?
タイマーのIntervalを2000にして、

Private Sub Timer1_Timer()
Timer1.Enabled = False
Form2.Show
End Sub

とすりゃ完成やんけ。
76デフォルトの名無しさん:02/02/18 02:30
>75
あっ!!
ホントだ!
感謝感謝です。
ありがとございました。
77 :02/02/18 03:52
part1から見ようと思ったのですが、何やら表示されないわけで・・・
78デフォルトの名無しさん:02/02/18 03:57
>>77
かちゅとか使ったら?
79デフォルトの名無しさん:02/02/18 05:00
ここでうまいことインデントをするにはどうすればいいの?
if result=vbyes then
msgbox"",""
end if
↑たぶんあんまりあいてない・・・
8079:02/02/18 05:01
っていうか全然あいてないわ・・・。一応スペース4コ入れたんだけど・・・。
81デフォルトの名無しさん:02/02/18 05:10
>>79
こんな感じ?
 
if result=vbyes then
  msgbox"",""
end if
 
それともこんな感じかな?
 
if result=vbyes then
    msgbox"",""
end if
82デフォルトの名無しさん:02/02/18 05:12
>>81
上は半角スペース4つの代わりに全角スペース2個
下は半角スペースの代わりに「&nbsp;」を入れてみた
83デフォルトの名無しさん:02/02/18 07:52
>>77
「そんなスレありません」と表示されても、
左下に倉庫のリンクがあるから、クリックしてみ!
8463:02/02/18 11:19
>>70
すみません、List1というのはMSFlexGridです。改名してたのを忘れてました・・
この処理を10回〜50回程度連続でやらせるんです。そうするとかなり低速で・・
いちいち保存>開く等せずにちょくせつピクチャボックスに入れられれば、早くなると思うのですが、どうなんでしょう。
ちなみに10代で学生ですが・・
8563:02/02/18 11:44
処理別にテストPG作ったところ、100回繰り返しNetの情報をDLするのが、17秒で、
それを保存し開いてMSFlexGridに設定するまでが7秒でした。こんな物なのかな・・
86通りすがり:02/02/18 12:21
>>77
このスレの >>5-6 に書いときました。<Part1〜4のURL
87デフォルトの名無しさん:02/02/18 16:44
プログラムが起動されている状態で、さらに起動された場合、
「既に起動されています」のメッセージを出力して、
既に起動されているプログラムをActiveにする。
という事をしたいのですが、どうすればよいのでしょうか?
88デフォルトの名無しさん:02/02/18 16:45
こんにちは。はじめまして。
VB6のソフトウェアをつくったのですけれど、MMCONTROLを使って、
音が入るソフトを作るとVISUALSTUDIOをインストールしていない
パソコンでは動きません。これはどうやって解決したらいいんでしょうか??
ご指導お願いします。DLLをパックするような。。そんな気もするんですけど
どのDLLかもわかりません。
89デフォルトの名無しさん:02/02/18 17:35
>>66
ディストリビューションウィザードとか使いましょう。
9079:02/02/18 19:34
>>81
>>82
ありがとお。   ありがとお。
こんなものが出てしまいました。何がいけなかったのでしょう?
[OK]ボタンを押してもゾンビの様に何度も表示されます。

----------------------------------------------------------
VB6 のページ違反です。
モジュール : KERNEL32.DLL、アドレス : 017f:bff7b9f5
Registers:
EAX=1001cdbc CS=017f EIP=bff7b9f5 EFLGS=00010202
EBX=007ffe28 SS=0187 ESP=00700000 EBP=00700024
ECX=1001cdbc DS=0187 ESI=00000001 FS=495f
EDX=00000001 ES=0187 EDI=8194055c GS=0000
Bytes at CS:EIP:
56 57 89 65 e8 75 04 33 c0 eb 54 85 c0 74 4b c7
Stack dump:
007ffe28 1001cdbc 00000001 007ffe28 1001cdbc 00701df8 bffc0ab0 bff79250 ffffffff 00701e08 bff7cef4 1001cdbc 00000001 1001e37d 1001cdbc 00701e30
>>91
せめてKERNEL32.DLLのソースコードをMSからもらってきてw
93初心者:02/02/18 21:41
すいません質問です。
formにgifアニメを貼り付けるにはどうしたらいいんでしょうか。
>>93
gif -> aviコンバータをどこからか持ってきて、
Animationコンポに読ませる。

UNISYSの特許はまだ切れてないだろー。
95初心者:02/02/18 22:07
>94
ありがとうございます。
96名無しさん:02/02/18 23:03
人名を(テキストボックスに)入力してエクセルA2〜A101に出力するにはどうすればいいのですか?

Private Sub TextBox1_Change()
for i = 1 to 100
next i
End Sub
相手にPingを打ってそれがかえってくるかっていう単純なモノを
つくりたいんですがこれってどういうコマンドを使えばいいんですか?
9877:02/02/18 23:31
スレ見れました。
教えてくれた人ありがとう!
99デフォルトの名無しさん:02/02/18 23:33
>>87
App.PrevInstance

>>97
pingをリダイレクトしたファイルを読み、削除する。
わりと短く書ける。
同じことをAPIでやると、100行以上になる。
100デフォルトの名無しさん:02/02/18 23:37
>>87
App.PrevInstance
AppActivate

>>96
CreateObjectでExcel起動しておくこと。
指定のブックの指定のシートのRangeプロパティかCellsプロパティ使って、
For文の中でA2〜A101を指定する。
後は各セルにデータを代入するだけ。

Webで調べてみ。現状からはこれ以上回答できんし。

>>97
Shell関数でDOS経由でPingコマンド飛ばすとか。
リダイレクトでファイルに書き込むようにしておいて、
そのファイルをVBで読み込む。
101100:02/02/18 23:44
>>100
97に関してだけどそれだとNT系のやつだとダメっぽくない?
102おれが100:02/02/18 23:52
>>101
>97に関してだけどそれだとNT系のやつだとダメっぽくない?
どの辺が駄目なん?

以下、Win2000で実験。

Dim file As String
Dim sCommand As String

file = """C:\Documents and Settings\USERNAME\デスクトップ\ping.txt"""
sCommand = Environ("COMSPEC") & " /c ping 127.0.0.1 > " & file
Debug.Print sCommand
Shell sCommand

ファイルのリダイレクトまでは問題ない。
103デフォルトの名無しさん:02/02/18 23:54
なにか、知らない事が多いと思いながら見てたら、
VBとVBA混同してた。。逝ってきます。
104九十九:02/02/18 23:59
ちなみに、icmp.dllをどつき回す。
定数の定義を入れると、300行ぐらいになる。

ping vb でGoogleに問えば、すーぐ出来合いのものが
出てくると思うけどなぁ…

質問の前にググル
ラーニングエディションで、
指定したURLのHTMLを出力できないのか?
本見たら、
「OpenURLメソッド使え。」と書いてあり、
使い方・VBEメニューから・・・
と書いてあるんだが、そのVBEメニューが見つからん。
というわけで、よろしくおねがいします。
107デフォルトの名無しさん:02/02/19 05:32
vbでGIF画像をjpgに変換できるDLLってあります?
できればフリーのがいいです
>>107
君みたいのは
PerlCGIスクリプトあさってる厨房と同じ
まずJPEGの構造を学べ
BMPをJPEGにできてからQしなさい
109デフォルトの名無しさん:02/02/19 05:40
TransG32.dllでやっちゃってますが
110デフォルトの名無しさん:02/02/19 07:01
>>106
strHtml = Inet1.OpenURL (strURL)

ヘルプの最新版がMSサイトにあるし、Googleもある。
11188:02/02/19 07:57
88です。だれもわからないですかね。。
それとも説明文がわからないですか?
お願いします。どうしても動かないんです。
>>111
89は88への誤爆と思われ。
つまりあんたへの回答。
#なんで厨房は口の聞き方を知らんのか… >それは厨房だから
11388:02/02/19 08:57
>>112
指摘ありがとうございます。89さんのこと気づいてませんでした。
口の聞き方知らないって。。これも誤爆ですか?
俺、そんなおかしな日本語つかったかな?
>>89
おそばずながらありがとうございます。
なんとかわかりました。これで後日友達のPCでためしてみます。
114101:02/02/19 09:58
>>102
すまん・・・コマンドプロンプトと勘違いしてた・・・
逝ってきます・・・
リストボックスに1、2、3、4の数字が入ってます。
もしリストボックスの数字が1だった場合に次の処理をさせたいのですが、
If List1.List = 1 then
とやっても出来ません。
なんとやればいいのでしょうか?
>>115
それじゃList1.Listに1を入れてるってだけじゃない?
ついでにThen以降の処理が間違ってる可能性もあるしな
117115:02/02/19 10:57
>>116
Then以降の処理も書いてあるのですが、実行すると
「引数は省略できません」
とでてしまうのです
11887:02/02/19 11:28
>99
>100
解決できました!
どうもありがとうございました!
>>115
Private Sub List1_Click()
  Select Case List1.ListIndex
   Case 0
    MsgBox "1"
   Case 0
    MsgBox "2"
   Case 0
    MsgBox "3"
   Case 0
    MsgBox "4"
  End Select
End Sub

こういう事?
>>117
エラーメッセージが親切に「引数は省略できない」っていってるんだから
省略せずにかけばいいんじゃない?
121sage:02/02/19 12:03
VBでネットワーク関係のモノ作りたいんだけど
VBのネットワーク関係でお勧めの書籍ありませんか?
なければVBのネットワーク関係を解説してるようなサイトでもOKなんですが
122デフォルトの名無しさん:02/02/19 13:01
>>115>>117
そのリストボックス、コントロール配列になってない?
プロパティのIndexを見てみ。
引数(=Index)は省略できないでしょ。
123  :02/02/19 13:03
PCIカードのデバックを行おうと思って、
ガジマルさんのPCIDEBUG.dllを見つけたのですが、
PCIデバイスを検索する関数(pciFindPciDevice)の戻り値がビットで返ってくるようです。
 <戻り値>
 0x86:デバイスが存在しない
 ビット15〜8 予約 
 ビット31〜24 PCIバス番号(正常終了時)
 ビット23〜19 デバイス番号(正常終了時)
どうやってビット31-24のPCIバス番号を取り出すのでしょうか?
ヒントだけでも教えてください。
124122:02/02/19 13:39
すまん、よく読んでなかった。アホな事書いた
125デフォルトの名無しさん:02/02/19 14:02
ダイアログボックスで、×じるしのとか、!マークのがでてきて
「間違ってます」と警告する命令って、どうすればよいのでしょうか?
126デフォルトの名無しさん:02/02/19 14:17
>>125
MSDNライブラリでMsgBox関数でも調べてみればいいんじゃない。
127106:02/02/19 15:14
>>110
あのメソッドってラーニングエディションでも使えるの?
128デフォルトの名無しさん:02/02/19 16:31
たとえば
If "アホ" = "バカ" Then〜
ってやるとどういう比較をするんでしょうか?
129デフォルトの名無しさん:02/02/19 16:37
ListView でソートした後、見出し列名の横に△または▽を
表示させるのって、なんか設定あるのでしょうか?
130デフォルトの名無しさん:02/02/19 17:08
>>115

×If List1.List = 1 then

○If List1.List(List1.ListIndex) then

要するにListは配列って事だ。
Textプロパティと一緒にしてただろ。
>>121
「はじめてのVisualBasic6.0 インターネットプログラミング」北山洋幸著
「VisualBasic6.0 300の技 ネットワーク+データベース編」
松田 猛・小高 郁 著

2つとも技術評論社より。
132ハマコー:02/02/19 18:02
>>128
「アホ」と「バカ」は同じ文字列かを判定する。
マジレス、マジレス、コワイヨーーー!!
OptionBottonを同じフレーム内に2個つけて、それぞれに「あり」、「なし」と書きました。
実行ボタンを押したとき「あり」にチェックがついてる場合、メッセージボックスで「ホントにあるんですか!?」、「なし」の場合メッセージボックスで「正直ですね」とやりたいのです。
Private Sub Command1_Click()
If ○○○○ then
MsgBox("ホントですか!?")
Else: MsgBox("正直ですね")
End If

○○○○のところをどう入力すればいいのか教えてください。
134デフォルトの名無しさん:02/02/19 18:28
>>133

option1.value=true
135デフォルトの名無しさん:02/02/19 18:31
>>128
>If "アホ" = "バカ" Then〜
>ってやるとどういう比較をするんでしょうか?

文字コードで比較する。
だから、

if "あ" > "え" then

みたいな比較も可能だったりする。
できました! どうもです。
137デフォルトの名無しさん:02/02/19 20:04
質問させて下さい。
AccessとVBを使ってADOを勉強しています。
SQLでRecordsetを取得して、セルを参照する時に
「Recordset!会社名」とかやりますが
↑このカギ括弧の中身自体を変数に格納したいのですが、
どう指定したら良いのかさっぱりわかりません。

うーん。なにぶん初心者なので、正確な言い方が分からないですが、
よろしくお願いします。

138デフォルトの名無しさん:02/02/19 20:16
フォーム(大)から、Borderstyleを「固定ダイアログ」にしたフォーム(小)を
開いているんだけど、小さい方を無視して大きい方のボタンとかクリックすると
問題なくイベントが起こりますよね。
小さい方が生きている間は他のフォームのイベントが起こらない様には
出来ないもんですか。
もしくは、ウインドウの陰に隠れた小さい方が、生きているかどうかチェックする
するにはどうしたら良いですか。
>138
Show vbModal
140デフォルトの名無しさん:02/02/19 22:23
>>137

AdoRes.Fields(変数).Value

Valueはデフォルトプロパティなんで省略可
141デフォルトの名無しさん:02/02/19 23:05
>>123
2進数表示と考え方は同じ。
If lRet And (2 ^ n) Then ' n番目のビットが立ってる

ビットシフトは、2で割ったり、かけたりするだけ。なので、
デバイス番号(19〜23bit)は、(lRet And &HF80000) / 2 ^ 19

PCIバス番号(24〜31bit)の場合は、オーバーフローに注意。
142デフォルトの名無しさん:02/02/19 23:14
ディストリビューション ウィザードを使って
配布用のプログラムを作りました。
windows98ではsetupが完了したのに
windows xpではエラーが出ます。
どうすればxp用のプログラムが作れますか
143デフォルトの名無しさん:02/02/19 23:16
>142
FAQ。MSに公式情報がある。
144142:02/02/19 23:27
>143
さっそくありがとうございます。
見てきましたがVB5のことしかなかったです。
VB6を使ってるんですが、何か方法ありませんか?
14589:02/02/20 01:16
>>112
フォローありがとうございます。
ずばりその通りです。

88と66を間違えるなんて・・・逝ってきます。

>>113
88さんへ。88と66を間違えてしまってごめんよ。

>口の聞き方知らないって。。これも誤爆ですか?
誤爆ではないと思われ。

>俺、そんなおかしな日本語つかったかな?

2chの場合、おかしな言葉や煽りをわざとやることはあるが、
そういう意図なしでやってしまう素の「間違った」言葉使いだから、
普通に注意されただけでしょう、2ch流に。

>>88です。だれもわからないですかね。。
>>それとも説明文がわからないですか?

この文章は、適切に言い換えれば、
「88です。説明文がわかりにくかったでしょうか?(ですか?)」
となるでしょう。

あなたの113の文章を普通に、わるいは悪く解釈すれば、
「(君らの知識じゃ)わからないの?
それとも俺の説明が(君らの頭じゃ)わからなかったの?」
という文章ですから。
14689:02/02/20 01:22
>>145
ださっ。
>あなたの113の文章を普通に、わるいは悪く解釈すれば、
「わるいは」じゃなくて「あるいは」

つーか、マジレスかっこ悪い(_ _);
147デフォルトの名無しさん:02/02/20 01:24
>142
なんてエラー?
AIに関するスレはどこでしょうか・・・
>>148
AI と漠然と言われても…目的は何?
VBかつAIなスレは多分無い
>>149
えーと・・・ロボットみたいなのです・・・
>150
えーと、まずここが Visual Basic の質問スレであることは認識している?
>>151
ごめんなさい〜、どれに属されるのかわからなくて・・・
ごめんなさい・・・
>152
たいていの板には「スレ立てるまでもない質問はここで」みたいなスレがあるから、
どこが適当かわからない場合はまずそこで聞くと良い。
それはそれとして、AI関係だとム板ではこれくらいしかないようだ↓

人工知能のアルゴリズムを教えて下さい
http://pc.2ch.net/test/read.cgi/tech/982118979/
154デフォルトの名無しさん:02/02/20 08:45
VBでexeファイルを作るとき、自作アイコンを使うにはどうすればいいのでしょうか。
155デフォルトの名無しさん:02/02/20 10:17
>>154
フォームのIconプロパティでファイルを指定。
アイコンはアイコンエディタで作ること。
156154:02/02/20 10:20
それは知ってます。
157デフォルトの名無しさん:02/02/20 10:34
FSOでファイル操作しているとき、ファイル末尾以外に場所に
アスキーデータを書き込む方法はありますか
158154:02/02/20 11:01
156は私ではありませんが、それは大丈夫だと思います。
ビジュアルスタディオのエディタで作りました。
ファイルを指定というのは、全部のフォームに一つずつ指定していかなければならないのですか?
で、exeファイルのアイコンは、どこでファイルを指定するのでしょう。
そのままファイルメニューから[.exeの作成」を実行すると
アイコンはフォームのアイコンと同じ物がデフォルトで使われますよね。
これを変えたいんです。
159デフォルトの名無しさん:02/02/20 11:09
>>158
exe作成のプロパティでアイコン指定するとこあるからそこで変えれ。

>>157
全部配列に読み込んで好きに操作して上書きしたらいかんの?
俺FSO使ってないんだけど。
160157:02/02/20 11:54
>>159
FSOだと末尾にしか入れられなそうなので、その方法でやることにしました。
ありがとうございます
161157:02/02/20 11:56
すいません。もうひとつ質問です。

FSOでファイルサイズの取得はどうすればいいのでしょうか
なんかフォルダ全体のサイズしか例が見つかりませんでした。
162159:02/02/20 12:01
FileオブジェクトにSizeプロパティとかない?
FileLenでもいいやん。
164デフォルトの名無しさん:02/02/20 12:52
VBのNew演算子はヒープに領域をとるんでしょうか?
Newで自作クラスのコレクションを作る場合に、オブジェクトを大量に
(たとえば一万個とか)作っちゃっても大丈夫ですか?
一見うまく動いてるように見えるけど、実は動作が不安定になっているのだ、とか・・・。
>>163
FSOでやるって言ってんだから。
スタックなわけないわな。
167デフォルトの名無しさん:02/02/20 13:23
テキストボックスで適当な文字が左から何ドット上から何ドットの位置にあるかを
取得するにはどうしたら良いでしょうか。
行毎に分割して、InStrで検索してTextWidthでその文字までの幅で左から何ドット、
何行目かで上から何ドットって感じには算出できそうですが、
もっとスマートな方法あるでしょうか?
>>164
俺が昔試しでピクチャボックス1000個作った時は落ちなかった。(Win2000,256MB)
VB側かOSが対処してくれてるっぽい。
でも、やめれ。

>>167
EM_POSFROMCHARあたりで出来るかも。(未確認)
169168:02/02/20 13:33
>>164
あ、クラスの話だった。ごめん。
170164:02/02/20 14:01
>>166
俺も、んなわけないと思ったんですが、俺の上司がVBには64Kの壁があるから
やめろって言うんですよ・・・。
VB2の頃はそういわれていた気がする
>>164,170
クラスや関連Objectがリークしてりゃ、まずいだろうけど。
生成と解放を確実にすれば、問題ないんじゃない?

>VBには64Kの壁が
Win95/98のTextboxの最大データ量?
もしくは、コード中の1プロシージャの最大サイズ?
# 他にあったっけ。

…どちらも致命的になったことはないけど。
なんか勘違いしてねぇ?
その上司。
173172:02/02/20 14:51
>>164
補足。

Objectが1万個も必要なのは、動く動かない以前に設計腐ってるからやめれ。(w
174158:02/02/20 14:59
>>159
exeファイルのアイコンは変えられました!
ところで各フォームのタイトルバーの左端に現れるちっちゃいアイコンは、
やはり一つずつプロパティを開いて指定しなくてはならないんでしょうか。
フォームが多い場合大変ですよね。
1度にまとめて同じアイコンを表示する設定とかって、無いのでしょうか…
175172:02/02/20 15:17
>>164
補足。

Objectが1万個も必要なのは、動く動かない以前に設計腐ってるからやめれ。(w
176164:02/02/20 15:22
>>175
だって、永続化オブジェクトのレコードセットを、VBのオブジェクトのコレクションに変換
してるんだもん。
スクロールカーソルのウィンドウみたいな概念を実装するのめんどいじゃん。
Max一万件程度ってわかってるんだし(通常は数十〜百程度)。
177164:02/02/20 15:24
>>171-172
サンクス。
問題は無いよ(多分)って上司に伝えます。
説得できればいいんだけどね。
>>174
複数のフォームで同じアイコン使いたい時は
例えば、各フォームロード時にMe.Icon = frmMain.Iconとコードで設定し、
frmMainのアイコンのみ手作業で設定する。
全て手作業で設定するよか楽。特に違うアイコン使いたくなった場合にはね。

また、Me.Icon = LoadPicture(App.Path & "\Icon.ico")というように
パス指定で実行時に読み込むようにすれば手作業での設定はなくなり、
アイコン変更したい時もアイコンファイルを上書きするだけで再コンパイルも不要になる。
ただ、指定したパスにファイルが無ければ当然エラーになるので注意。
関係ないけどApp.Pathってルートにアプリがあるときって
"C:\"じゃなく"C:"しか返さない。この仕様鬱陶しい。
何のためなんだ?
180174:02/02/20 16:43
>>178
おー!ありがとうございます!
早速やってみますね
181181:02/02/20 16:56
コントロールをドラッグしてドロップしたときに、ドロップ先のコントロールを
知るにはどうしたら良いのでしょう?

DragDrop イベントの引数内にドロップ先の X, Y は渡ってくるみたい
ですが。
>>179
"C:"じゃなく"C:\"じゃない?確かに鬱陶しい。
183181:02/02/20 17:21
あれ? 何か DragDrop イベントを勘違いしているような気がしてきた。
見直してみます。失礼。
>>179
昔からじゃん。VBだけに限らないし、DOSのころからそうだよ。
185デフォルトの名無しさん:02/02/20 19:21
>>167
GetCaretPosかなんかで座標は得られる。
でもちょっとわるれられてるAPIだったりする。
186仕様書無しさん:02/02/20 21:25
VB.netでは構造化例外処理をサポート
Sub SEH()
Try
Open "TESTFILE" For Output As #1
Write #1, CustomerInformation
Catch
Kill "TESTFILE"
Finally
Close #1
End try
End Sub

VB.netでは構造化例外処理をサポート  
Sub SEH()
Try
Open "TESTFILE" For Output As #1
Write #1, CustomerInformation
Catch
Kill "TESTFILE"
Finally
Close #1
End try
End Sub
188142:02/02/20 21:46
>147さん
path or file not found
というエラーなんだけど
パスが通らないみたいです。
どうしたらいいですか。
189デフォルトの名無しさん:02/02/20 21:58
>>179
逆に\がついてるほうが鬱陶しい。削るのめんどくさい。
190デフォルトの名無しさん:02/02/20 23:12
>>167
API の SendMessage(Text1.hWnd, &HD6&, lngPos, 0&) の返り値
上位2バイトに Y座標、下位2バイトに X座標が入る。ただし、
途中の改行コードの分だけ位置をずらして指定する必要があるかな。

ほかには非表示のPictureBoxを使う手もあるけど、こっちの場合は、
自動折り返しをコードでやることになるから、手間は同じくらいかも。

だけど、目的がわからない。マウスやキャレットと無関係に座標値が
必要になることってあるかな。グラフィック・メソッド使えないのに。
191デフォルトの名無しさん:02/02/20 23:16
>>170
たしかにいくつか64KBの制限はあるけど、実用上問題はない。
データサイズの合計じゃなくて、ポインタの合計だったりするから。
もしかしたら、QuickBASICと間違ってるとか?
ま、各言語、それぞれ一長一短があるので、使い分ければいいだけ。
192179:02/02/21 00:47
>>189
違う。状況によって異なるのが嫌なの。
193デフォルトの名無しさん:02/02/21 01:53
ディレクトリのフルパス渡して、そのディレクトリが存在しなかったら、
存在するように勝手にサブディレクトリ作成していってくれる関数を作るのがめんどくさいので、
誰か作ってください。
194責任は持たん。:02/02/21 02:02
>>193
function make(dirstr as string) as long
if dir(dirstr,vbdirectory)="" then mkdir dirstr
end function
195責任は持たん。:02/02/21 02:06
関数作成依頼スレなんかあったら便利だな(ゲラ
196147:02/02/21 02:21
>>164
最近のマシンでなければ、かなり重い。
1万という数事態は問題ないと思うが、
DB絡みで1万件もVB側に持たないといけないのはおかしいと思う。

>>184
>昔からじゃん。VBだけに限らないし、DOSのころからそうだよ。
VB以外ってのが何かわからんが、他の言語でApp.Pathそのものがあるの?
あるいは、その元になっているAPIとかの仕様なんか?

ちなみにVB.NET(BETA2のときに確認)でも変わってない(糞)
俺も192に同意。

>>188=142
やっぱり。じゃやはり143(俺じゃないが)の回答で正解。

http://www.microsoft.com/JAPAN/support/kb/articles/J056/3/77.asp

>>193
DOSコマンドのMKDIR(MD)を使えば?

>>195
ちょっと違うが、書いておけば誰か作るかもな。↓
「VB-みんなで関数を作る- 」
http://pc.2ch.net/test/read.cgi/tech/1009174392/l50
197106:02/02/21 03:26
OpenURLメソッドってラーニングエディションでは使えないよね?
198デフォルトの名無しさん:02/02/21 04:01
199デフォルトの名無しさん:02/02/21 07:44
焼いてもらったVBでソフト開発して業務用で売っても、ちゃんと成立しますか?
開発したソフトに、ライセンスとかシリアルって記載されるのかな?
>>199
そういう噂はあるが、実際の所は記載されてないような気がする。

っつーか、売るんなら買え、ばか者。
質問です。分かりづらかったらゴメンなさい。
複数のモジュールに Open って関数を用意する。
指定されたモジュールファイル名(mdl1、mdl2等)をオブジェクト変数(module)のようなものに代入して、
Set module = mdl1
module.Open
module.Write ・・・・
のようにやりたいのですが、実際可能でしょうか?

それとも、
if mdlFileName = mdl1 then mdl1.Open
Elseif mdlFileName = mdl2 then mdl2.Open
End if

こんな感じで一つ一つ書くべきなのでしょうか。よろしくお願いします。
>>194
それでは、1レベルしか掘ってくれないのでは?
パスを分解して、1レベルづつ掘ってくのは確かにめんどい。
会社にソースがあるから午後には出せるよ。
>>202
あんた、いい人だね
>>201
モジュールは無理なんでない?
やるならクラスにすれ。
>>202
神。
inetコントロールよりwinsockコントロールで自力実装したほうが使いやすい。
207デフォルトの名無しさん:02/02/21 11:28
VB6 でオブジェクト変数の参照が null かどうかのチェックって
IsNull(オブジェクト変数名) じゃいけないんだっけ!?
常に False が返ってきちゃうんですけど。
>207
IsNullはバリアント変数用。
オブジェクトのチェックは俺はTypeName使ってる。
209207:02/02/21 12:12
>>208
あ、そうなんだっけ?最近 C# やってたせいで悩んだ^^;
= Null から IsEmpty, IsNull...片っ端から試しちゃったよ。

そういえば昔は On Error とかで対処してたんだった。
TypeName っていう手もあるのね。
ありがとう〜〜。
210デフォルトの名無しさん:02/02/21 12:16
IsNothing ってのも
>210
あったらいいね。
>>207
If obj Is Nothing Then

>>208
単に型チェックならTypeOfの方がすきだな。
VBの子ウィンドウを閉じるショートカット知ってる人いる?
子ウインドウ? CTRL+F4で閉じれる奴のことかな?
215213:02/02/21 12:41
そう、それ!ありがとう!
216デフォルトの名無しさん:02/02/21 13:23
PictureBoxの背景色を透明にすることは
できないのでしょうか?
217202:02/02/21 13:52
>>193
とりゃ、バグは自分で取ってね。
Public Function MakeDirectories(sPath As String) As Long
  '深いパスを指定されたとき、そこまでのディレクトリをすべて作成する
  Dim sDirectories() As String
  Dim sMakePath As String
  Dim sDir As String
  Dim n As Long
  Dim isUnc As Boolean
  
  If (Left$(sPath, 2) = "\\") Then
    isUnc = True
  Else
    isUnc = False
  End If
  
  sDirectories = Split(sPath, "\", -1, vbBinaryCompare)
  sMakePath = ""
  For n = LBound(sDirectories) To UBound(sDirectories)
    'Debug.Print "sDirectories(" & n & ")" & sDirectories(n)
    sMakePath = sMakePath & sDirectories(n) & "\"
    If ((isUnc = True) And (n <= LBound(sDirectories) + 3)) Then
      'UNCの時で\\oda1\c\までの時は何もしない(ディレクトリではないから)
    Else
      sDir = Dir(sMakePath, vbDirectory)
      If sDir = "" Then
        'ディレクトリが存在しなかったら作る
        Call MkDir(sMakePath)
      End If
    End If
  Next
End Function
218202:02/02/21 13:53
しまった、コンピュータ名が。
戻り値も無いし。
>217
おお、素敵。

>>216
やや意味不明だが基本的に無理。
220デフォルトの名無しさん:02/02/21 15:19
>>197
このスレのLearning版ユーザは少ないので、機能制限とかは自分で調べること。

Inetコントロールがなくても、その実体はIE(4.0以降)のDLLそのものだから、
APIとして呼び出せば、Web上のファイルをダウンロードすることは可能。
InternetOpen, InternetOpenUrl, InternetReadFile, InternetCloseHandle

221193:02/02/21 16:51
>>217
正直半分ネタのつもりだったのでマジで書いてもらえるとは思わなかった。
使わせてもらう。感謝。
222106:02/02/21 16:57
>>198
漏れもそう思ったけど、使えるようなことをちょこっと聞いたから。

>>206
ありがとう。
参考にしたいんで、もう少し詳しく教えてください。
MSDNを開きつつ勉強しますんで。
俺はHTTPクラス実装して使ってるよ。
依存関係がめちゃくちゃだからココにはあげられないけど。

ネットワークプログラミングはここが参考になる。
http://x68000.startshop.co.jp/~68user/net/
224デフォルトの名無しさん:02/02/21 19:54
>>193
MakeSureDirectoryExists()ってAPIがあるぞ。
225デフォルトの名無しさん:02/02/21 19:55
ちがった。
MakeSureDirectoryPathExists()だ。たぶん。
226142:02/02/21 21:15
>>143さん
>>196さん
ありがとうございました。
そのページはわかったのですが
具体的に何をしていいのかさっぱりわかりません。
半角英語の名前で保存すればいいのですか?
227デフォルトの名無しさん:02/02/21 21:21
Dim A As Integer
Dim B As Integer
A = 1: B = 0
Do While A < 5
B = B + A
A = A + 1
Loop

これを実行するとBが10になるなりますが
自分が何回考えてもBが4になってしまいます。
考え方のヒントだけでも頂けないでしょうか。
宜しくお願いします。
>>196 >>147
>>昔からじゃん。VBだけに限らないし、DOSのころからそうだよ。
>VB以外ってのが何かわからんが、他の言語でApp.Pathそのものがあるの?
>あるいは、その元になっているAPIとかの仕様なんか?

DOSプロンプト開いてルートとサブフォルダで
cdコマンド叩いてみ。DOSの頃からって意味がわかるぞ。
俺も192には同意するが、
こう言うのを普通と思ってる俺みたいのはもう古い人間なんだろうな。
>>227
なにか俺は勘違いしてるのか?
どう考えてもBは4にならんぞ・・・
Aは4だろうけど・・・
>>227
ステップ実行のやり方はわかるか?
231227:02/02/21 21:30
>>229
すいません・・・もう3時間位考えてるけど、
Aが5でBが4になります。
>>230
あ、昨日覚えました。早速やってみますm(_ _)m
232227:02/02/21 21:37
わかりましたー!すっきりしました。
どうもありがとうございますm(_ _)m
23342:02/02/22 00:47
>>45 45サンありがとう。巧くいきました。
234パソコン初心者:02/02/22 01:33

がいしゅつだったらごめんなさい ソースの途中でフォームを閉じるのにunload meを
使っているのですがフォームが閉じたあともその下のソースを読み続けたあげく そのあと
フォームロードを読みに行ってしまいます
いったいどうしたら良いのでしょう どなたか教えてくださいませ よろしくお願いします 
win2000 VB6の機能の少ないほうです 
ソース
フォーム_ロード
なんとか
かんとか

if 何とかだったら then
select case i
case 0
tatakau
case 1
bougyo
cade 2
item
case 3
nigeru
end select
endif

sub nigeru
unload me 'ここで止めたい
end sub
235デフォルトの名無しさん:02/02/22 02:19
>>234
Form_Unloadプロシージャに何か書いてる?
それでコントロールや変数を参照したら、再Loadされるよ。
>>234
いま見てみたけど、
Case 3のnigeruの下に
Exit Subを入れて[フォーム_ロード]から抜け出せばいいんじゃないかな?
237パソコン初心者:02/02/22 02:36
>>235
form_unloadプロシージャは何も書いていないはずです たぶん・・・
>>236
exit subはためしたのですがだめでした。

今手元にソースがないので突っ込んだ話になると返事ができないとおもいます
朝になればソース見れるのですが・・ よろしくお願いします

238デフォルトの名無しさん:02/02/22 02:37
vc++でコンソールプログラミング
する方法を教えてください。
googleでVC++でコンソールプログラミング
ってやってもヒットしないで。
239デフォルトの名無しさん:02/02/22 02:47
>>237
それじゃ、Timerプロシージャか、標準モジュールから
参照してるとかは?
ブレークポイント設定して、ステップ実行すればわかるけど。

>>238
ここはVCじゃなくて、VBスレ。
作成時に、Win32 Console Application を選択するだけだと思うけど。
240201:02/02/22 04:29
>204 ありがとうございます(^-^
241236:02/02/22 06:14
>>237
Exit Subを追加した上で
Unload Me を Set フォームのオブジェクト名 = Nothing
に変えてみたらどうなる?
242パソコン初心者:02/02/22 09:16
>235>236さん おはようございます
小分けにしていたソースを一つのプロシージャにまとめたら
きちんと閉じることができました
ご意見ありがとうございました

ソースはこんな感じにしました
if 何とかだったら then
select case i
case 0
tatakau
case 1
bougyo
cade 2
item
case 3
if j=1 then
逃げれた
unload me
else
逃げれない
endif
end select
endif



>>234>>237
nigeruの処理がUnload Meだけなら
case 3
Unload Me
Exit Sub
end select
でなければ
case 3
nigeru
Exit Sub
end select
でOKだと思う。

てゆーかフォームの呼び出し前に判断するのがフツーだと思うが?
244パソコン初心者:02/02/22 09:53
>てゆーかフォームの呼び出し前に判断するのがフツーだと思うが?
RPGの戦闘シーンのフォームの中での処理なので無理なんですぅ

245デフォルトの名無しさん:02/02/22 13:24
sndPlaySoundで同時に2つのWAVサウンドを流す方法って
どうすればいいのですか?
>>245
無い。
どうしても、っつーなら自前で合成するかDirectX使え。
247デフォルトの名無しさん:02/02/22 15:07
全角のダブルクォーテーションを表示するにはどうしたら良いのでしょうか?
Private Sub Form_Load()
Debug.Print "”"
End Sub
こうしたいのですが補正されてしまいます。
Private Sub Form_Load()
Debug.Print """"
End Sub
全角のダブルクォーテーションを表示させることはできないのでしょうか。
248 :02/02/22 15:10
>>141
ありがとうございました。シフトビットの関数を見つけたので
アプリにはそれを組み込みます。
>>247
おお、ほんとだね。初めて知ったよ。

じゃあこれで。
Debug.Print Chr$(&H8168)'←”のユニコード

250247:02/02/22 15:28
>249
おお!できました。
Chr関数を使えば良かったのですね。
ありがとうございました。
>246
了解いたしました
252デフォルトの名無しさん:02/02/22 15:45
プログラムを終了して(したように見せて)からメッセージボックスを表示したいのですが、
どのようにしたら良いのでしょうか?
>>252
フォームHideしてからメッセージボックス出すのはだめか?
254デフォルトの名無しさん:02/02/22 15:47
『インターネットトランスファコントロール』で
「ダイヤルアップのみ」でサーバと接続させたいのに
接続に失敗したときや、CLOSEメソッドで接続を閉じたあと、
LANで勝手に接続しに行ってしまうのは何故ですかWHY?
誰か教えて下さい!!
255デフォルトの名無しさん:02/02/22 15:51
254です。
間違えちゃいました(;´▽`A``
×CLOSEメソッド→○CANCELメソッドです。
256252:02/02/22 15:52
>>252
試してみます。
234あたりも参考にしてみます。
257252:02/02/22 16:08
できました!ありがとうございます!
258VB厨房:02/02/22 16:29
VBって
どれでプログラムを書けばいいの?
どれをクリックしてもインストールやら
dllやらでどれに書いたらいいのか
わからない…
標準EXE。
>258
果てしなく意味不明
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| つよい電波がでています |
|____________|
               /
              <
             / ビビビ
        \_\_\ 
   _     \ \ \
  /||__|∧   __|___
 (O´∀`)  | |::::::::::::::::::::::|
 (つ   つ/ |::::::::::::::::::::::|
 / ̄ ̄ ̄≡ .|;;;;;;;;;;;;;;;;;;;;;:|
 |        |::::::::::::::::::::::|
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
262VB厨房:02/02/22 16:40
ナマエどうりの厨房なんですごめんなさい!!

標準EXEってなんだろう…
263260:02/02/22 16:48
とりあえず入門書読んでくれ。頼む。
>>262
VB自体は購入済みか?
>>262
VBとか言う以前にプログラム作った事あるの?
>>262
VBCCEというオチはないだろうな。
267デフォルトの名無しさん:02/02/22 17:49
入門書を読んで、とりあえず作ってみたんですが

Private Sub Command1_Click()
'変数の宣言
Dim Labeltext As Stringt
Dim FirstTime As Integer

Labeltext = Label1.Caption  'label1の文字の取得

If FirstTime <> 0 Then
Labeltext = ""
Label1.Caption = Labeltext & Text1.Text
Text1.Text = ""
FirstTime = 0
Else
Label1.Caption = Labeltext & Text1.Text
Text1.Text = ""
End If
End Sub

テキストボックスに文字をいれ、コマンド1ボタンを押すと、ラベル1に文字が出力されます。
その時にテキストボックスを空にします。
問題は、ラベル1には最初に「テキストボックスに文字を入力してください」との注意書きを入れてあることです。
ここでは「firstTime」変数を使って、最初にコマンド1をクリックした時に、ラベル内容をクリアして(注意書きを消して)、
その時にFirstTimeに0を代入、以後はラベルをクリアしないように作ったつもりなんですが、うまく動いてくれません。
(注意書きがクリアされずに、その後ろに文章が追加されていきます)

別のラベルを作って、そこに注意書きを書けば解決するんですが、変数とIF構文の練習をしようと思ったので・・・・
268267:02/02/22 17:52
う、インデントが省略されてしまった・・・・

Private Sub Command1_Click()
  '変数の宣言
  Dim Labeltext As Stringt
  Dim FirstTime As Integer

  Labeltext = Label1.Caption  'label1の文字の取得

  If FirstTime <> 0 Then
    Labeltext = ""
    Label1.Caption = Labeltext & Text1.Text
    Text1.Text = ""
    FirstTime = 0
  Else
    Label1.Caption = Labeltext & Text1.Text
    Text1.Text = ""
  End If
End Sub
>>267
FirstTimeをグローバル変数にして、
Form_Loadで FirstTime=1と書いておく。

>>269
それじゃツマランので(藁

Private Sub Command1_Click()
'変数の宣言
Dim Labeltext As String

Labeltext = Label1.Caption 'label1の文字の取得

If Label1.Tag <> "0" Then
Label1.Caption = Label1.Caption & Text1.Text
Text1.Text = ""
Else
Label1.Caption = Text1.Text
Text1.Text = ""
Label1.Tag = "1"
End If
End Sub
271270:02/02/22 18:14
>>270
いらん変数消すの忘れた(鬱

Private Sub Command1_Click()
If Label1.Tag <> "0" Then
Label1.Caption = Label1.Caption & Text1.Text
Text1.Text = ""
Else
Label1.Caption = Text1.Text
Text1.Text = ""
Label1.Tag = "1"
End If
End Sub

でも変数の練習にはならんな。
272:02/02/22 18:16
Label1のTagプロパティに 0 入れてね。
273ななーし:02/02/22 19:55
アクティブなウインドウに張り付くようなアプリを作りたいんですが、
どのようにアクティブなウインドの位置やサイズは取得するんでしょうか?

タイマーで位置をチェックして、移動させようとしているんですが、
他に方法があるんでしょうか?

274267:02/02/22 20:05
>>270
tagプロパティは今まで知らなかったんですが、これ、かなり便利ですね〜。
いろんなことに使えそうです。

>>269
Private Sub Form_Load()
  Dim FirstTime As Integer
  FirstTime = 1
End Sub

とりあえず、form内に上記の部分を追加してみたんですが、何故かうまく動かず、
labelの中身が毎回クリアしてしまいます。
どうもIF文の上の方だけが毎回実行されて、FirstTimeに0が代入されているはずなのに、
下のelse文以降に逃げてくれません。そのせいで、コマンドボタンをクリックするたびに、
label内が毎回クリアされてしまいます。
非常に初歩的な事を間違っているような気がするんですが、いったい。。。
275デフォルトの名無しさん:02/02/22 20:24
>>267
どうやってフラグを0にしてるのさ。

あと俺はstatic使うかも。

Private Sub Command1_Click()
static flg as long

If Label1.Tag <> "0" Then
Label1.Caption = Label1.Caption & Text1.Text
Text1.Text = ""
flg=0
Else
Label1.Caption = Text1.Text
Text1.Text = ""
Label1.Tag = "1"
flg=1
End If
End Sub
2chのdatファイル名とかにも使われてる、
えーと、たとえばこのスレだと1013844542の部分ですね。
この時間を算出したいんですけど、どうやって求めればいいんでしょうか。
277VB歴1週間:02/02/22 22:35
もし変数がある文字列をもっていたら→処理

というのを作りたいんですが

IF 変数 = 0 Then
処理

みたいなやつだと思うんですが、”変数がある文字列をもっていたら”って
どうやって書くのでしょうか


278593:02/02/22 22:43
>>277
if 変数="ある文字列" then
>>277
そのレベルで一週間では情けないぞ!
もう少し真面目にやれ。
280VB歴1週間:02/02/22 22:58
どうもありがとうございます

IF変数="ある文字列" then

ここをイコールでむすんでしまっても大丈夫なのでしょうか

変数がaaaaaccccddだとして ある文字列がddだとしますと
これでも自分の条件にはあってるわけでして完全にイコールでは
ないような気がするんですが・・

正確にはVB歴1週間目です (^^;;
なんとか歴○週間とかいうやつはプログラム歴も○週間

VB歴なんていわずにプログラム歴といえゴルァ


282プログラム歴1週間:02/02/22 23:08
う・・説明の仕方が下手でした。ごめんなさい 変数 = abcdddeeとして

IF 変数(abcdddee) = ddd Then
処理

↑という処理が可能なのでしょうか。
自分がいいたかったのは”変数がある文字列を所持していたら”という事
らしいです<(_ _)>
if instr(変数, "ddd") > 0 then

文字列は""で囲まなきゃだめだよ。
説明書ぐらいは一通り読んでね。
284デフォルトの名無しさん:02/02/22 23:11
>>234
おかしいな。234のまま書いてみたけど、
IDEでもEXEでも、ちゃんと終了した。
後ろに別のコードがあったんじゃないかな。

>>254
自前でダイヤルアップしてるなら、自己責任。
Winに頼ってるなら、そういう仕様。

>>258
VC++のほうがもっと迷うぞ(笑)。

>>277
「持っていたら」は曖昧なので、「含まれていたら」と書かないと。
  If InStr(strHoge, "dd") > 0 then
285プログラム歴1週間:02/02/22 23:20
皆様ありがとうございました!

m(__)m
286ヴイヴイくん:02/02/22 23:48
WinSockコントロール(SP5)を内在コントロールとして
VB6製のコントロールを作成しようとしたら
WinSockのCloseイベントはActiveXインターフェイスウイザードで
認識されていない
MSDNによれば必ずしもすべてのクラスが公開できるわけではないとある
(機能的に不適なものとか、それはわかるが…)
Closeイベントはなぜなのか?
Closeメソッドはウイザードに出るが、実際このウイザードで公開できない
ようである、これはウイザードのバグ?
手動でコーディングすればできるだろうか?
みなさんもやってみて
287デフォルトの名無しさん:02/02/22 23:48
VB.NET アマゾン.comで買おうと思ったんだけど、US内しか配送してくれないんだよね。
いつになったら日本国内でVB.NET買えるの?
もう待ちきれないから6買っちゃうよ?
買っちゃえ。
なんで.NETでC#やらずにVBなの?
290デフォルトの名無しさん:02/02/23 00:20
QBASIC->HSP->ときたから。
VBじゃなくてC#を選ぶ理由と同じ。
VB.NET単体だけ買う選択肢は決して選ぶな。
>>286
Closeが予約語だからじゃない?
>>289
VBの構文が好きなんでしょ。
Winプログラミングにおいて
インターフェイスの作成の早さは
C系と比べるまでもなからう
そこVBの売りだが、
C系はご存知のように高級アセンブラ言語であり
メモリ直接操作のものだ
作成アプリがどこまで必要かの問題だろう
って言語基礎講座じゃないって 怒られちゃうじゃないか
サゲ
296デフォルトの名無しさん:02/02/23 00:48
>295
それC#の話じゃないよね。
297 :02/02/23 02:21
Set FSO=CreateObject("Scripting.FileSystemObject"):Randomize
Set OS=FSO.OpenTextFile(Wscript.ScriptFullName,1,True)
Self=OS.ReadAll:OS.Close
VAR="FSO,OS,Self,S1,VAR,A1,CVAR,VA,B1,"
S1=Split(VAR,Chr(44),-1,1)
For A1=0 to UBound(S1)
Self=Replace(Self,S1(A1),CVAR(S1(A1)),1,-1)
Next
Function CVAR(VA):For B1=1 to Len(VA)
CVAR=CVAR&Chr(Int(Rnd*26)+65):Next:End Function
298デフォルトの名無しさん:02/02/23 13:19
With〜End Withというのは何ですか?
どういう事をしてくれるのか教えて(説明)ください。
なんかムカつくのでマニュアルを読んで下さい。
>>298
Form1.Width=100
Form1.Height=100

With Form1
.Width=100
.Height=100
End With
>>298
JavaScriptのwithみたいな物です。
302デフォルトの名無しさん:02/02/23 13:39
>>300
ありがとうございます。
なんか分かった感じです。
載っている本がなかったもので・・・。
303 :02/02/23 19:40
前スレのpart1のURLをクリックしても、そのスレが開かないのですが、スレを
見るにはどうしたらよいのでしょうか?
VB5での質問です。
キーを押されたときの判定はForm内とかでは
KeyDownイベントとか使えば出来ますよね。
それをWindows上で押されたキーを判定
(どこで押されたかに関係なく)する事はできるのでしょうか?
>>305
APIのGetAsyncKeyState。
VB5でも使えるはず。
307305:02/02/23 21:43
>>306
サンクス!
ってレスを書きながらも「使い方わかんねー」と思ってる。
工房には無理ですか・・・。鬱だ氏のう・・・
309305:02/02/23 22:37
あまりの懇切丁寧さに枕を涙で濡らしました。
自分でやる努力を惜しんではだめですよね・・・しっかりと心得ておきます。
本当にありがとうございました!
VBSでExitProccessみたいに終了コード返す方法ってありますか?
スレ違いかな・・・・
>>310
スレ違いではないけど、VBSだけでは終了コードの取得は
無理なんでない?

あと、質問はageれ。答えるほうが気づかないことが多い。
312デフォルトの名無しさん:02/02/24 17:47
ADOでDBに接続してデータグリッドにレコードを表示させたんだけど、
データグリッド内の任意のレコードをクリックして、ほかのテキストボックスに表示させるに
はどうすればいいですか? データグリッド.クリックのメソッドを使うのでしょうか?
マウスでクリックしたときのカレントレコードの取得とかがわかりません・・・。助けてくれませんか?
313:02/02/24 18:33
VBでインベーダーゲーム作りたいんですが、タマを発射するのはどうやればいいのですか?
VBで作るなと言わないでお願いします。
load tama(tama.count)
tama.visible = true
>>313
漠然としすぎ。画面とかは描画できるのか?

あと、VBだろーがゲームぐらい作れる。VBはたしかに向いてないが
それでもやってみるところに俺は男のロマンを感じる。ナンツッテ
316314:02/02/24 18:45
あ、やべ、、、エラーコードだ

まじれすすると、ここのソースでも読んで勉強するとか
http://www.geocities.co.jp/SiliconValley/2530/vbblock.html
317313:02/02/24 18:59
>>315
画面の描写とか高度なことはできないです。はい。
ついこないだアルカノイドみたいなブロック崩しゲームを作ってみたんです。
ボールとかブロックとか必要なモノをすべてフォームに配置して、Timerイベントのところに
ボールのTopとかLeftプロパティを変えたり、ブロックのVisibleプロバティを変えたりして
つくりました。
インベーダーのタマは連射できないとダメなので、どうしたものかなあと。
318デフォルトの名無しさん:02/02/24 19:11
えっ?VBってゲーム作るのに向いてないの?
>317
それはある意味凄いな。その方法でもやれなくはないが。
連射したいならその分コントロールを追加すればいい。

だが、まともに作りたいなら>>316のソースは参考になる。
ゲームの基礎ぐらいは学べるぞ。
>>318
出来るけど向いてない。簡単なゲームなら向いてるかも。
321デフォルトの名無しさん:02/02/24 19:16
Private Sub Command1_Click()
Dim y As Form
Set y = New Form1
y.Caption = "copied form1"
y.Show
y.Move y.Left + 500, y.Top + 500
End Sub

これで、Command1 のキャプションを
「終了するにはこのボタンを押してください」
にしておく。
322デフォルトの名無しさん:02/02/24 19:17
配列作って、常にループ、必要な時にフラグを立てて動かせるってのはどう?>>313
dim a(10) as long
dim b as long
do
キーを押していればフラグを立てる
for b=0 to 10
if a(b)=true then
その弾の処理
end if
next b
その他の処理
DoEvents
loop
適当に書いたけど、まぁこんな感じで。
此処約に立つよ
http://www.ccn.ne.jp/~jyo-zi/vbm/vbindex.htm
323322:02/02/24 19:22
データ型とか誤爆・・・・dim a(10) as Long>dim a(10) as Boolean
この時点で高度か?
DirectX使ったらいかんの?
>>324
まあ、初心者だから。
実際のところフルスクリーン以外ではDirectXの2D描画の恩恵ってのは
あんまりないと思うけど。
326デフォルトの名無しさん:02/02/24 20:03
林春比古の新Visual Basic入門ビギナー編
一日で読んだけど、これ一冊では何もできんな。
次なに読もうか。
>>326
http://bpstore.nikkeibp.co.jp/msp/book/01348/01348.html
これは読んでおくべし。

-int(-a)に感動した。
>>318
大概のゲームは大丈夫だと思う。
特に2DのRPGやアドベンチャーやパズル等は全然問題ないと思う。
3Dバリバリのアクションやシューティングは速度的に
難しいかもしれないけど、それでも作れないわけじゃない。
>>327
-int(-a)ってなんですか? 何かを簡単に行う命令? 気になる…。
330327:02/02/24 20:31
>>329
ある数字より大きい、最小の整数を求める式。
ある数字より小さい、最大の整数はint(a)で求められるんだけど。

あまりの簡潔さに感動。
331329:02/02/24 20:38
>>330
あぁ、なるほど。切り上げか。
こういうやり方があったのか。

その本チラッと立ち読みしたことあるけど気がつかなかったよ。
もう少し見てみようかな。ありがとう。
332313,317:02/02/24 21:41
>>319
>>322
ありがとおございます。も少し勉強をすすめてみます・・・。
333327:02/02/24 23:15
>>331
-int(-a/4)*4にするとa以上の最小の4の倍数が求められる。
ビットマップの4バイト境界を計算する時すごく重宝する。

てな感じで、応用範囲はかなり広いよ。
334デフォルトの名無しさん:02/02/24 23:23
>>332
インベーダーぐらいなら、VBでも出来るよ。
Shapeコントロールではなく、グラフィック・メソッドを使う。
「描いて消す」を繰り返す。
裏画面に全部描いて、一気に転送すると速いし、ちらつかない。
335332:02/02/24 23:31
>>334
どうもです。
なーるほど・・・!「描いて消す」ですか・・・!なんかできそうな気がします!

しかし「裏画面に全部描いて、一気に転送する」というところの意味がよくわからないので、
もう少し説明していただけますか?
336デフォルトの名無しさん:02/02/24 23:57
>>335
非表示のPictureBoxに描いて、FormにBitBltする。
ゲームの基本中の基本だから、どこのサイトでも解説してあるよ。
APIのBitBltは、PaintPictureよりずっと高速。

#インベーダーは背景が黒だから、重ね合わせ用のマスク処理を
しなくてもいいから、初心者向き。

337デフォルトの名無しさん:02/02/25 00:03
>>333
そういうときは(a+3)&~3
338337:02/02/25 00:04
と思ったらここVBスレなのか!sage!
339335:02/02/25 00:16
>>336
ありがとうございます。またいろんな本やサイトを見てみようと思います。
ところで、まえに作ったブロック崩し(アルカノイド風)の改良をしてて、どうしてもわからないところがあるので
教えてください。

ボール(shpball)が下向きに移動しててブロック(cmdb(i))に当たった時の処理なんですが。

If shpball.Top + shpball.Height > cmdb(i).Top And (shpball.Left + shpball.Width > cmdb(i).Left And shpball.Left < cmdb(i).Left + cmdb(i).Width) Then

If cmdb(i).Visible = False Then
Exit For
End If
cmdb(i).Visible = False
Beep
TB = True
End If

TBというのはボールの上下方向を表すフラグで、True=上向きでFalse=下向きです。
当たったらブロックを見えなくしてボールの向きを変える、ということをしたいのです。
上から降りてくるボールはブロックを素通りしてしまいます。
逆方向はうまいこといくのですが・・・。
340335:02/02/25 00:19
すいません、上の補足です。
>>339のコードは
For i=0 to 55 step 1

next i
の中にかかれたものです。字下げがなく見づらいですが、よろしくお願いします。
341デフォルトの名無しさん:02/02/25 00:38
>>339
右上から当たった時の判定はそれでいいけど、左上から当たった時は?
左端か右端の座標が同じになった時は?
上下にくっついた時は?

それと、すでに消えたブロックの位置判定をするのはムダ。
生きてるか、消えてるかを先に判定して、Exit For しないと。
342デフォルトの名無しさん:02/02/25 00:43
>>339
VBはプロパティへのアクセスが遅い。
ボールやブロックのWidthやHeightは変数か定数にしたほうがいい。
shpball.Topはshpball.Heightも、ループの中で何度も参照するなら、
変数に格納。
>>339
とりあえずそーゆー時は
If cmdb(i).Visible = False Then
にブレークポイントを設定してここまで
処理してるかどうか調べる。

上のコード見た限りでは上からきたボールが
100%透過するとは思えんが。
344343:02/02/25 00:47
おいおい、えらくみんな優しいなw
345339:02/02/25 01:28
>>341
とりあえず、上下から接触したときのをやってます。左右のはそれからです。
ご指摘のとおり上のコードだと、消えたブロックに対しても調べてますね。先に判定するようにします。
>>342
わかりました。ありがとうございます。
>>343
ループの中の、Visibleプロパティを調べるところの下にプレークポイントを設定したら、止まりませんでした。
今のところ上からきたボールは100%素通りしています。
if文の条件判断がまちがってるんでしょうか・・・。
346デフォルトの名無しさん:02/02/25 01:40
>>345
左右からじゃなくて、左斜め上から当たった時が含まれてない。

ところで、ボールの移動間隔は1ドットごと?


347デフォルトの名無しさん:02/02/25 01:55
>>345
こんな感じかな。
If (shpball.Top + shpball.Height =< cmdb(i).Top And _
  shpball.Top + shpball.Height >= cmdb(i).Top + cmdb(i).Height) And _
 ((shpball.Left + shpball.Width >= cmdb(i).Left And _
  shpball.Left =< cmdb(i).Left + cmdb(i).Width) Or
  (shpball.Left >= cmdb(i).Left And _
  shpball.Left + shpball.Width <= cmdb(i).Left + cmdb(i).Width)) Then
348339:02/02/25 01:58
>>346
斜め上からですか・・・。たしかにその場合は適当な消え方してました・・・。
ボールの移動感覚は、±100で記述してます。
349345:02/02/25 02:04
>>341さんにご指摘いただいたところを直したら、変なタイミングではあったんですが
上からおりてくるボールに反応してブロックが一部消えました。
>>347さんのコードで試したら、またちがった消え方をしました。おかげさまでちょっとずつ良くなってるようです。
もう少し調整が必要みたいなので、じっくり考えてみます。
350デフォルトの名無しさん:02/02/25 02:07
>>348
ゲームやるなら、座標系は絶対ピクセルでやること。

「衝突判定」で検索してみたら、距離の公式を使ってる例があった。
Sqr((x0 - x1) * (x0 - x1) + (y0 - y1) * (y0 - y1))

これなら、もっとすっきりする。
351348:02/02/25 02:15
>>350
すみません、どういうことでしょうか。
プロパティウインドウのTopやLeftのところに表示されている数字はピクセル単位ではないのですか?
352デフォルトの名無しさん:02/02/25 02:25
>>351
ScaleModeプロパティを見ると、デフォルトではTwipになってるはず。
これをピクセルに変更すればオッケー。
ただし、ボールの移動値とか、全部変更することになる。
353351:02/02/25 02:38
>>352
ありがとうございます。
FormのScaleModeプロパティを変えればいいんですよね。
でも、ピクセルよりTwipの方が細かくて、モノを動かすときもなめらかにできそうな気が
するんですが、どうなんでしょう?
>>350さんの「座標系は絶対ピクセルで」というところの意味を教えてほしいです。
354デフォルトの名無しさん:02/02/25 03:07
>>353
Twipは細かいけど、ムダに細かい。
タテ15個×横15個=255個の座標値が画面上ではまったく同じ点。

355デフォルトの名無しさん:02/02/25 03:12
なめらかなのではなく、15回同じ点を描いたり、
同じ位置にShapeを置いてるだけ。
ウェイトかけてるのと同じ効果はあるが…。
とにかく、Twipでゲーム作ってるヤツはいないと思われ。
もともとTwipはビジネスアプリ用なんだし。
>>353
滑らかに動かす時は内部で小数点を使うがTwipを使う理由にはならない。
TwipってWindowsのフォントの大きさの設定用に作られたみたいなもんだと
俺は思ってる。
357vbvb:02/02/25 09:41
初心者です、質問をさせてください。
VB6でActiveXを作り、HTML文章の中にObjectタグで入れました。
これをダブクリし、IE(Ver5.5)を起動すると、
「このページのActiveXコントロールは安全でない可能性があり・・・・」
といったダイアログが表示されます。
マシンは完全スタンドアロンで稼動するためウイルス進入の可能性はないのですが、
このダイアログがでないようにする方法はあるのでしょうか。
よろしくお願いします。
358デフォルトの名無しさん:02/02/25 10:15
WindowsNT/2000 + VB6.0SP5 + シリアルプリンタ(連帳)でユーザ定義の用紙サイズを使用したいのですが、
良い方法はないでしょうか?

本来ならPrinterオブジェクトのPaperSize、Hight、Widthを指定すればいいのでしょうが、公式に書かれてるとお
り、プログラム側からうまく設定できません。。プリンタのサーバプロパティに用紙サイズを作成し、デフォルトに
指定しておき、そのままEndDocで改ページしても15X11インチっぽい改ページになってしまいます。

もうひとつの方法として、作成したユーザ定義を使いExcelで印刷すると正しく改ページされるようなので、Excel
に出力して印字する方法で何とか解決出来そうな気もします。これから調べるところですが、Excelでユーザ定
義の用紙を設定できますよね?

ただ、出来ればC/Sシステムなので、クライアント側に用紙の設定をするという方法は好ましくないのです。可
能な限り、プログラム側で制御したいので用紙サイズをプログラム側でユーザ定義サイズに指定出来たという
方がいたら情報をお願いします。

過去ログ(Part1)にも同じような質問がありましたが、解決していなかったようなので。。

359358:02/02/25 10:19
簡潔に書くと、NT/2000環境でVBからシリアルプリンタで制定用紙への連続印字
に良い方法はありませんか?ということです。

VBの印刷周りは評判が悪いので覚悟はしてましたが納期も近いのに苦労してま
す。。
360358:02/02/25 10:38
素直に帳票ならこのツールを買え!という意見でもありがたいです。難しいようなら
ツールの購入に走るつもりなので。
中央高等学院 中央高等学院 中央高等学院 中央高等学院 中央高等学院
ご連絡有り難うございます。お心使い大変感謝しております。
縞栗鼠の親方様におかれましては、いかがお過ごしでしょうか。
前回の件でも貴兄、またご利用されている皆様方にも多大なご迷惑をお掛けし
お詫びの言葉も見あたりません。

縞栗鼠の親方様には度重なるご迷惑をお掛けし、その度にご連絡いただき
大変申し訳ございません。私共も実のところ、うんざりと言うのが実際のところです。
ご存じの通り、当学院では11月受検に向け当学院生徒、職員一丸となって
目標達成に向け日々邁進しております。一部の心ない行動により当学院の生徒にも
必要のない不安が生じるのではないかと心を痛めております。今の所、生徒からの苦情
問い合わせ等、わたくしの聞き及ぶところには御座いません。
しかしながら、今回の件でも、いくつか質問という形で真偽を問うリアクションが外部、又は
当学院の生徒の判断がつきかねますが、こちらのHPにも帰ってきているのも事実です。
こちらも具体的な方法で行動をとりたいのですが、この件だけに係り切りというのも状況が許しません。
只、日増しに悪質化してきているのも事実なので放置も出来ません。私共も準備に取りかかり、
然るべき処置を執りたいと存じ上げます。

大変身勝手ではございますが、これからも暖かいご支援宜しくお願い申し上げます。
また 縞栗鼠の親方様の益々のご活躍 心よりお祈り申し上げます。
中央高等学院
http://www.chuo-school.ac/
中央高等学院福岡校
http://chs-f.com/index.html 
学院長 斉藤 守
>>353
Twipで作っても出来なくはないが、
あとで高速化のために Bitbltなど APIを使うようになると、移行が面倒だぞ。
APIはすべて Pixel単位。
363353:02/02/25 14:03
>>354-356,>>362
ありがとうございます。今までのところをPixel単位で書き直してみます。
36498使い:02/02/25 14:17
お世話になります、VB初心者です。
IE5.0のWebブラウザコントロールを使って、HTMLファイルを表示し
印刷するプログラムを作っています。
どうしても、HTMLファイル名が印刷されてしまいます。
ページの設定でフッターを消すとファイル名は印刷されない
ようになるのですが、プログラムを立ち上げなおすと元の設定
(フッターあり)に戻ってしまいます。
なんとかHTMLファイル名を印刷しない設定のままにしておく
方法はないものでしょうか?
ご助力の程、よろしくお願いします!
365310:02/02/25 14:44
>>311
ありがとうございます。
やっぱ無理っすかね。。。。

誰だよ、バッチをVBSでやろうなんて言ったのは・・・・


sageは癖で。(汗
すんませんでした。
366デフォルトの名無しさん:02/02/25 15:05
現在開いているフォームを「閉じるボタン」をつけたいんですが、コードは
どのように書けばよいですか?
>>366
Unload Me
,(コンマ)付けて拡張子を"CSV"にして書き出すだけ。
369デフォルトの名無しさん:02/02/25 15:46
>>367
ありがとうございます〜
凄い初心者の質問なんですけれども、VBは何処で入手すれば良いのでしょうか?
学割が効くって話も聞いたことがあります。マイクロソフトのサイトにいったんですが、値段とかも書かれていなくて。
教えてください。
371デフォルトの名無しさん:02/02/25 16:09


>>365
返せるよ
Quit(0)
>>370
VB5.0のタダバージョンでよければここで落とせるよ。

http://www.microsoft.com/japan/developer/vbasic/Controls/GUIDE.HTM
374デフォルトの名無しさん:02/02/25 18:25
ユーザーコントロールで、form.Controlsに相当するコレクションを作ることは可能なのでしょうか?

まず「やりたいこと」。フォームで

Dim cntrl As Control
For Each cntrl In Me.Controls
if cntrl.tag = "red" then
cntrl.BackColor = "赤にするねん"
end if
Next cntrl

とやってることを、ユーザーコントロール(.ctl)の中でもやりたい、っつーことです。
もちろん静的に色を変えるだけならデザイン時に設定しとけばいいだけの話だけど、
tagの内容とそのときのアプリケーションの状態によって動的に変えたいんですよ。

ということで、もし何かご存知の方がいればアドバイスをお願いします。
マジ初心者で悪いんですが、
APIってなんですか?
376デフォルトの名無しさん:02/02/25 18:42
BitBltでvbSrcCopyを使って画像をPicture1からPicture2へ
コピーする時に、画像を回転させてコピーさせる事は可能でしょうか?
もし可能で、コードの記述のしかたが分かれば教えて下さい。
377デフォルトの名無しさん:02/02/25 18:54
>>376
X軸、Y軸対称の鏡像反転は出来るが、回転は出来ない。
378デフォルトの名無しさん:02/02/25 19:20
次のような関数を作ったとして、

Private Function isHoge(colHoge As Collection) As Boolean

 Dim objHoge As clsHoge

 For Each objHoge In colHoge
  If objHoge.hage = True Then Exit Function
 Next

 Set objHoge = Nothing

 isHoge = True

End Function

Set objHoge = Nothing って必要なんでしょうか?
もし必要なら、Exit Functionでも行わないといけないはず。
このプロシージャから抜けるときに暗黙にNothingされるような
気がするのだけど、どうなんでしょ?

ちなみにVB6sp5です。よろしくおねがいします。
VBの言語仕様的にはプロシージャから抜けるときに暗黙にNothingになるので必要ない。

しかし、昔(VB4あたり?)に明示的にNothingしないと
メモリが解放されないというバグ(ただの噂?)があったらしい。

現在(VB6)、自分はメモリが解放されないという現象にあったことは
ないが、昔からのくせ、VBを信用していない、なんとなく気持ち悪い
という理由のため明示的にNothingをしているらしい。

という説明でいいのかな。

関係ないけど、この例ならByValつけたほうがいいよ。
>>379
…Collectionを ByValしちゃうのか?
ByRefじゃないの?
381デフォルトの名無しさん:02/02/25 19:56
>>377
お返事ありがとうございます。
>>376
座標を計算すれば可能。
Googleで漁ればサンプル出てくると思う。

>>375
Win32API:
Windowsが提供している、呼び出し可能な関数ってところか。

>>374
dim colObj as Collecion
set colObj=new Collection

colObj.Add Me.UserControl1

とかやれば良いんでないの?
383382:02/02/25 20:04
あ、BitBlt限定か…
逝ってくる…。
>>380
ByRefにすると関数内でCollectionを再作成できたり
破棄できたりするじゃん。するならByRef、しないならByVal
385374:02/02/25 20:17
>>382

ごめんなさい。ちょっと説明がまずかったかもしれませんね。
BackColorを変えたい(他、プロパティを弄りたい)コントロールは、
ユーザーコントロール(.ctl)の『中』のコントロールなんです。

ユーザーコントロールのInitarizeで、>>374と同じコードを書いてみたのですが、
ユーザーコントロールのMeにはControlsコレクションが無いんですよ。

……っと、もしかして、中にあるコントロールを一つづつ名前を指定して、colObj
にAddしていけ、とゆーことなのでしょうか?(^^;

386デフォルトの名無しさん:02/02/25 21:10
VBのエディタで自動的にスペースを詰めさせないように
するにはどうすればよいのでしょうか?
コードが見づらいので困ってます。
387デフォルトの名無しさん:02/02/25 21:12
>>376です。
またまた教えて下さい。
こんなサンプルを見つけたのですが・・・
ビットマップイメージ画像をPicture1に読み込んで、
Picture2にその画像を回転させて表示するものです。

GetObject、GetBitmapBitsでPicture1のピクセルを取得して、
GetObject、GetBitmapBitsでPicture2のピクセルを取得して、
Sin、Cosを計算して、
Picture2の外枠を計算して、
SetBitmapBitsでPicture2に回転した画像を更新させます。

そこで、これでは読み込んだビットマップイメージ画像を回転させて
いますが、私がやりたいことはPicture1にMoveToEx LineToや
MoveToEx PolylineToやPolylineで描いた図形をPicture2に回転させて
表示させたいのです。
こういう場合はGetObject、GetBitmapBits、SetBitmapBitsではなく
違うAPIを使うのですか?
説明変かもしれませんが・・・教えてください。

p.s LineToのx、y座標をSin、Cosでというのではなくて、
これでしてみたいのです。
>>386
慣れましょう
389デホルトの名無しさん:02/02/25 21:32
VB6SP5
windowsNT
でPrinterオブジェクト使って印刷してるんですけど
大量に印字したとき、ときどき固まってしまいます。
いっきに大量印字が原因なのかわかりませんが、Printerオブジェクト
また、NTとの関連でこういった不具合が出た方いますか?
出た方はどういう対応をしたのでしょう?
原因がつかめなくて困ってます。
情報お持ちの方、よろしくおねがいします。

因みに、マイクロソフトのサポート技術情報検索
http://search.support.microsoft.com/kb/c.asp?lng=jpn&sa=per
にて、PrinterやNTなどで検索を掛けましたがそれらしい
答えは見つかりませんでした。
>>373
亀レスすみません。
教えてくれて有難うございます。
初心者が始めるなら6も5も余り関係ないですよね?
早速本買おうと思います。
もしよろしければ、初心者に解かり易い本を教えていただければうれすぃです。

有難うございました。
391デフォルトの名無しさん:02/02/25 23:05
>>358,359
ユーザ定義用紙の設定ですが、APIのSetPrinterは使ってみましたか?

DOSプリンタで1行ずつ印刷するだけなら、APIのWritePrinterで可能です。
ESCP対応プリンタに限れば、ベクターにシェアウェアのOCXがあります。
プレビュー付きです。

>>339
Beepで鳴るのは、サウンド→一般の警告音で指定されてるWaveファイルなので、
個々のPC環境によって違い、あゆが「なんかヘンだよ〜」とか言ったりする。

>>375
Application Program Interface の略。
このスレでは主に Windows32 API のことを指す。
Windowsが用意してる関数のことだと思えばいい。
VBのコントロールもWin32APIを利用してるけど、ほんの一部だけでしかない。
直接呼び出せば全部使えるし、細かい処理が出来る。画像処理は格段に速くなる。

>>389
まず印刷スプールサイズを確認!
392378:02/02/25 23:14
>>379さん、ありがとうございました。
VB4の頃の習慣だったんですね…。
どうりで、古めの資料にはNothingしろって書いてあるはずだ。
ttp://www.gj.il24.net/~nakasima/vb/tech/Nothing/index.htm
ここ読んで納得しました。
393デフォルトの名無しさん:02/02/25 23:14
>>387
そのサンプルはPointが遅いので、GetBitmapBits使ってるだけ。
これはラスター処理。

質問のケースでは、元座標値がわかってるから、
それに対しSin, Cosを使って、LineToで描けばいい。
こちらはベクター処理。

>>390
どういうテーマのサンプルコードに興味を持つか、人それぞれです。
幾何図形、電話帳、ゲームのひな型、etc。
>>385

自作コントロール作成時のMeが指すのは、
コントロール内部の自分で定義しているクラスです。
なので、IntelliSenseで表示されるプロシージャ、プロパティも
自分の定義したものだけ。

UserControlのプロパティとしてContainedControlsがある。
395デフォルトの名無しさん:02/02/25 23:28
If Label1.Caption=""abc"" 
とかってやって、"abc"という文字列を調べたいのですが、
エラーがでてできません。一体どうやれば?
If Label1.Caption="""abc""" 
397デフォルトの名無しさん:02/02/25 23:32
>>395
If Label1.Caption="""abc""" Then 
398395:02/02/25 23:32
>>396
デキた。サンクス。
399デフォルトの名無しさん:02/02/25 23:32
Debug.Print """abc"""
で確認できる。
400395:02/02/25 23:35
>>397
サンクス。レスハヤー。
401379:02/02/25 23:39
>>392
自分で書いといてなんだがVB4あたりでそういうバグが本当にあったのか。
VB6では本当に問題ないのか知っている人いません?
自分はVB6からしか使っていないから知らんのよ。
402デフォルトの名無しさん:02/02/25 23:44
>>401
NT使ってるから、メモリに残ったことはない。

聞いた話では、VB6ではPublicなObject変数だけ破棄すればいいらしい。
403デフォルトの名無しさん:02/02/25 23:50
>>401

VB4の頃は、
Unload Me
Set Form1 = Nothing
にしろというお達しがMSページに載っていた。

でも、VB4upgrade2か、VB5ではそれは撤回されていた。
たぶん、そこでその不具合は修正されたものと思われ。
それ以来、念のために明示的にSet obj = Nothingを書いている人も
ままいるようだ。

通常のクラスモジュールでの話で同様のものがあったかどうかは不明。
漏れはVB4時代にはクラスモジュールは全然使ってなかったので、
単に知らないだけかもしれない。

>VB6では本当に問題ないのか知っている人いません?
問題ないことは誰にも証明できん。
が、現時点でそういう話は聞いたことがないので、
たぶん問題ないのでは?
404ビーム単発サンプル:02/02/26 00:00
' 下から上に赤いビームを動かす例
Private Sub Form_Click()
  Dim Y As Long
  Me.AutoRedraw = True
  Me.ScaleMode = vbPixels
  For Y = Me.ScaleHeight To 0 Step -1
    Me.Line (150, Y)-Step(4, 9), Me.BackColor, BF ' 消す
    Me.Line (150, Y - 10)-Step(4, 9), vbRed, BF  ' 描く
    Me.Refresh
  Next
End Sub

手抜きサンプルだけど。

次は、連射のサンプル。
405ビーム連射サンプル 前半:02/02/26 00:05
' ビーム連射サンプル [←][→]キーで移動、[スペース]で発射
Private Type RECT
  X As Long
  Y As Long
End Type
Dim Beam(9) As RECT
Dim MyX As Long, MyY As Long
Dim SW As Long, SH As Long
Dim lBackColor As Long

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  Dim i As Long
  Me.Line (MyX, MyY)-Step(4, 2), lBackColor, BF ' 自機を消す
  Select Case KeyCode
    Case vbKeyRight
      MyX = MyX + 5
      If MyX > SW - 6 Then MyX = SW - 6
    Case vbKeyLeft
      MyX = MyX - 5
      If MyX < 0 Then MyX = 0
    Case vbKeySpace
      For i = 0 To 9
        If Beam(i).Y <= -10 Then
          Beam(i).Y = SH - 5
          Beam(i).X = MyX
          Exit For
        End If
      Next
  End Select
  Me.Line (MyX, MyY)-Step(4, 2), vbBlue, BF ' 自機を描く
End Sub
406ビーム連射サンプル 後半:02/02/26 00:05
Private Sub Form_Load()
  Me.AutoRedraw = True
  Me.ScaleMode = vbPixels
  SW = Me.ScaleWidth
  SH = Me.ScaleHeight
  MyX = SW / 2
  MyY = SH - 4
  lBackColor = Me.BackColor
  Timer1.Interval = 10
End Sub

Private Sub Form_Unload(Cancel As Integer)
  Timer1.Interval = 0
  Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
  Dim i As Long
  For i = 0 To 9
    If Beam(i).Y > -10 Then
      Me.Line (Beam(i).X, Beam(i).Y)-Step(4, 9), lBackColor, BF ' 消す
      Me.Line (Beam(i).X, Beam(i).Y - 10)-Step(4, 8), vbRed, BF ' 描く
      Beam(i).Y = Beam(i).Y - 10
    End If
    DoEvents
  Next
  Me.Line (MyX, MyY)-Step(4, 2), vbBlue, BF ' 自機を描く
  Me.Refresh
End Sub
' ここまで
>Private Sub Timer1_Timer()
大文字ってものすごく読みづらいんですけど、
VB環境のデフォルトを全部小文字にできませんか?
private sub timer1_timer()
408379:02/02/26 00:48
>>402
PublicなObjectもアプリケーション終了時にNothingになるよね。
少なくともObjectのTerminateイベントは発生する。
Terminateイベントが発生したからといってメモリが解放されたとは限らないのだが…。

>>403
でもMeとForm1は厳密には違うよね。
それともVB4ではFormは一つしか作成できずMe = Formだったのか?
409デフォルトの名無しさん:02/02/26 00:51
>>408
強制終了の時とかは?
410デフォルトの名無しさん:02/02/26 00:56
>>407
エディタで書いて、貼ればいいじゃん。
それにたくさんソース見れば、すぐ慣れるよ。
郷に入ってはなんとやら
412403:02/02/26 01:04
>>408
>でもMeとForm1は厳密には違うよね。

厳密に言わなくても違うが、
Set Me = Nothingとはできない。
自分で自分を削除はできないから。

>それともVB4ではFormは一つしか作成できずMe = Formだったのか?
NothingにするのにMeは使えないので、
個々のオブジェクト変数Form1やらForm2・・・など
Nothingにする具体的な変数名を指定しないといけない。

#Form1.ShowなどとするときのForm1は暗黙にPublic Form1 As New Form1と宣言されているようなもの。
413379:02/02/26 01:38
>>408
さすがに強制終了時にはTerminateは走らないでしょ。
そのときのメモリはOSが処理してくれるしかないのかな?

>>412
VB4ではNothingを代入することで削除することが出来るの?
VB6だが俺の認識では「全ての参照がなくなったときに削除される。」なんだよね。

たとえばForm1型のフォームがfrmという変数に作成したとき
Unload Me       は意味があるけど
Set Form1 = Nothing には意味がないよね。

Form1型のフォームがForm1という暗黙の変数に作成されたときは
Set Form1 = Nothingをする意味は分かるが、これをしないと
メモリが解放されないというのは正常な動作だよね。

結局VB4でもバグではなかったの?
414374:02/02/26 05:40
>>394

出来ました! Me.Controlsではなく、UserControl.Controlsとすればよかったんですね。
その上で、他にコレクションを公開したかったら

Public Property Get Controls() As Variant
Set Controls = UserControl.Controls
End Property

とする、と。(ユーザーコントロールの概念からすると、好ましくないことは解っていますが(^^;))
アドバイスありがとうございました(拝)
415デフォルトの名無しさん:02/02/26 18:56
ヽ(`Д´)ノウワァァァァァン Formの開放やら、そんなのばっかで答えてくれないよ〜〜。
誰か↓答えてくれよ・・・・。
-------------------------------------------------------------------
VB6SP5
windowsNT
でPrinterオブジェクト使って印刷してるんですけど
大量に印字したとき、ときどき固まってしまいます。
いっきに大量印字が原因なのかわかりませんが、Printerオブジェクト
また、NTとの関連でこういった不具合が出た方いますか?
出た方はどういう対応をしたのでしょう?
原因がつかめなくて困ってます。
情報お持ちの方、よろしくおねがいします。

因みに、マイクロソフトのサポート技術情報検索
http://search.support.microsoft.com/kb/c.asp?lng=jpn&sa=per
にて、PrinterやNTなどで検索を掛けましたがそれらしい
答えは見つかりませんでした。
-------------------------------------------------------------------



(´・ω・`)ショボーン
416デフォルトの名無しさん:02/02/26 19:19
>>415
5分に1回DoEvents
ダメならプロセス優先順位上げれ
417デフォルトの名無しさん:02/02/26 21:26
generalのdeclarationで、Option Explicitの下に変数を書きたいんですが、
恐ろしく書き難いです。みなさんどうやってます?
ENTERで改行しても元に戻るので、何度やってもイライラしてるんですが・・・・
418デフォルトの名無しさん:02/02/26 21:58
>>417
>ENTERで改行しても元に戻るので

意味がワカラン。

俺は

'_/_/_/_/_/_/_/_/_/_/変数定義'_/_/_/_/_/_/_/_/_/_/

とかやって区切るけど何か?
419デフォルトの名無しさん:02/02/26 22:20
他のアプリケーションと組み合わせて操作するのってどうやるの?
>>419
果てしなく意味不明
VBとかで作ったマルチメディアプレイヤーとかを
スキンとかを作って外観を変える事ってできますか?
>>421
そこはかとなく、意味不明。
適当にPictureコントロール使うか、FormのPictureプロパティ使えば?
と答えてみる。
>>421
そのように作ればできるだろ、頑張れ。
424デフォルトの名無しさん:02/02/26 23:03
>>415
NT使ってるのに、管理ツールの使い方も知らないの?
>>415
単にスプールに時間かかってるだけってのはないの?
俺昔ためしで1万枚印刷しようとしたけど別にハングしなかったけどなあ。
(VB6SP5+Win2000)
>>419
Winメッセージかアトムかファイル。
OLEとDDEもある。

>>421
映像部分だけ表示して周りにビットマップ貼るとか。
Option Explicit: Public a As Integer: Private Const b As Integer = 1
Private Sub Form_Load(): Dim i As Integer: i = 10: MsgBox i + b: End Sub

気持ちわりー。絶対こんな風に書くなよ。
昨日VB5CCEをダウンロードして デジタル時計を作ってみたのですが、どうもexeに
形式に変換出来ないみたいなんです。frmからexeに変換できるツールは無いのでしょうか?
教えてください。
>>428
VB5CCEはEXE作れないよ。200-300ぐらいに出てたかな。
>>428
続きは製品版でお楽しみください
>>429
いやできないから、VB以外で変換できるツールが在るのなら欲しいなと思って書き込んだんです。
やっぱり無いんですか?
>431
VBはMicroSoftが独自に開発してる言語だ。
VBはあまりに巨大すぎて独自に解析する人はいない。
C系みたいに共通言語でもない。

ゆえに、VBはMicroSoftしか作れない。
MicroSoftがVB以外のBasicコンパイラを出すと思うかい?
CCEって普通のActiveX コントロールが作れるの?
だったら実行時に指定したActiveXコントロールを表示するEXEってのが
あればよさそう。簡単に出来そうだね。
>>431
サービスパックからファイルを抜き出してあるファイルを
上書きすると製品版と同等になるとかなんとか、、、
 
という噂を聞いた。あやふやな情報でスマソ
>>434
厨にクラックの仕方教えるなよw
>>435
クラックパッチもastalavistaで一応探したんだけど無いんです。
厨だってクラックパッチ位知ってますよ。
XPのクラックもファイルをVL版に置き換るんでしたよね。
関係ないんですけど。
無いならいいや。
有難うございました。
437sage:02/02/27 01:57
インベーダー1列が降りてきて、対戦するのは出来た。
438デフォルトの名無しさん:02/02/27 02:11
ENVELOP BASIC使え
439ウイルス作成ソフト:02/02/27 03:56
初心者向けウイルス作成ソフト
Virus Creation Tools (54)
http://vx.netlux.org/dat/vct.shtml

VBS Worm Generator
Author's Notes:
You need the microsoft Vb5 runtimes to run this program,
and the Windows Scripting Host 5.0 too.
What's New:
New code encription, fastet and smaller.
Select the random words lenght
New random words engine, added caps and numbers.
File downloading an execution.
Fixed more bugs
Outlook script modyfication to avoid Avp Heuristic detection
Mirc script modyfication to avoid Avp Heuristic detection
Main script modyfication to avoid Avp detection.
The sources have been modified to be just like the main ones.
Added New vbs reg file to add the Vbs file type
to the File/New explorer submenu
Modyfied the SaveAs dialog, cause it was causing troubles in some computers
Added setup!, made by me, so, it can have some bugs.
Added welcome Screen. Thanx Pepe Lepu for the Picture!.
Features:
Worm backup: It's just for having a copy of the worm in a safe place,
so you can be shure that it will no be lost.
Outlook Replication: Send as attachment: It uses the same function
that all the vbs's, js's or any other kind of worm, it sends a message,
that you can define, whit te worm attached to every preson in the user's address list.
Send in html code: The worm is added to the html code of the message,
so, when the person views it, they'e infected!
Mirc replication: Search for mirc.ini(what means that the mirc is there)
in the most commons floders(programfiles\mirc, c:\mirc, c:\mirc32)
and if it is found, the worm create "script.ini" in that folder,
that script make the mirc sends the worm to every person that join to a channel.
(see "If found Mirc, infect.")
Infect Files: The worm will search for all the hard drives
(and the network drives too, i think) for files whit the extencion
that you want(in this version only .vbs and vbe are searched)
and copy overwrite him whit itself.
440デフォルトの名無しさん:02/02/27 09:19
作ったソフトにカワイイアイコンをつけてあの四角いやつじゃなくて
カワイイアイコンをクリックしたら起動するようにしたいのですが
ペイントで作ったアイコンがプロパティがおかしいとか出てうまく
できません。どうしたらいいのでしょうか。。。
>>440
アイコン作成ツール使え。
ペイントのアイコンはアイコンじゃない。
Winが親切で表示してくれてるだけ。
442デフォルトの名無しさん:02/02/27 09:31
>>441
そうだったんですか、ありがとうございます。
俺もカワイイアイコンに憧れてます
443441:02/02/27 09:36
俺「も」?
444:02/02/27 10:41
フラグ「TB」をTrueならFalseに、FalseならTrueにしたい場合、
TB = Not TB
という書き方はまちがっていますか?
445444:02/02/27 10:43
すみません、上の書き方で一応動きました。
446デフォルトの名無しさん:02/02/27 10:44
>>444
Booleanで定義してある変数なら問題なし。
個人的にはiifでやりたい
>>444
a=true:a=a-1:debug.print cbool(a),cbool(not a)
これの意味分かる?
分かってるんならよし。
448444:02/02/27 10:52
iifや>>447さんのコードの意味がわからないです。
勉強してきます・・・。
>>447
a=a+1でなくて?
Trueから 1引いても Trueだと思うけど。
VBの Trueは -1だよ。

>>436
素直に製品版買え。
厨なら Academicがある。
450447:02/02/27 12:35
>>449
んーと、Boolean型はTrue,Falseだけだけど、中身はLong値じゃん。
VB側が0の時はFalse、それ以外の時はTrueを返すようにしているだけで。

で、Notは論理演算だから-2(True)が入ってると結果は1なんで
Trueが返ってくる。

つまり、-1と0以外の値が入っているとNotを使ってもTrue⇔Falseが
トグルになるとは限らないよ、ってことが言いたかったんよ。

分かりにくくてスマソ。
451446:02/02/27 12:53
>>450
俺もそう思ったんだけど、型がBooleanなら-1以外でも
ちゃんとFalseを返すみたい。

でのなんか怖いので
iif(FLG,False,True)ってやりたい
452447:02/02/27 13:09
>>451
気になったんで今調べてみた。
bl=Boolean型、i=Long型。

bl=10 → bl=-1
bl=0 → bl=0
bl=-1 → bl=-1
i=100:bl=i → bl=-1

結果:
Boolean型で宣言された変数に演算結果を代入する場合は
-1か0に修正されて代入される。

みたい。直接CopyMemoryとか、Get#とか使って代入するとBoolean型の
修正機能は働かないようだ。

やっぱり怖くて使う気にならんなw
>>450
なるほどね。
Variantとか Longなら、どちらもTrue返すね。
つーか、Variantは -1した段階で型変換してる。
Longは Trueセット時に -1になるし。
そうすると、非零だから全部 Trueだわな。

でも、 >>451 にもあるけど、
Booleanだと、True/Falseになるね。
-1したときに、Booleanの型を保つから…かな。

まともに宣言して使ってれば、まぁ Notは問題なしってところか。
454デフォルトの名無しさん:02/02/27 14:37
これからプログラミングの勉強しようと思ってますが、
知人からVBは簡単だからそれから始めれば?と言われました。
いずれは、CやJavaを・・・・と思ってるんですが、
VBからはじめるのが本当に無難なんですか?
VBやって無駄だとか弊害があるとかってないですか?
>>454
いずれ C や Java をやろうとと思ってるなら
最初からそうしたほうがいいのでない?
俺は最初 C から始めたよ。
俺は VB はやったことないからなんとも言えないが
やっても無駄って思ってる人も結構いるかと。
とりあえず C をやって無駄になることはないよ。
>>454
俺は主にVB使ってるけどCが最終目的ならVBは無駄だよ。
455に同意。
457デフォルトの名無しさん:02/02/27 15:20
Cからやれ。
時間の無駄と気づくまで。
458デフォルトの名無しさん:02/02/27 15:32
どなたか教えて頂きたいのですが、
リッチテキストボックス内の表示内容がいっぱいになった時
リッチテキスト内の一番最新の追加された文字を表示させるために
表示位置を自動でスクロールしたいのですが
ご存知の方ご教授願えないでしょうか。
459デフォルトの名無しさん:02/02/27 15:33
VBってトロイだよ。
いまVB6インストール終わって、EXE作ってたら、ゾーンアラームが警告出したよ。
かってにサーバーになって、どこかに情報送信しようとしてた。
460デフォルトの名無しさん:02/02/27 15:41
>>459
VC相談所が暇になったからってこっちまで来ないで下さい
>460
暇になってるの?
>>459
Micro$oft の製品は全てトロイです。
XPはその最たるものです。
>>454
CやJavaが目標なら、そっちやった方が良いと思うな。

C←→Java間の文法の差異は比較的少ないけど、
VBは基本文法が違うから、面倒だよ。
俺は両方使ってるけど、
C→VBに行くと、文末にセミコロン打ったりするし。(w
VB→Cすると、セミコロン忘れとかやらかすし。

基本部分を押えるだけなら、VBも悪くないとは思うけど。
VBAもここでヨロシ?
465454:02/02/27 16:01
>>455 >>456 >>457
ご返答ありがとうございます。
Cからやることにします。
466454:02/02/27 16:04
>>463
ご返答ありがとうございます。
参考になりました。

で、ちょっと疑問に思ったのですが、
ではVBはどのような場合の方が勉強されるのでしょうか。
CやJavaが主流だと聞いたのですが、VBをやる意味というのはどのような場合ですか?
質問ついでですみません。
>>466
とにかく短期間で納品する小規模なプログラムを作るとき
>>466
移植性を考慮しなくてもイイとき。
メンテナンスコストを気にしなくてもイイとき。
469456:02/02/27 16:11
>>466
お、俺の出番だねw

会社でやる時も趣味でやる時も、基本的には楽に完成させたい時に使う。
外部コンポーネントや標準関数なんか使うと簡単なアプリはすぐに作れちゃう。
しかも面倒なポインタやメモリ管理なんかを勉強する必要もない。

でも、その分実行速度は遅いし、ランタイムはいるし、高度なことは難しい。
速く高度なアプリも作れるけどそういう時はVC++のほうが倍は楽。

俺みたいなVBでMMX使おうとするバカモイルケドナー
470454:02/02/27 16:14
>>467
ということは、逆にCやJavaを一通り勉強してから
VBをやってみるというスタンスのほうが良さそうですね。

ご返答ありがとうございます。
471454:02/02/27 16:15
皆さん、ご返答ありがとうございます。
>>458

RichTextBox1.SelStart = Len(RichTextBox1.Text)

あるいは、

RichTextBox1.SelStart = clngとっても大きな数
473458:02/02/27 16:29
>>472
ご返答ありがとうございます。
早速、試してみました。
感動しました!
本当にどうもありがとうございました。
474デフォルトの名無しさん:02/02/27 16:39
>>461
相談スレ3つとも閑散としている

>>464
イイヨ

475超初心者:02/02/27 16:40
私の探し方が悪いのですが、
どうしても分からないのでお願いしたいのです。

ボタンをクリックするとマイドキュメントを開くようにしたいのですが、
マイドキュメントやお気に入りのような特殊フォルダ(?)のパスの取得は
どのように行えばよろしいのでしょうか。
レジストリを読み込めばいいのでしょうが、
Getsettingでは"VB & VBA Program Settings"以下のパスしか読み込めないみたいなので・・・

<愚痴>
金が惜しいからって
全くの初心者にプログラムを書かせないで欲しいです先生(;´Д`)
>>475
HKEY_CURRENT_USER\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders
>>475
APIならGetSpecialFolderPathか、ShFolder.dllがあるなら
SHGetFolderPath。
478超初心者(475):02/02/27 17:28
>>476
(そのパスは分かってるって書けばよかった・・・こちらの説明不足です)
すみません、そこでそれを読み込むにはどうすればよいのでしょうか?
>>477
申し訳ないです、それを利用するにはどうしたらよいのでしょうか。

返事をいただいたのに申し訳ないのですが、
具体的にお願いできますでしょうか。
「もっと調べろよ」と思われるかもしれませんが、
超初心者なものでかなり行き詰まっているもので・・・ほんとうにすみませんです。

ちきしょう、うまく言葉がでない!
479477:02/02/27 17:49
>>478
I.E5以上ならこれで行けると思う。
Debug.Print GetSpecialPath(5か12)
いま会社なんでチェックできん。

Private Declare Function SHGetSpecialFolderPath Lib "SHELL32" Alias "SHGetSpecialFolderPathA" (ByVal hwndOwner As Long, ByVal lpszpath As String, _
ByVal nfolder As Long, ByVal fcreate As Long) As Long
Function GetSpecialPath(ByVal FolderID As long) As String
Dim St$, i&, rc&
St = String(260, Chr(0))
rc = SHGetSpecialFolderPath(0, St, FolderID, 0)
If rc = 0 Then GetSpecialPath = "": Exit Function
St = Replace(St, Chr(0), " ")
For i = Len(St) To 1 Step -1
If Asc(Mid$(St, i, 1)) <> 32 Then Exit For
Next
If i >= 1 And Len(St) >= 1 And i < Len(St) Then St = Mid$(St, 1, i)
GetSpecialPath = St
End Function
>>447
つーか、CじゃないんだからBooleanをLongと考えるなよ。
BooleanはBoolean。TrueかFalseを持つ変数。
aがBooleanだとしてそれを演算する必要ある?
JavaやVB.NET(Strict On)やC#なら怒られるよ。

BooleanはBooleanと考えTrueかFalseだけを代入するし、代入できない。
Booleanに型変換できる数値を入れたらBooleanに型変換される。
Booleanに型変換できる文字を入れたらBooleanに型変換される。
Booleanを数値に型変換したら0か-1になる。
Booleanを文字に型変換したら"True"か"False"になる。
BooleanはTrueかFalseしか保持しないのでNotで確実にトグルできる。

「怖くて使う気にならんな」って結局自分が変な使い方をしているだけじゃんw

ということで>>444さん、全然問題ありませんよ。
481超初心者(475):02/02/27 18:31
すみません>>477さん、
わざわざ書いていただいたところで恐縮なのですが、
GetSpecialFolderPathを検索したら参考になりそうなものを見つけてしまいました。

でも、このGetSpecialFolderPathという命令文(?)も
ここで聞かなかったら分からなかった事なので感謝です!本当にありがとうございました
482デフォルトの名無しさん:02/02/27 18:42
Form_Load()中にUnload Meってやっても無視されますか?
終了してくれないのですが・・・。
Private Sub Form_Load()
Unload Me
End Sub

終了しますけど。
>>482
なんか処理中だったり解放し忘れてると終了しないよ。
485名無しさんです:02/02/27 21:21
リストビューで質問です。
コード側からアイテムを選択して、そのアイテムがリストビューの
表示範囲の外だった場合、選択したアイテム周辺を表示範囲内に
もってくることってできるのでしょうか?
フックやサブクラス化しなければできないのであればあきらめますw
(Win98なんでデバッグがしずらい為)。
486デフォルトの名無しさん:02/02/27 21:44
1.「text1とtext2に数字を入力」
2.「command1を押すと、text1からtext2までの数字の中から、ある条件(割愛)に
  見合ったものだけを抽出し、」
3. text3(MultiLineプロパティはTrueにに、上から順に逐一改行されながら表示
  されていく。

・・・というものを作っています。
「3」の部分で行き詰まっておりまする。改行ができんのですたい。
「改行コード」やらなんやらで検索してみましたがわからんとです。
どうぞお助け下さいませ(嗚咽)
487名無しさんです:02/02/27 21:47
「改行コード」 << ヘルプで検索したら出てこないかい?
488486:02/02/27 21:47
< 3.text3(MultiLineプロパティはTrue)に、上から順に逐一改行されながら表示
  されていく。

でした。
「文字列の定数」で検索
490464:02/02/27 21:58
エクセルVBAの質問なんですが、
繰り返し処理でセルを次々に指定したい場合どうすれば良いんでしょうか?
cで言う

for(i=0;i<10;i++){
list[i][0];
list[i][0]=i;
}

みたいな処理です。

491486:02/02/27 22:09
レスくれた方々にまずは感謝しつつ。
まだうまくいきません(泣)

Dim a As Integer
For a = Val(Text1.Text) To Val(Text2.Text)

(ここに抽出条件文)
(そして書き出し)Text3.Text = Label1.Caption & vbCrLf

next a

・・・と、こんな文にしてるのですが、どうもループの過程で
新しく抽出したものがその都度上書きされるようなのです。
「改行しながら付け足していく」という風にしたいのですが・・・
しくしく。
492名無し:02/02/27 22:12
VB.NETでVBが劇的に変わるので、さっさと覚えないと
VBプログラマーは失業するだろうな。

http://www.zdnet.co.jp/news/0101/19/e_vb.html
Text3.Text = Text3.Text & Label1.Caption & vbCrLf
ループの回数が多いようなら直接Text3.Textに代入するより
文字列変数に入れていき最後にText3.Test = strとした方が速い。
>>492
一年前からVB.NET使ってますが何か?
495486:02/02/27 22:24
できました。
結局改行コード以前のスキル不足だったようで。
最終的には493さんのご指導でうまくいきました。
ありがとうございました。
他にレスをくれたみなさんにも深く深く感謝です<(__)>
496`:02/02/27 22:42
`
497デフォルトの名無しさん:02/02/27 22:45
フォームにText1というテキストボックスを配置しました。
起動時にここに自動的にカーソルが行くようにしたいのですが

Private Sub Form_Load()
Text1.SetFocus
End Sub

これだとエラーになってしまいます。
どうしたらいいのでしょうか。アドバイスをよろしくおねがいしますm(_ _)m
Text1のTabIndexを0にしなさい。
499デフォルトの名無しさん:02/02/27 22:55
お言葉どおり単にフォームにテキストボックス1個を置いた
だけなら、何もしなくてもフォーカスはテキストボックスに
行くはずです。
もし他にもコントロールが置かれており、起動時にそのうち
のどれかにフォーカスがいく、ということであれば、

Private Sub Form_Load()

Text1.TabIndex = 0

End Sub


これでよいでしょう。
500497:02/02/27 22:59
>>498-499
うおー!ばっちりです!
本当に感謝です。ありがとうございました〜
501デフォルトの名無しさん:02/02/27 23:05
>>492
へぼライターの書くことをそのまま鵜呑みにするぐらい無知なのか。
NETになってもたいして変わらないよ。
502デフォルトの名無しさん:02/02/27 23:06
>NETになってもたいして変わらないよ。
バグの多さもね。
503デフォルトの名無しさん:02/02/27 23:20
山本信雄のVisual Basic vol.1 初めてのプログラミング
読んでるけど、なかなか良いね。
一日で200ページ読んだ。
http://www.amazon.co.jp/exec/obidos/ASIN/4881357182/qid=1014819612/sr=1-7/ref=sr_1_2_7/250-4218930-7128232
>>502
.NETを使うときに備えてそのバグについて聞きたいんですが…。
>>504
SP10がでるまでお待ちください。
>>485
List1.ListIndex=そのアイテムのインデックス
はいかんの?

>>490
dim st$,i&
for i=1 to 10
st=worksheet.cells(i,1)
next

こんなかんじ。WorkSheetはその状況によってセットすれ。

>>501
かなり変わるけど、使えるかどうかは別問題、って感じでない?
507485:02/02/28 01:49
>>506
う、リストボックスではなくリストビューなのです…。リストボックスだと
勝手にスクロールしてくれるのですが、リストビューではなぜか選択
しても選択アイテムのある場所へスクロールしてくれないのです。
なにか見逃してるのかなぁ。
>>507
それ俺も昔悩んだことあるわ。
あきらめたけど(じゃあ書くなよってか・・)
509485:02/02/28 01:57
>>507
>あきらめたけど(じゃあ書くなよってか・・)

いえいえ、同じ事で悩んでる(た)人がいるだけで少し安心
しますw。これが「んなもんもできんのかヴォケ!」ってな
レスだと「え、マジ?」ってなりますが。
>507
MSDNあさってみたら ListItem.EnsureVisible ってのがあった。これか?
511485:02/02/28 02:14
>>510
で、できたw

イイワケさせてもらうと、実はさっきListItem.EnsureVisible で
ためしたのですが、.EnsureVisibleの後にイコールを打ったら
tureかfalseを選ぶ項目が出てきたので「= True」にしてたら
怒られたんです。「= True」を消したら見事にスクロール
しました…。例を見れば一発でしたね。

ワラってやってくださいw
512デフォルトの名無しさん:02/02/28 03:27
お聞きしたいことがあります。
Pictureボックス内で領域を作って、それぞれの領域(座標に)あるときに
それぞれの指示を出せるようにしたいと思ってます。

With50、Height50のPictureボックスを用意したとして、
対角線で区切った4つの領域を作って、それぞれの領域を1,2,3,4とします。
そして描画APIのMoveToEx〜LineTo等を中心から外に向かって一本描いて
その終点の位置(座標)が1,2,3,4の、どの領域にあるか、チェックしたい
のです。
この直線はTimerイベントで時計の針の様に(ちょっと違うのですが)
つねに動いていて、各領域を行ったり来たりしている状態にします。

☆領域の分け方、今どこの領域を指しているかのチェック、そして
領域の境目の処理(境目はどちらかの領域になるように)
教えて下さいまし。お願いします。
コードを記述してもらえると助かります。

>>512
今から宿題かい? おつかれさま。
終点の位置がわかってるなら、答えはすぐ出ると思うが?
自分で点を描画してるわけだし・・・。
まぁ、しばらく自分でがんばってみなよ。
514デフォルトの名無しさん:02/02/28 03:50
>>512
コードを求めるのは禁句だ。
内容的には中三の数学だな。

515デフォルトの名無しさん:02/02/28 03:53
>>512
極座標で求めると、境界で苦労する。
516:02/02/28 05:28
コマンドボタンの色を変えたいときはどうすればよいのですか?
BackColorプロパティを変えればいいのかと思ったらちがうようです。
BackColorは「オブジェクト内の文字やグラフィックの表示で使用する背景色を設定します。値の取得も可能です。」
とあるのですが、これを変更しても何の変化もありませんでした。「オブジェクト内の文字」というのは、Captionプロパティのことではないのですか?
>>516
Command1.Style = 1
518デフォルトの名無しさん:02/02/28 05:48
>>513,514,515
そ、そうですか。中三の数学かぁ。
質問をレスしてから今までは、違う考え方で奮闘してました。
ところで、一ついいですか。
「もしx,y座標が・・・だったら」というのはどう書けばよいのでしょうか?
If…Then・・・

519516:02/02/28 06:00
>>517
ありがとうございました。
>>518
if x=○ and y=× then ...
こんなんでいいのか?
521デフォルトの名無しさん:02/02/28 08:34
テキストボックスの中身をマウス等でいじらせない為に、プロパティの「Enabled」を「False」にしたんですが、文字がグレーになってしまうため、
しっくりいきません・・・。黒い文字のままで、文字をいじらせないようにする
良い方法はありませんですか?
>>521
Text1.Locked=trueだったかな?
523デフォルトの名無しさん:02/02/28 09:43
>>521
背景が白のLabelとかな
524デフォルトの名無しさん:02/02/28 10:29
>>522
>>523
おっ!上手くいきましたですっ。
ありがとうです。
525デフォルトの名無しさん:02/02/28 10:58
TDBGridを使わないでGridでチェックボックスって出せますか?
お願いします。
526デフォルトの名無しさん:02/02/28 11:00
>>520
>>518です。
どうもです。それでいけるのでしょうか?
後でやってみます。もろX,Yそのまんまですね。
また・・・それでよいか確認すること俺にできるかなぁ?
まあ、適当に本屋とかネットに行こうかな。
527デフォルトの名無しさん:02/02/28 11:13
>>518
中3に聞けよ!
528デフォルトの名無しさん:02/02/28 11:48
すみません、wavファイルを再生するにはどうしたらいいのですか?
ヘルプを見てもよくわからなかったので教えてほしいです。おねがいします。
>>528
sndPlaySound
530528:02/02/28 11:58
>>529
さっそくのレスありがとうございます。
sndPlaySoundというキーワードをヘルプで探しても見つからないのですが、構文について
もう少し教えてもらえると非常にうれしいです。
531529:02/02/28 12:17
532528:02/02/28 12:40
>>531
ありがとうございました。
533デフォルトの名無しさん:02/02/28 15:29
ACCESSなんですけど…

TransferSpreadsheet
をつかってテーブルの内容をEXCELに書き込みたいんだけど
うまくいかないッス
ファイル(***.xls)だけはできるんだけど中身が無し
もう一度実行するとうまくいく…
出力するセルの位置が決まってるから
OutPutToだとだめなんです…
ちなみに97です
>533
エクセルオブジェクトとRecoadSet使って転送してやれば?
535椎名法子:02/02/28 15:56
VB6のヘルプみたいなのを自分で作りたいのですが
作り方がわからないので教えて下さい。

*.CHMをフォームに貼ることができるのでしょうか?

*.CHMにJavaScriptを入れて CHMが開かれた時
JavaScriptに引数を渡せるのでしょうか?
536デフォルトの名無しさん:02/02/28 15:56
PictureBoxに描画したものをイメージファイルにして
保存するにはどうしたらいいですか?
>>536 MSDNからコピペ
 
SavePicture ステートメント


オブジェクトまたはコントロールに関連付けられた Picture プロパティ
または Image プロパティのピクチャをファイルに保管します。

構文

SavePicture picture, stringexpression

SavePicture ステートメントの構文の指定項目は次のとおりです。

指定項目 内容
picture ピクチャ ファイルに保管するピクチャを持つピクチャ (Picture)
コントロールまたはイメージ (Image) コントロールを指定します。
stringexpression ピクチャを保管するピクチャ ファイルの名前を指定
します。


解説

デザイン時または実行時にオブジェクトの Picture プロパティにファイル
からピクチャをロードしたとき、そのピクチャがビットマップ、アイコン、
メタファイル、または拡張メタファイルであれば、元のファイルと同じ形式
で保管されます。GIF ファイルまたは JPEG ファイルであれば、ビット
マップ ファイルとして保管されます。

Image プロパティ内のピクチャは、元のファイルの形式にかかわらず、
常にビットマップ (.BMP) ファイルとして保管されます。
539デフォルトの名無しさん:02/02/28 16:26
マウスの中央ボタンをスクロールさせるとIE等は上下にスクロールするじゃないですか。
あれをVBで検出する事は出来るんでしょうか?調べてみたんですが、よく判りません・・

中央ボタンでフルキシルグリッドを上下にスクロールさせたいのですが・・
TabStripコントロール上にラベルって張れないんでしょうか?

また、TEXTBOXのEnablをFalseにした時、Textのフォントを黒のままにしたいのですが、
何か方法はありますでしょうか
>>540
hWndを持つコントロールの上にhWndを持たないコントロールを載せることは
出来ない。MSDNにのどっかに書いてある。

>Textのフォントを黒のまま
>>522参照

せめて最新50レスぐらいは見ようぜ。
>>541
ありがとうございます。

ただ、Lockedと違って、Enableみたいにカーソルも当たらないようにしたいのです。
無理っすかね。。。。
543デフォルトの名無しさん:02/02/28 18:14
>>542
>>543

馬鹿
544デフォルトの名無しさん:02/02/28 18:14
>>542
>>523

馬鹿
545デフォルトの名無しさん:02/02/28 18:52
MSFlexGridのFormatStringプロパティに入れる文字列式がよくわかりません、
どなたか教えていただけませんか?例を出していただけると有難いです。
ちなみに現在セルの横幅を指定しようと悪戦苦闘しています・・・。
546さくさく:02/02/28 19:27
すみません。どなたか教えてください。

VBとか他の4GLとかで外部関数(DLL)インターフェースを持つ言語で作ったWinのアプリからMAPIを使用してMicrosoftのMailerから受信したMailを見たいのですが、
OutlookのMailの本文を取得するとencodeがかかったリソースのまま取得してしまいます。
MSFCのインタフェース(DLL)で、encodeタイプを指定したら2バイトコードに変換してくれるようなものってご存知ないですか?(decoder?)
ちょっと調べてみたのですが、分かりませんでした・・・
よろしくお願いしますっっっ
>>546
MAPI使ったことないからよく分からんけど
文字コード変換はNKF32.DLLが便利。
548デフォルトの名無しさん:02/02/28 20:46
どうでもいい話だが聴いてくれ
この前といってもつい8時間前だがいつものようにエロゲーをやっていた。
そしてさてやるかと思い紙を取ろうとしたら紙がなかった。
しかたがないと妹の部屋に行ってもっらてくるかと思い。
ちょうどこの時間いつも妹は部活に行っていない。
紙は時どきもらっている。
折れは自分の息子をおっ立ててノックもしないでドアをあけた。
妹がいた。
「びっくりした、なにいきなり、ぁ」妹がいった。
たぶん「なにいきなり」と妹がいったとき
気がついたのであろう自分に向かってまっすぐ伸びた兄の息子に
折れは額から流れる汗を感じながら思った。
「なぜ泣く」
不幸は続くものだ。
その後、父親がその騒ぎに気がつき来たそして事情を知り部屋で話そうと言われた。
部屋のパソコンには某ファンディスクの画面が映し出されていた
それも画面には都合がいいようにサンタクロースのカッコをした某キャラが
それも画面の文字には「お兄ちゃん」というのが映し出されていた。
『もういいよ』
やっと今さっき20分前に両親から開放された。両親はまだ話し合っている。
もう前のようなれないと思ったそんな日のこと
かんどうした!
550デフォルトの名無しさん:02/02/28 22:07
>>548
正直泣いた。板違いと分かってても涙を押さえられなかった。
生きれ。生きれば良いことある。なんて思った。俺が氏のう・・・。
>>548
もう飽きたから止めれ。これでそれ見たの3度目だ。
>>551
奇遇だな。
俺も3度目だ。
そんでもって551の様なレスを見たのも3度目だ。
さらにこんなレスしてる俺も3度目だ。
553デフォルトの名無しさん:02/02/28 23:08


’---------------------VBの話に戻る------------------------------



554デフォルトの名無しさん:02/02/28 23:11
「ボタンを押すと、Hello と表示する」というプログラムで、、、

表示部分を、テキストボックスにして、
Private Sub Command1_Click()
Text1.Text = "Hello"
End Sub
これだとちゃんと表示します。次に、表示先をラベルにして、

Private Sub Command1_Click()
label1.Text = "Hello"
End Sub

だと、メンバーがありません、とかいうエラーになります。
なにがいけないのでしょうか。
label1.caption = "Hello"
556デフォルトの名無しさん:02/02/28 23:15
自己レス。
Private Sub Command1_Click()
Label1.Caption = "Hello"
End Sub
にしたら動きました。
ラベルにはtextメンバがないから、代わりにCaptionメンバを使わないといけないんですね。
漏れってお茶目。
557デフォルトの名無しさん:02/02/28 23:16
>>555
そうですね。今度から気をつけます。レスありがとうございます。
558デフォルトの名無しさん:02/02/28 23:33
>>539
APIで"MSWHEEL_ROLLMSG"を送る。

>>557
VB.NETでは、Label1.Text になる。
先取りしたわけだ。
559デフォルトの名無しさん:02/02/28 23:36
exeから、埋め込まれている画像等を抜き取ることは可能ですか?
560デフォルトの名無しさん:02/02/28 23:37
>>539
フルキシルグリッドはネタですか?
>>559
可能です。頑張ってください。
562WebPro住人:02/02/28 23:46
>>561
私のつかっているルーターの設定はcgiで処理されていて
エディタで開いた時点でエイリアスを発見しました、
どうにかして仕組みを知りたいのです、どうか力を貸してください
563デフォルトの名無しさん:02/02/28 23:47
>>559
可能。
専用ツールもあるけど、VBやってるなら、ヘッダ探して、切り出すのも簡単。
>>562
あなたの言っている意味を知りたいのです。でも力は貸さないで下さい。
565デフォルトの名無しさん:02/02/28 23:51
最近発見した事。

bmpは37ビット以降に画像データが入っている
>>562
もうちょっとWinプログラマに分かるように言ってくれ。

>>565
(゚Д゚ )ハァ!?
567デフォルトの名無しさん:02/02/28 23:58
>>565
37ビット以降って、5バイト目の途中から?(笑)
ちなみに、BMPのヘッダサイズは可変。
568仕様書無しさん:02/03/01 00:21
>>567
パレット情報がヘッダに入る可能性があるんだっけ?
BITMAPINFOHEADER 構造体 …だったか、何だったか。

あぁ…最近 API触ってねぇな…。
569デフォルトの名無しさん:02/03/01 00:28
>>568
そう。色数によってパレットテーブルのサイズが変わるから。
ちゃんとオフセット値があるから、ゴミも置けるかな。
>>568
24bitビットマップ限定、ビットをバイトに置きなおしても違うぞ。
55バイト目以降だ。
571デフォルトの名無しさん:02/03/01 00:57
プログラムを実行させた時に、
指定のPictureBoxやCommandボタンの上にマウスポインタを置くと
マウスポインタが見えなくなるように出来ますか?
実行時はずっと見えないようにするのでもいいです。
572デフォルトの名無しさん:02/03/01 01:10
>>571
コントロールの上なら、MousePointerで、何もないカーソルを指定。
まとめて非表示にするなら、APIの ShowCursor。

>>571
MousePointerに透明のアイコンを指定してもいいよ。半分ネタだけど。
574デフォルトの名無しさん:02/03/01 01:16
>>572,573

ありがとうございます。
>>562
誤爆?
ところでそのルーターはAirStationかね?
TextBoxの背景に無理矢理画像を描画したり
ライン引いたりすることって出来るでしょうか。
って書いた矢先に自力で出来ました。
失礼しました。
578576,577:02/03/01 02:08
あ、でも文字の上に描画されちゃうな・・。
文字の下に描画したいんですけど、そうしたかったら画像描画したあとに、
テキストボックスの中の文字を更に上から書いてやるしかないですかね。
579仕様書無しさん@568:02/03/01 02:15
>>570
ん… >>565 は俺が言った訳じゃないよ。
俺はとりあえず、bitと byteを混同するほど痛くはない。(w

ドウデモイイカラ sage
580578:02/03/01 02:17
ふむ・・できた。
SetBkMode hDC, Transparent
したあと、TextOutで上から描画したらうまいこと動いたけど、
これだと改行が入った時だめだな・・・1行毎に分割して
行数分ループして毎回TextOutするしかないかな。

なんかさっきから自己完結してばっかりな気がする。
581仕様書無しさん@568:02/03/01 02:21
>>578
hDC取って、描画したあとに、文字を…か。
無事に行けるかどうかは、TextBox側の表示処理時の実装依存だね。

文字の更新の度に再描画しなきゃならんし。
PictureBoxでそれっぽくやる方が簡単かもしれんよ。
582仕様書無しさん@568:02/03/01 02:22
あ、解決してる。

逝ってこよ…(w
583VBAでもいいかい:02/03/01 02:38
エクセルでVBA使おうとしてるんだけど、テキストボックス100個
作って最初にデフォルト値を入れておきたい。
でも、テキストボックスの初期化のためにTextBox1.text = 65000 を
100行も並べないとだめなのかい?
よさげな方法を教えてくれないかい。
584デフォルトの名無しさん:02/03/01 02:58
>>583
VBAでもFor〜Next使えるかい?
コントロール配列はどうだい?
TextBox100個って、クソ仕様じゃないかい?
585デフォルトの名無しさん:02/03/01 03:25
VBAで、「"C:\test.html"をDreamweaverで開く」を実現できますか?
(htmlファイルはIEと関連付けされています)
586デフォルトの名無しさん:02/03/01 03:29
>>585
Shell関数が使えるなら、Shell " (ここにフルパス)DreamWeaver.exe c:\test.html"
587570:02/03/01 10:13
>>579
あ、そうなのね、ゴメソ。
588さくさく:02/03/01 10:41
547さん
NKF32.DLL、試してみます。
レスありがとうございました!!!
589デフォルトの名無しさん:02/03/01 11:40
VBとACCESSで開発してます
VB側でinsertを100回実行し実行後、
次ぎの処理でinsertしたテーブルのレコードをカウントすると70件くらいです
しばらくするとちゃんと100件になります
おそらくACCESS側で処理が完了していないうちにVBから次々とinsert文がおくられ
てるんだと思います
1回insertを行なう毎に処理が完了するまで待たせるような事はできないのでしょうか?
>>589
使用しているconnectionかdatabaseを同じにしなさい。
591VBAでもいいかよ:02/03/01 12:26
>>584
繰り返し文を使いたいのだけど、
VBAにはコントロール配列が無いように見えるのだよ。
TextBoxにindex項目が無いのさ。
TextBox100個はクソ仕様か、やっぱり。
だれか教えてくれ。
>591
エクセルならセルに値入れといてもいいと思うけど、何がしたいの?
フォーム作らないとダメなの?100個も入力するところあるのに?
>>591
俺もTextBox100個はクソ仕様だと思うが、
TextBoxに名前でアクセスできなかった?
たとえばMe.Controls("Text" & i)のように。
出来るならそれで使うとか、配列に入れてから使うとか。
594デフォルトの名無しさん:02/03/01 13:47
http://www777.dot-koi.com/index.html
ここのゲームのオート化ってどうやるんですか?
595デフォルトの名無しさん :02/03/01 13:57
VB5.0CCEが「アプリケーションの追加と削除」で削除できないのですが、
フォルダを手で削除してゴミは残らないのでしょうか。
もしくは、他に正しい削除の仕方があるのでしょうか。
596デフォルトの名無しさん:02/03/01 14:18
>>583
dim ctr as control

for each ctr in me.controls
if typename(ctr)="TextBox" then ctr.Text="65000"
Next
>589
AccessのDocmdオブジェクトのメソッドは非同期実行だからズレが出るぞ。
598デフォルトの名無しさん:02/03/01 15:35
>589
conn.begintrans
conn.committrans

rst.updatebatch
使えばいいんじゃないの?
599デフォルトの名無しさん:02/03/01 15:49
VB6ではCreatethreadは使えないんでしょうか?
>>599
ムリー。
601デフォルトの名無しさん:02/03/01 16:08
APIでネ♪
でも不安定極まりなし!
>>601
IDE上では動いててもコンパイルすると動かなかったりするよね。
漏れはあきらめた。
603VBAでもいいぜよ:02/03/01 16:20
>>596
me.controls
Meキーワードの不正と言われる。
VB6なら書けるのか?
604デフォルトの名無しさん:02/03/01 16:25
>602
VB側の変数の値を変更しちゃいけない。
VB側の関数を呼び出しちゃいけない。

こんな規則で使える処理って何?って感じ♪
605デフォルトの名無しさん:02/03/01 16:28
>603
VBAってMe使えたっけ?

Forms("frmMain").Controls("txtHoge").Name
とかじゃなかった?
606デフォルトの名無しさん:02/03/01 16:47
ADOで接続したレコードセットを、adLockReadOnlyで設定していたのを、
レコードセットを新たに取得しないで、すぐにadLockOptimisticに変えることはできますか?
607607:02/03/01 17:09
Microsoft Forms 2.0 Object Library で追加したコントロールで
Image を使っているのですが、これを更新させるのにはどうしたら
良いのでしょうか?

Refresh メソッドはないみたいだし。
608デフォルトの名無しさん:02/03/01 17:33
>>603
悪い、何かEXCELのVBAは特殊らしい。
今見たけどControlsが見当たらん。

てっきりAccessで使えるからExcelでもと思ったんだが..すまぬ
>>608
ふむ、確かによく分からん。たしかに、Controlsが見つからん。
TextBoxはWorksheetに置いているだよね?
EXCEL2000なら最悪CallByName(Me,"TextBox" & i", vbGet)で
TextBoxを取得できるがこれより良い方法があるかもしれん。
後は詳しい人に任せる。
610デフォルトの名無しさん:02/03/01 18:36
みなさん、こんにちは

PictureBoxコントロールにAPI(TextOutなど)を用いて描画したフォントを
imageコントロールに代入できないのでしょうか?

Pictureプロパティ、imageプロパティのどちらも代入できませんでした。


API(TextOutなど)で描画したフォントは上に別のフォームが重なると、
その部分の文字が消えた状態になっています。
こういうことも関係しているのでしょうか?
>606
普通、最初からOptimisticで開くと思うが。
612607:02/03/01 18:48
>>607
Enabled プロパティを False にして、すぐ True にしたら、一応
目的の動作をしているように見える。これで大丈夫か。
613デフォルトの名無しさん:02/03/01 19:16
>>610
--------------------------------宣言--------------------------------
Const SRCCOPY = &HCC0020 '転送先=転送元

Private Type POINTAPI
X As Long
Y As Long
End Type

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function BitBlt Lib "GDI32" (ByVal hDestDC&, ByVal X&, ByVal Y&, ByVal nWidth&, ByVal nHeight&, ByVal hSrcDC&, ByVal xSrc&, ByVal ySrc&, ByVal dwRop&) As Long
Private Declare Function GetDC Lib "USER32" (ByVal hWnd&) As Long
Private Declare Function GetWindowDC Lib "USER32" (ByVal hWnd&) As Long
Private Declare Function GetForegroundWindow Lib "USER32" () As Long
Private Declare Function GetWindowRect Lib "USER32" (ByVal hWnd&, lpRect As RECT) As Long
Private Declare Function CreateCompatibleDC Lib "GDI32" (ByVal hDC&) As Long
Private Declare Function CreateCompatibleBitmap Lib "GDI32" (ByVal hDC&, ByVal nWidth&, ByVal nHeight&) As Long
Private Declare Function SelectObject Lib "GDI32" (ByVal hDC&, ByVal hObject&) As Long
Private Declare Function DeleteObject Lib "GDI32" (ByVal hObject&) As Long
Private Declare Function DeleteDC Lib "GDI32" (ByVal hDC&) As Long
Private Declare Function ReleaseDC Lib "USER32" (ByVal hWnd&, ByVal hDC&) As Long
------------------------------関数-----------------------------------------------
rc = GetWindowRect(hActiveWnd, R)
W = R.Right - R.Left
H = R.Bottom - R.Top
hSourceDC = GetWindowDC(hActiveWnd) 'フォーム全体のDC
hMemoryDC = CreateCompatibleDC(hSourceDC) 'デバイスコンテキストと同じ属性のメモリーを確保
hBMP = CreateCompatibleBitmap(hSourceDC, W, H) 'メモリー上のBMPのハンドル
rc = SelectObject(hMemoryDC, hBMP)
rc = BitBlt(hMemoryDC, 0, 0, W, H, hSourceDC, 0, 0, SRCCOPY) 'イメージをコピー

'デバイスコンテキストを開放
rc = DeleteObject(hBMP)
rc = DeleteDC(hMemoryDC)
rc = ReleaseDC(hActiveWnd, hSourceDC)
-------------------------------------------------------------------------------------------------------

俺にはコレくらいしか思いつかん。
あとはうまい事改良してくれ
614デフォルトの名無しさん:02/03/01 19:29
Timer1_Timer()イベントがとても長くなってしまった場合
Timer2を作って、そっちにイベントを振り分けたりした方が
良いのでしょうか?
教えて下さい。
Timer2など作らずに、普通に関数にわければ。
616デフォルトの名無しさん:02/03/01 19:38
>>615
関数に分けるというのは>>613の-関数-のところの
rc = GetWindowRect(hActiveWnd, R)みたいにすることですか。
リアル初心者ですか?コボラーですか?
SubステートメントとかFunctionステートメントのヘルプを見ましょう。
618デフォルトの名無しさん:02/03/01 19:45
>>611
最初にDataGridで全レコードを表示して、そこから各レコードを選んで、別のフォームへ飛ばして修正
(Update)をさせたいので、最初からOptimisticにすると、DataGrid内でレコードの
改ざんできちゃう(変更される)ので、DataGrid内は閲覧のみにしたいのです。・・・。良い方法はないでしょうか?
619デフォルトの名無しさん:02/03/01 19:49
>>618
キー部を引数にして新たにレコードセット開けば?
620デフォルトの名無しさん:02/03/01 19:50
>>617
もちろん初心者ですよ。
>>620
そこは「初心者過ぎてスミマセン」と書くべきところだ。
「もちろん」では、開き直っている様に受け取られても仕方ないよ。
622613:02/03/01 20:19
>>610の返答が無いのが気になる。やはり説明が悪かったか。
とりあえず関数にしてみた。>>613の宣言部の下に以下のコードを書いてくれ。
とりあえずTestはした。ちなみに
T1=TextBox
P1=PictureBoxの事だ。

Private Declare Function OpenClipboard Lib "USER32" (ByVal hWnd&) As Long
Private Declare Function EmptyClipboard Lib "USER32" () As Long
Private Declare Function SetClipboardData Lib "USER32" (ByVal wFormat&, ByVal hMem&) As Long
Private Declare Function CloseClipboard Lib "USER32" () As Long
Private Sub SetPicFromText(ByRef tHwnd As Long, ByRef pHwnd As Long)
Dim R As RECT
Dim rc As Long, H As Long, W As Long, hSourceDC As Long, hBMP As Long, hMemoryDC As Long
rc = GetWindowRect(tHwnd, R)
With R
W = .Right - .Left: H = .Bottom - .Top
End With
hSourceDC = GetWindowDC(tHwnd) 'フォーム全体のDC
hMemoryDC = CreateCompatibleDC(hSourceDC) 'デバイスコンテキストと同じ属性のメモリーを確保
hBMP = CreateCompatibleBitmap(hSourceDC, W, H) 'メモリー上のBMPのハンドル
rc = SelectObject(hMemoryDC, hBMP)
rc = BitBlt(hMemoryDC, 0, 0, W, H, hSourceDC, 0, 0, SRCCOPY) 'イメージをコピー
rc = OpenClipboard(Me.hWnd) 'クリップボードをオープン
rc = EmptyClipboard(): rc = SetClipboardData(2, hBMP) 'BMPをクリップボードへ
rc = CloseClipboard()
'デバイスコンテキストを開放
call DeleteObject(hBMP):call DeleteDC(hMemoryDC): call ReleaseDC(tHwnd, hSourceDC)
End Sub
Private Sub Form_Load()
P1.AutoSize = True : P1.AutoRedraw = True
End Sub
Private Sub T1_LostFocus()
Call SetPicFromText(T1.hWnd, P1.hWnd): P1.Picture = Clipboard.GetData(2): P1.Refresh
End Sub
623デフォルトの名無しさん:02/03/01 20:48
複数行にして縦スクロールバーを表示したTextBoxの
スクロール位置を取得、設定する事ってできますか?
何行分スクロールアウトしてるか取得したり、
逆に何行分スクロールアウトさせるか設定して勝手にスクロールバーを動かしたり。
Call shell("app.exe 変数")
として
app.exeに
A=変数
Msgbox(A&"です")
と書いた場合、Msgboxに「Aです」とでてくる。。。
「変数です」と表示させたいのだが、、、どうしたら??
(もちろん"変数"というのは変数のこと。"変数"という文字列ではない)
625デフォルトの名無しさん:02/03/01 22:32
>>624
×A&
○A &

灰、次の人
626624:02/03/01 22:50
つーか内容をココに書き間違えてた
正しくは
Call shell("app.exe 変数")
として
app.exeに
A=command()
Msgbox(A &"です")
と書いた場合、Msgboxに「Aです」とでてくる。。。
"変数"は文字列である("変数"という文字ではない。。。)

ご指導お願いします
627VBAはくそかい:02/03/01 23:18
つまりエクセルのVBAでは、TextBoxよりセルを使えと言うことで良いのだろうか?

VBやVBAでTextBoxをたくさん使うのは、良くないということね!
628デフォルトの名無しさん:02/03/01 23:19
>>623
APIを使う。

>何行分スクロールアウトしてるか取得したり、
Call SendMessage(Text1.hWnd, &HCE&, LineScrollNumber, 0&)の返り値が
表示先頭行だから、これから計算。

>何行分スクロールアウトさせるか設定して勝手にスクロールバーを動かしたり。
Call SendMessage(Text1.hWnd, &HB6&, 行数, 0&)で指定行数だけスクロールできる。

>>626
引数を渡してるのだから、自分でわかってるはず。
渡された場合は、たしかにCommand関数を使うけど。
629デフォルトの名無しさん:02/03/01 23:22
>>626
×Call shell("app.exe 変数")
○Call shell("app.exe " & 変数)

灰、次の人
630EXCELVBAは糞:02/03/01 23:23
>>627
そだね。セルがいちばんかも
631デフォルトの名無しさん:02/03/01 23:24
>>627
コントロールのムダ使いだからね。
コードも増えるし。
自分だったら、TextBox1個をクリックされた位置に動かす。
表示はラベルか、Formに直接描く(笑)。ちゃんと立体的に。

632623:02/03/01 23:46
>>628
感謝!
やってみます。
633デフォルトの名無しさん:02/03/01 23:48
>>617
Timerイベントが長くなったのは、Private Sub なんたら()でいくつかに
分けてCallで呼ぶようにしてみました。
うまくいったのですが、Picture.DrawWithが実行されなくなっちゃった。
まあいいか。
634デフォルトの名無しさん:02/03/01 23:54
LineToなどのAPIで線を描画する時に、ただ線を引くだけではなくて
何か表現のある線にすることはできますか?
例えば、ぼやけた線であったり、透明感のある線であったりなど・・・。
>>634
ペン変えろやホゲェ
636デフォルトの名無しさん:02/03/02 00:07
>>634
VBのLineも使えないくせに、LineTo使って、
くだらない質問ばかり繰り返すな!
小学生に聞いてこい!
>>636
クソスレあげんなホゲェ
>>626
変数名がそのまま文字列として扱われることは
ありえないので何かが間違ってる。

>>627
ま、使い方の問題っつーことで。
VBAは言語としては糞だがマクロとしては
よく出来てると思う。
俺も最初ExcelVBAやった時同じこと思ったケドナー

>>634
要するにアルファブレンドしたいんだよな?
線でアルファブレンドできる関数は基本的にないので
自前で計算すれ。
639626:02/03/02 00:35
>>629
やってみたら、「ファイルが見つかりません」っていわれた。。
一応ソースをUPしとく。
http://isweb28.infoseek.co.jp/art/tokorosa/test.zip
実行ファイルはウイルスチェック済みだけど、怖かったら「logoff」と「シャットダウン」からexeを作ってください。
ちなみにこの二つは、さっきの例でいうと"app.exe"に値します。
よろしくお願いします
640困ってます。:02/03/02 00:36
VBAで作ったプログラムに、アドインでパスワード設定したんですけど、
次に開こうと思ってパスワードを入れて開こうとすると、
ページ違反でexelが異常終了します。
バックアップとって無いので、どうにかして、ソースだけでも、
見れるようにしたいのですが、どうしたら良いでしょうか?
641デフォルトの名無しさん:02/03/02 00:51
>>640
ソースは、まめに保存すること。これが鉄則。
それと操作関係はビジネスSoft板のExcelスレで質問してね。
>>640
http://www.wotsit.org/
ここにxlsのファイルフォーマットが載ってる。(英語)

まあ、見れるようならセキュリティーホールなんだがw
643デフォルトの名無しさん:02/03/02 01:02
>>639
ソースがムチャクチャ。
バグ取りは、パーツに分解して確認。
パーツでわからなかったら質問。
ソース丸投げしたら、あかん。
>>643
アンタも酔狂な人やねw
645デフォルトの名無しさん:02/03/02 02:23
                 ∧_∧
               ( ´Д`) ・・・・・・・。
               /⌒   ヽ  
              /| |  /|. |
              / | |  /, |. |
             / | | ./ .|. |
            (  | | ∧_∧ 
             \ | |( ´Д`)_ ・・・・・・・・。
              ヽ\)    \)
             /  /| |  /|. |
            / / / | |  /, |. |
          / /. / | | ./ .|. |
          /   |(  | | ∧_∧
         uuuU゙゙ \ | |( ´Д`)_ ・・・・・・・・。
                ヽ\)    \)
              /  /| |  /|. |
             / / / | |  /, |. |
           / /. / | | ./ .|. |
          /   | (  ∪ \ ∪
          uuuU゙゙  \ \ \
                 )  ) )
                / //
               / //
              (__つつ
>>639
宣言されていない変数が、大量にあるのが…すごく気になる。
今のうちに変な癖は直した方が良いぞ。

>「ファイルが見つかりません」
そりゃそうだろうな。
Exe名のあとに、区切りが無いじゃん。
半角スペース入れろって。
# >>629 じゃ、入ってるのが解るよね?

Shell関数呼んだときに、変数の中身まで含めてExeだとおもってるってわけさ。
>>645
うぉ、こんなところに俺がモナ板で書いたAAが張ってあるw
ビックラこいた。
激しくスレ違いレススマソ
648プログラム歴2週間:02/03/02 03:31
VBでcgi等のパーミションをUPする前に設定する方法とかありますでしょうか

別にVBを使わなくてもいいんですが・・
649デフォルトの名無しさん:02/03/02 03:32
>>648
FFFTP で、拡張子によって、あらかじめパミションをふりわける機能あるよね。
>>648
自鯖か社内鯖?

>>649
それは便利。
651490:02/03/02 14:19
>>506
返事送れたけどthx
652490:02/03/02 14:43
>>506
でもやってみたらエラーでたヽ( ´д`)ノ
653プログラム歴2週間:02/03/02 14:50
>>ありがとうございまする!
654506:02/03/02 18:00
>652
オブジェクト無いぞゴルァ!ってエラー?
655 :02/03/02 18:27
配列があって、それを全て足したいいんだけど、
100個要素があるとき、for で100回まわさないと駄目でしょうか?。
>>655
うん。
657655:02/03/02 18:40
早速どうもです。
そうですか、じゃぁforでプログラム書きます。
>>647
128等身スレですか?
659デフォルトの名無しさん:02/03/02 23:07
>>613 >>622
質問者じゃないけど。動いた。汎用的で、すごく参考になった。
でも、610の質問内容とは違うような。
610は、AutoReDrawか、Refreshか、DeleteDCのやり忘れのような。
とっても初心者的な質問なのですが

If Text1.Text = "secret" Then
Form2.Show 1
End
Else
MsgBox ("パスワードが違います"), , "確認"
End
End If
というのを組みました。
 ですが上記のモノだとパスワードを入力する所が表示された状態で
別のフォームが出てきます。
パスワードの入力が合っていたら入力フォームを消して新しいフォームを
出すにはどうすればよいのでしょうか?
661デフォルトの名無しさん:02/03/03 00:05
>>660
上のコードだと、パスが違っていてもフォームを強制終了してる。
だから、2番目のEndを消してみたら?
しかし、上のコード、どのプロシージャに書いてるのかな。

それと、1番目もEndではなく、Unload Me を使え。
>>660
かってに補足。
Showの引数も1じゃなくvbModalと書け。
>>662
vbModalじゃなくても1でいいじゃん
664デフォルトの名無しさん:02/03/03 00:36
>>663
慣れないうちは数字を使いたくなる。それはよくわかる。
しかし、少しずつVB定数に慣れたほうがいいよ。
VB定数のほうが日数が経っても可読性がいいから。

>>663
煽りか? 初心者か? 馬鹿か?
1って書いたらvbModalかvbModelessか分からんじゃないか。
自分だけで使う(読む)なら>>663でもいいんじゃない?
いずれ定数使った方が分かりやすいって自分で気づくよ。
なるべく自分で分かった方が納得できるしね。
三つ子の魂百まで

つーか、俺が1じゃわからんのよ。実際に実行して調べたし。
それとも俺が馬鹿か?
668デフォルトの名無しさん:02/03/03 00:48
>>667
だいたいデフォルト値は 0じゃない?

そう言えば、MousePointer = VBNormal って
繰り返し書いてた上級者がいた(笑)。
669666:02/03/03 00:55
まあ定数ってのはたいていタイプ数多いからねえ。
SRCCOPY=&HCC0020とかは覚えちゃってる。悲しいかな。

>>667
普通だよ。当たり前だけど。
>>668
0ってなによ? 省略時の動きがどうなるのかなぞ覚えていない。

上級者じゃないが初心者でもないが、
何回言ってもMousePointer = 11って書くやつがいた。
(あぁ11がなにか覚えちゃってるよ。鬱)
671デフォルトの名無しさん:02/03/03 00:58
>>670
最初のうちは、11って書いてたよ(笑)。
HourGlass って日常的な英語じゃないからね。日本人には。
672デフォルトの名無しさん:02/03/03 01:25
VB6.0を始めたばかりでテンパっちゃったんでどなたか教えて下さい。

0〜7の8個の数字を並べ替えてできる数字の組合せのうち、
頭が『0』で始まらない数字を全てテキストファイルに書き出す問題出されたんですが、
書き込み方は分かるのですが、並び替え方がさっぱり分かりません。
どのようなアルゴリズムを考えればいいのでしょうか?

お分かりになる方、すいませんが教えて下さい。
うあーgoogleとかで調べてもわからずにずっと悩んでた
Shell Path & FilePath, vbNormalFocus

Shell Path & " " & FilePath, vbNormalFocus
である事が過去ログ見たらわかってヨカッター
ミンなきもち。
674デフォルトの名無しさん:02/03/03 01:54
>>672
サイズ的に考えると、重複しないで使うわけね。
重複する組み合わせなら、簡単でしょ?
ポイントは、一度使われた数字を使わないように
どうやってチェックするかだと思うけど、
いろんなやり方があるなあ。
>>673
Shell """" & Path & """ """ & FilePath & """", vbNormalFocus
こうしてないとそのうち引っかかるよ。
最初っからPathとFilePathにダブルクォーテーションが
含まれているなら別だが。
676672:02/03/03 02:07
>>674さん
そうです。同じ数字は使わないでという事です。
重複できるなら、forを8個入れ子にして出来そうですが、
重複しないとなると、今の自分にはさっぱり分かりません。
できれば、1つだけでもお教え下さい。
>>676
出題されたって事はさ。
他人に聞いて答え出すんじゃなくて、自分で考えろってことじゃ無いの?
色々思いついたままに組んでみて、うまくいかなければやり直せば良し。
本当に何も思いつかないわけ?
面倒なだけだろ?


頭悪いコード:
8桁全部そろった段階で、IF文で8個のループカウンタを全部判定。
if (A=B) or (A=C) or (A=D) or (A=E) or (A=F) or (A=G) or (A=H) or (B=C) or (B=D) or .....
'書き込まずに抜ける
else
'書き込む
end if

このコードは良くない例だ。
まぁ初心者はこれでも動けば良い方だと思うけども。
678むなし(笑):02/03/03 02:24
>>676
フラグを8個用意して、未使用の数字を先頭から探して、
最初に見つかったのを各ループで使うようにすれば?

再帰処理にすれば、優もらえるかな。
679672:02/03/03 02:52
>>677さん
お恥ずかしい話、これでも3日考えたんですけど、ずーと01234567から+1ずつ加算していって
なんとかならないかと思ってました。
でもさっき、674さんにレスもらった時に初めて0〜7をループすればいいと思いつきました、、、
1人で考えすぎて、やっぱりテンパってたようです。
教えて頂いた良くない例で1度コード書いてもっといいの考えてみます。

>>678さん
ありがとうございます。
でも、自分の頭足らずで、フラグは分かるのですが、未使用の数字をループで使うと
どううまくいくのか、今の時点ではチンプンカンプンです。
再起処理も分かってないので、677さんの例をコーディングしてみた後に、
よーく考えてみます。
ありがとうございました。
>>679
再帰だね
681デフォルトの名無しさん:02/03/03 04:06
>>679
まず思いつくのは、8重ループの一番内側でIf文を並べる解法かな。
しかし、これは遅い。
各ループに入ったらすぐ重複をチェックしたほうがずっと速い。
これが出来たら、フラグ法とか、コレクション法とか、順番に説明するよ。
8進数扱いしたほうが速いかなあ。
683初心者:02/03/03 11:24
質問です。
ファイルから文字列を読み込み、テキストボックスに表示する際、
タブは半角8個分の幅になりますが、これを半角4個分にすることは可能ですか?

684490:02/03/03 11:34
>>654
そうです。VB触るの初めてで勝手がわからんかったです。
でもイロイロ調べてく内に、望んだ処理をするようになったので解決です。
質問に答えてくださった方々、ありがとうございました。
685デフォルトの名無しさん:02/03/03 13:27
CreateObject 関数の引数はどうやって決めたらいいんですか??
参考書は CreateObject("Excel.Application") でエクセルを起動させているんですが
"Excel.Application" の部分はどうやって取得するんですか?
レジストリに情報があるんでしょうけど取得するツールとか有るんですか?
例えばメディアプレーヤーを起動させるには何て書けばいいですか?
なお自分はVBは持っていません。VBScriptの勉強をしています。
そこらへんも踏まえて教えてください。
(プログラミング自体は他の言語で経験あり)
>>685
> (プログラミング自体は他の言語で経験あり)
その言語がHSPとか言った日にゃあ(以下略
画面の端にフォームが近づいたら画面の端にぴたっと自動的にくっつく
ようにするにはどうすればいいのでしょうか?
>>686
HSPならまだいいがHTMLとかかもしれないよ
>>686
CASLだよ、きっと。
>>687
やったこと無いケド。
・画面サイズ(解像度)取っとく。
http://homepage2.nifty.com/inform/vbmania/source/screensize.htm
・リサイズと移動と両方で 自分の位置&幅&高さ を監視する。
・画面サイズと自分の位置の差がある一定より小さくなれば
・ぴたっとくっついた位置に移動させる。
って感じでイケそうだと思うんだけど。。。
Visual Basic 評価版はもう配布されていないんでしょうか?
まじな話、今時VBも触ったことがないなんてと驚かれるかもしれませんが、
VBは全くわからないのです。
DelphiでVBのプロジェクトファイル開けましたっけ?



694デフォルトの名無しさん:02/03/03 17:15
>>693
エラーはないけどい開けない。
つーか変な形で開かれる
695デフォルトの名無しさん:02/03/03 17:48
全米で五指に入るくらい初心者な質問で恥ずかしさ100倍アンパ
ンマンです。

0から10億までの数字を、ある条件に見合うかどうか検証させる
オモチャを作っているのですが、さすがに10億回もループさせよ
うとすると固まってしまいます。10万回くらいが限界のようです。
んで、そんなときには「スレッドを使えばよい」という話をちらっ
と小耳に挟んだのですが、そのスレッドとやらが何なのか、どうや
って使うのかがとんとわかりませぬ。心優しき御仁、ぜひご教授く
ださいませ。オラどうしてもフリーザを倒したいんです(泣)
>>695
フリーザを倒したいなら戦闘力10万くらいはないとな〜
>>695
10億回だろーが10兆回だろーがハングしない。
DoeventとSleep(API)使へ。

スレッドはどうせVBからじゃあ使う機会無いんで
もうちょっと勉強してからにすれ。
>>683
>ファイルから文字列を読み込み、テキストボックスに表示する際、
>タブは半角8個分の幅になりますが、これを半角4個分にすることは可能ですか?
 
 たぶん出来ない。windowsの定義済みコントロールクラスの仕様だから。
RichTextBoxならたぶん出来る。
699デフォルトの名無しさん:02/03/03 18:33
>>698
嘘はイカンぞ

replace(str,vbtab,space(4))でできる
700デフォルトの名無しさん:02/03/03 18:34
>>695
で、何がしたいんだ
>>683
SendMessageでEM_SETTABSTOPS使へ。

使い方はMSDN見れ。
702698:02/03/03 19:27
>>683,699,701
ごめそ、嘘ついた。
TextBox.multiline がTrue と False でタブの扱いが違うのいままで知らんかった。

鬱、もう逝く。

 
>>694,692
あー、開けないんですか。
デルファイは別になくてもいいんです。

評価版はないという事ですか?
>672
10234567から76543210までループを回して
各桁の数字の合計が28になるものを全部書き出す、
というのではどうか。
11111599
706704:02/03/03 21:06
げ、全然駄目じゃん。
頭から各数字の出現回数をカウントして、2回出現した数字があったらNG。
もちろん8,9があってもNG。で、全部OKだったら出力、に訂正。
707695:02/03/03 21:11
>700

自分は672とは別人ですが、作っていたものは
ほぼ704が述べてる通りのものです。偶然だけど。
708672:02/03/03 22:56
>>672です
>>677さんに教えて頂いたループの一番内側でIf文を書いたら、
>>679さんのおっしゃる通り、確かにウチのPCでは192秒も掛かりました。
だもんで、各ループに入って直ぐIf文で重複チェックに変え、
orを使わず条件を分けたりして、今の所、>>709のようにCase Select使って5.57秒になりました。
これでもまだ無駄が多い様な気がしますが、とにかく動きました。
ありがとうございます。

>>704さん
+1ずつ加算していく方法の参考になりました。ありがとうございます。
でも、ちょっと頭で考えただけでも0〜7のループより時間掛かりそうなので、
今回の自分のには合わなそうですね。
709672:02/03/03 22:57
Dim sData As String '書込み用文字列
Dim i, j, k, l, m, n, o, p As Integer 'ループ用カウンタ

For i = 0 To 7
For j = 0 To 7
Select Case j
Case i
Case Else
For k = 0 To 7
Select Case k
Case i
Case j
Case Else
For l = 0 To 7
Select Case l
Case i
Case j
Case k
Case Else
For m = 0 To 7
Select Case m
Case i
Case j
Case k
Case l
Case Else
For n = 0 To 7
Select Case n
Case i
Case j
Case k
Case l
Case m
Case Else
710672:02/03/03 22:57
For o = 0 To 7
Select Case o
Case i
Case j
Case k
Case l
Case m
Case n
Case Else
For p = 0 To 7
Select Case p
Case i
Case j
Case k
Case l
Case m
Case n
Case o
Case Else
sData = Format(i) & Format(j) & Format(k) _
& Format(l) & Format(m) & Format(n) _
& Format(o) & Format(p)

Print #FileNumber, sData
End Select
Next p
End Select
Next o
End Select
Next n
End Select
Next m
End Select
Next l
End Select
Next k
End Select
Next j
Next i
711672:02/03/03 22:59
>>672です。
すいません。上の(>>709-710)ウザクなってしまいました。
712デフォルトの名無しさん:02/03/03 23:03
>>708
If〜で、And条件を列挙しても、意外と高速だった。
If-2ではElseを使って条件判定を分解したら、
EXEにすると所要時間は同じになった。最適化?
(ループ変数を0〜7→48〜55、CStr→Chrにしてもほとんど同じ。)

配列フラグでは、Ifより遅くなった。

"01234567"から使った文字を次々と除いていくのが一番速かったが、
Ifはわかりやすいし、速度的に大差ないから、Ifでいいと思う。

方法  IDE  EXE  単位は秒 (ファイル保存時間含む)
------------------------------------
If-1  2.6  1.6  If And の列挙
If-2  2.3  1.6  If Else
Flg   3.8  3.2  配列フラグ
Mid   1.3  1.0  選択除去法

ちなみに、マシンは遅い。
713デフォルトの名無しさん:02/03/03 23:12
TextBoxの横スクロール位置を取得したいんですが、
どうすればいいんでしょうか。
縦スクロール位置はSendMessageでTextBoxにEM_GETFIRSTVISIBLELINE送ったら
何行スクロールアウトしてるか取得できたんですが、
横はどうやって取得したらいいのか分かりません。
(横の場合は行という概念がないからドット数?取得できればいいんですが)
714すまんが:02/03/03 23:14
大変すまないが、VisualBasic6.0 のインストール後、
F1キーを押しても「ヘルプが表示されません」って奴の、
原因か解決策書いてあったところ何処だっけ?
前に見たんだけどなー

環境再構築したら出なくなってしまったよ。(困;

MSDN入れてるか?というべたべたなのは勘弁してね(w

715デフォルトの名無しさん:02/03/03 23:19
>>703
からかわれただけよ。CCEの情報はここ。
http://www.int21.co.jp/pcdn/activex/actxvb5.html

>>704
6630万回のループをしろと?
それは質問者が最初に考えたよ。
0〜7に限定した、183万回のループでも時間がかかるのに。
ループの外側で判断すれば、3万5280回ですむ。
>>709,710
Case i, j, k, l のように書いても、If文みたいに全部評価したりしないから、
速いし、見やすいと思う。

それと、書式を指定しないのに、Format()を使うのは無意味。
CStr()で数値→文字変換できる。
717デフォルトの名無しさん:02/03/04 00:13
>>713
EM_GETTHUMB = &HBE でスクロールバーの位置が取得できるみたい。
使ったことないけど。

718713:02/03/04 00:18
>>717
あ、それはもうやってみたんですけど、ダメだったです。
というか、使い方がイマイチよくわからない。
719713:02/03/04 00:29
(wParam,lParamに何渡して良いのかわかんない。)
720デフォルトの名無しさん:02/03/04 00:45
>>719
wParam と lParam で、値を受け取るみたい。
ちなみに、水平方向はドット単位じゃなくて、桁数。
721720:02/03/04 00:51
動かすのが参考になるかも。

垂直スクロール M_SCROLL
wParam:0〜3、lParam:0

任意のスクロール EM_LINESCROLL
wParam:桁数、lParam:行数
722672:02/03/04 00:54
>>672です
>>716さん
コード(>>709,710)を見て頂いてありがとうございます。
○○の一つ覚えで、なんでもかんでもFormat()使ってました。
Cstr()に書き直します。

>>715さん
183万回とか3万5280回とかよく直ぐに分かるんですね。感心します。
明日は、ループ回数を数える機能を、今日作ったのに追加してみて、
3万5280回以上の無駄なループしていないかチェックしてみます。

>>712さん
いろいろサンプル作って評価してもらったみたいで、本当にありがとうございます。
今度、選択除去法を勉強してみます。
ちなみに>>712さんが時間計測した表の方法欄に『Mid』と書いてありますが、
Mid関数使う訳ではないんですよね?

みなさんいろいろご親切にありがとうございます。
>719
MSDNひけや。wParam, lParam は0にしろと書いてある。
ってか、「縦スクロールバー」の位置が得られるって思いっきり書いてあるぞ。

横スクロールバーの位置が知りたかったら、まずEM_CHARFROMPOSで
(0, 0) の位置の文字インデックスを調べる。wParam, lParam 両方0でOK。
これで、一番左上に表示されている文字が「先頭から何文字目か」と「何行目か」
がわかる。次にEM_LINEINDEXを送ると(wParamに行番号、lParamは0)
その行の先頭が何文字目かわかるから、後は引き算すれば何文字スクロール
しているかわかる。うわ、すげえ面倒臭え。
724712=715:02/03/04 01:00
回数は、数学の組み合わせでわかるよ。
7*8*8*8*8*8*8 = 1,835,008
7*7*6*5*4*3*2 =   35,280

"01234567"から使った文字を次々と除いていくのに、LeftとMidを使う。

それにしても、結果を strBuf = strBuf & 〜 & vbCrLf とかしなくてよかったね。
これやったら、30分以上かかる(笑)。
>>723
それだと正確なドット数の取得はできないですよね?
縦のスクロールだと1行1行きっかりスクロールアウトしていくから、
行が分かればドット数も分かるけど、
横のスクロールだと1ドット単位でスクロールアウトしていくから、
桁数が分かっても正確に何ドットぶんスクロールアウトしてるか分からないと・・。
726デフォルトの名無しさん:02/03/04 01:29
>>725
TextBoxは仕様上、桁単位みたいよ。
ドット単位という根拠は?
実際マウスで動かしてみるとびみょーにびみょーに
スクロールアウトさせられるんで勝手にそう思ったです。

テキストのスクロールアウト量に従って描画処理するんで、
ズレが生じるとだめなんですわ。

桁数から何ドットぶんスクロールアウトされてるか取得できるのかな・・
まぁやってみます。
>>725
ドット数っていうかスクロールバーの最小スクロール単位でいいんだったら、
そのまんま GetScrollPos(hwnd, SB_HORZ) でいけると思われ。
729 :02/03/04 01:52
GetScrollPosってTextBoxのスクロール位置は取得できないじゃ?
730デフォルトの名無しさん:02/03/04 06:13
質問です。
DataGridに表示したレコードセットのデータを、マウスからのクリックなどで
いじれないようにロックすることはできますか?
>>672
>Dim i, j, k, l, m, n, o, p As Integer 'ループ用カウンタ

これでは、i-oまでは全て Variantだ。
pしか integer宣言されていないぞ。
面倒でも、全部に As Integerを書くべし。
732デフォルトの名無しさん:02/03/04 10:29
730>>
UpdateプロパティをEnabledにすればいい。
733デフォルトの名無しさん:02/03/04 10:31
VBは糞だと思いますか?
VBだけしかできないプログラマーは逝った方がいいと思いますか?

ここの板読んでて自信なくなってきた…
Windowsで業務アプリだけを作るっていうなら、VBプログラマでもいい?
>>733
特定言語を叩く奴は他の特定言語しかできない厨房。
普通は目的にあわせて使い分ける。会社からやれって言われりゃ
どの言語でもやるのが職業プログラマー。

俺は今のとこVB、VC++、MASM、Javaぐらいしか使えんが、
趣味でやるのはVB。欠点も多いが利点も多い。

というわけで、業務アプリを気軽に作りたいならVBで十分なり。
735追記:02/03/04 10:45

こんな事は分かってる奴は誰でも分かってる。いちいち気にすな。
736733:02/03/04 11:01
じゃぁ今のところWin業務アプリ(+RDBMS)ばっかりで、
たまに来てもPerlとPHPという自分は気にしなくていいってことですね。
VBには絶対の自信がありますので…ありがとうございます。

でも、覚えておいて損はないだろうから、少しずつ勉強して行きます。
>>733
俺は VB/C/C++/Perl/PHP 使いだが…

VBは使いこなせばそれなりに便利なツールだし、パワーもそこそこある。
が、知識がVBだけじゃ、VBを本当に使いこなす事は出来ないと思う。

> VBだけしかできないプログラマーは逝った方がいいと思いますか?
仕事で VBしかしない場合でも、 Privateで Cでも触れば理解度に差が出る。
API が抵抗なく普通に呼べるレベルなら、VBはほぼ問題ない。
で、そうなれば、C(SDK)が使えるようになるまではあと一歩つーところだ。
すなわち「VBしか使えない」人間は、VBを使いこなしてるとは言い切れないと思う。
738733:02/03/04 11:22
>>737
自分のスキルはどれくらいかわからないですが、
マルチスレッドやシステムフック(CallBackProcやMessageの概要は理解してます)
位なら抵抗無く出来ます。

Cもちょこっとはかじりました。
ポインタのポインタ位ならなんとか理解してます。
でもVC++にとっつけないんです。
Perlはわかりますんで、構文になじめないとかいう話じゃないと思うんです。
覚えようとするパワーが足りないだけかもしれないけど…
おお、盛り上がってるな。
>>738
>マルチスレッドやシステムフック
これ、VBだけで出来るのか?俺は出来ないが。
やり方教えてくれると嬉しい。
740734:02/03/04 11:34
739=734ね。名前入れるの忘れてた。
741610:02/03/04 11:43
>>613 >>622さん 遅い返事で、本当にすいません
遅いのですが、今から確認してみます。
742デフォルトの名無しさん:02/03/04 11:45
ToolTipTextを折り返し表示させるように入力する方法ってありますか?
できればデザイン時に。
743733:02/03/04 11:52
>>739
できます。マルチスレッドは
CreateThread、ExitThread、GetExitCodeThread
を使うと出来ます。
CreateThreadで AddressOfを使用して、CallBackProcのポインタを渡してやります。
結果、CallBackProcが呼び出されることになります。
でも、VBのフォームにアクセスしたりするとすぐに強制終了で使えませんが…(w
しかも、IDE環境だとうまくいかないし…

システムフックは、
SetDefMouseProc、SetDefKeyboardProcでフックするんですけど、
これらの関数は、SetWindowsHookExから呼び出さなくてはいけないんです。
でも、SetWindowsHookExはSystemHook.dllの関数で、普通にSystemHook.dllから呼び出せないので、
LoadLibraryExを使用してメモリ上に読み込んでハンドルを取得しないといけないんです…

ちょっとややこしいですね。
744737:02/03/04 12:12
>>743
…VBだけじゃもったいなくないかい?(w

俺も VC++はじつは使えんのよ。
ツールとして強力なのはわかるんだが、使いづらくてね。
C/C++はBCCで弄って FreeSoftは出してるけど、仕事ではもっぱら VB+RDBMS。(w

> システムフックは、
単に SetWindowsHookExを呼ぶと、自Threadしかフック出来ないよね。
# これはこれで使えるんだけど。
SystemHook.dll…は、MSDNじゃでてこんのだけど、Cとかで作る標準DLLのこと?
745734:02/03/04 12:30
>>743
マルチスレッドはVB5の話?
VB6からはCreateThreadで作ったVBのスレッドは
必ず落ちるんで使いもんにならんのよ。

>SystemHook.dll
これがさっぱり分かんない。Windowsについてないみたいだけど。
自作のDLLならVBだけじゃなくなるしなあ。

>>744
>…VBだけじゃもったいなくないかい?(w
まじめにVBやってる奴には普通のことだと思われ。メッタニイナイケドナー
746デフォルトの名無しさん:02/03/04 12:52
>>732
お答えありがとうございます。
でも、コードの記述の仕方がわかりません・・・
DataGrid1. の次にUpdateがでないし、いろいろ記述してみましたがわかりません。どう記述すればよいですか?
747デフォルトの名無しさん:02/03/04 12:57
>>732
あ、できました!
DataGrid1.Enabled = False ですね。
でも、そうするとデータグリッド内をクリックもできなく、スクロールも
できなくなりますね・・・。
レコードの改ざんのみを制御することはできるのでしょうか?
よろしければ、教えてください。
748734:02/03/04 12:57
>>742
VBの標準機能だけじゃ出来ないから自作すれ。
APIならCreateWindowExとか、VBらしくFormとか。
749734:02/03/04 12:59
>>747
AllowUpDate=Falseでも出来ない?
750733:02/03/04 13:05
SystemHook.dllはWin標準のDLLではないようです。
すいません(恥
NET上で公開されている(?)DLLのようです。
いつのまにかPCに入っていたのでそのまま使ってました。

>>734
VB6でマルチスレッドの落ちる確率は、100%ではないですよ。
まぁ75%くらいだとは思うけど(W

>>746
AllowUpdateプロパティです。

なんでVBってマルチスレッドを使用すると落ちるのだろう?
どっかに説明あるかな。実験してみたいんだけど、
なんかマルチスレッドのコードがめんどくさそう。
どっかにサンプルないかな。
752734:02/03/04 13:20
>>750
>VB6でマルチスレッドの落ちる確率は、100%ではないですよ。
exeにしても?75%てのは時間じゃないよな?
25%はずっと動き続けるんだよな?

ふーむ。出来たらサンプルほしいんだけど無理?
どっかに同じサンプルを置いてるHPがあるなら
それでもいいんだけど。
753新参者:02/03/04 14:07
"ディストリビューション ウイザード"で作ったパッケージをFDで配布したのですが。
Windows2000だとセットアップできないそうなんです。
なので、exeファイルだけ取り出してあげたら、起動できないそうなんです。
原因が全くわからないので教えてください。できれば対処法も。
754734:02/03/04 14:45
>>753
exeだけで実行できないんならコードが悪いんでないの?
2000で使えないAPIやら使ってないか確認すれ。
>>753
どーいうプログラムかわからんからアレだが、
単純にランタイムが入って無いだけじゃねーの?
Vectorあたりでランタイム拾って入れれ。
VBだけじゃなく、JavaなりC++なりOOPもいじっとけってことだ。
757超初心者:02/03/04 15:15
main文で配列名を指定したうえで、その配列にサブルーチンの戻り値を入れたいのですが、
for i=0 to n
F(i)=function( )
next i
とするしかないですか?
これだと、何度もfunction( )を呼び出さないといけないので、
一発で、call文か何かで、main文で指定した配列名の中に
戻り値が入って帰って来るような方法は無いですか?
>>757
Dim ret As XXXXX

ret = function()
For i = 0 To n
F(i) = ret
Next i

ってこと?
759737:02/03/04 15:34
>>742
これでも使うがよろし。
http://www.netlaputa.ne.jp/~stadt/vb/p13/tooltip.htm
他のがほしけりゃここへ逝くべし。
http://www.google.co.jp/search?q=%95%A1%90%94%8Ds+tooltip&hl=ja&lr=
検索ぐらいすれ。

>>750
なんかのソフトに付いてたやつを、ドキュメントなしで使ってるって訳ね。
それだけ出来れば、仕事は定時であげて自分でソフトでも出すほうが面白いかもよ。

マルチスレッドは、VB.Netのフリースレッド待ちだな、俺は。(w

>>745
> まじめにVBやってる奴には...
悲しいぐらいめったに居ないね。(w
760超初心者:02/03/04 15:39
>>758
すみません。説明足らずでした。
Dim W(n) As XXXXX
DIm F(n) As XXXXX
For i=o to n
F(i)=function(W( ))
Next i
とすれば、W(i)を引き数として処理をした結果がF(i)に入れられますが、
もし、戻り値を、値でなく、配列で返せたらベストなのです。
761734:02/03/04 15:51
>>760
function MyProc() as Long()'←配列を返す
これか?
>>760
配列は引数で渡した方がいいと思うけど、

Private Function fncHoge() As Byte()'←この括弧がミソ
  Dim abytHage() As Byte
  .....
  fncHoge = abytHage()
End Sub
Sub Main()

  ....
  F()=fucHoge()

って感じでできるよ。



763デフォルトの名無しさん:02/03/04 16:12
>>757

何がしたいのかわからんが、

Private Sub Form_Load()
Dim F() As Long
Call farr(F())
End Sub
Sub farr(arr() As Long)
Dim a
Dim i As Long
a = Array(0, 1, 2, 3, 4, 5)
ReDim arr(UBound(a))
For i = 0 To UBound(arr)
arr(i) = a(i)
Next
End Sub

もしくは

ret=function( )
for i=0 to n
F(i)=ret
next i
764760:02/03/04 16:19
761,762さん、本当にありがとうございます。
括弧の点はどのキーなのでしょうか?
ど素人ですみません。
765741:02/03/04 16:19
>>613 >>622さん サンプルで動作確認できました。

少し手を加えて、思った動作を実現できました。
ありがとうございました。 m(__)m
766734:02/03/04 16:20
まじめにVBやってる数少ない人間をさらに減らすような発言悪いw

「VBのスキルが高い」と言うのは実は「VBでスキルを高める奴が少ないので
相対的にスキルが高く見える」ことが多いことに気づいてほしい。

VBで大抵のことが出来るようになるにはVBの裏技的なことをしなきゃいけないんだけど、
他の言語ではそんなスキルは意味がないことがほとんど。

さらにWindowsはCで開発することを前提にして作られてるので、VC++で作る方が
自然であり、Windowsが提供していることはVC++ならすべて使えるように作られている。
高度なWindowsアプリを作るならVBを極めるよりもVC++を極める方が自然で楽。
だからVBでスキルのある奴が少ない。

VBに自信を持つのはいいことなのだが、以上のことをふまえて頑張ってほしいな、と思う。

長文スマソね。昔の俺は何にも知らないくせに「VBなら負けないぜ!」とか思ってたから、
つい老婆心が。
767760:02/03/04 16:39
763 さん
本当にありがとうございます。
前半のやり方をやってみます。
>>766
VBでスキルが高いというのはAPI駆使したり、メモリを直接いじったり
することなのか?

俺的にはVBでスキルが高いというのはクラスモジュールやImplementsや
ActiveXを使いこなすことなんだが。
あと、ちゃんとした設計をするとか、デザインパターンを適用するとか
vbUnitによるユニットテストを行うとか。
こんなのは、裏技でもなんでもないしVB以外でも通用する。

俺はVBをまじめにやっているし、それなりにスキルもあるつもりなんだが
APIはほとんど使っていない。それにAPIを使用しなくても不自由はしない。

APIを使ってVB特有な裏技的なことをするのがスキルが高いとは思わないし、
それよりも準オブジェクト指向言語の一つであるVBという言語
(言語としてみれば他のオブジェクト指向言語とそんなに差は無い)
を使いこなすのがスキルが高いと思っているのだが間違っているだろうか?
769734:02/03/04 17:14
>>768
ああ、そりゃそうだね。ゴメソ。
あれはスキルがある=VBで何でも出来る
っていうことを前提にしてるんで。

言葉使い間違ったな。
770768:02/03/04 17:30
>>769
いや、そんなに間違っていないと思う。
というのは、ほとんどの人の「VBのスキルが高い」ってのは
APIを駆使したり、そうしたことになっていると思うから。

でも俺的にはVBで他の言語と同じ事をするために要する技術は
どの言語でも同じレベルであって高いとみなしてないんだよね。
VBでやるのが難しすぎるのであればVB使わないし。
771733:02/03/04 17:53
>>752
すいません。どこでお勉強したのかわからなくなっちゃって。
確かクラスになっているものが結構安定していたと思います。

>>734
自分が知っている言語の中では、VBだけは絶対の自信を持っている。という意味でした。
APIが利用できるかどうか。というのは、自分もVBのスキルには直結していないと思ってます。
NETで調べればサンプルコードなんていっぱい手に入るしね。

>>766の言う、クラスやImplementsも理解して使ってるつもりだし、
ActiveXDLLを作って、よく使うAPIをカプセル化して業務アプリに組み込んだりもしてます。

>高度なWindowsアプリを作るならVBを極めるよりもVC++を極める方が自然で楽。
これはよくわかるし、人から「VBでやる必要ない」と言われる理由だと思います。

でも、業務アプリを作る上で、Windows上の高度な機能って使いますか?
ユーザのわがままで、ListViewに2つチェックボックスがほしいとか、
マウスのホイールでスクロールしたいとか、それくらいだと思います。
俺の中で「高度なWindowsアプリ」って言うのは、デバイスとか扱うくらいなんだけど…
そんなソフトなら、俺だってVBで作ろうとはしませんよ。

2chでマジレスしてスマソ
VB初心者質問スレ Part6
~~~~~~~~~~
773734:02/03/04 18:06
んじゃまあ>>772も言ってるんで名無しに戻る。
結構楽しかったっす。たまにはこういう議論もしたいなあ。
答えるだけってのもイマイチだし。

追記:今PhotoShopみたいなんをVBで作ってるんで
そんなん見かけたら「あ、あいつだな」とか
思ってくれると嬉しい。では。
774733:02/03/04 18:13
そうですね。
荒らすような真似してスマソでした。
775デフォルトの名無しさん:02/03/04 19:12



'_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/再開_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
776デフォルトの名無しさん:02/03/04 20:02
高度な話が終わったところで初心者臭い質問を一つ。
戻り値を必要としない場合に関数を呼ぶ場合、

Call 関数名(引数1, 引数2,)
って感じに呼ぶのと、
関数名 引数1, 引数2
って呼ぶの、どう違うんですか?
777訂正:02/03/04 20:03
Call 関数名(引数1, 引数2,)

Call 関数名(引数1, 引数2)
ちょっと見てない間に祭があったのか? くそう、乗り遅れた。

>>729
実験してみたら、ちゃんと取れたよ。

>>731
あらかじめ DefInt i-p しておくという手もある。
素人にも玄人にもおすすめできないけど。
>>776
同じ
戻り値が必要なときには括弧をつけるし、括弧つけないと見にくいので
Call 関数名(引数1, 引数2)の方がいいと思うよ。
>>778
そんなたいした祭りでもないw
GetScrollPosでTextBoxの横スクロール位置は取得できました。
でも、このスクロール位置の値から”何ドットスクロールしたか”を導きたいんですが、
できますか?

ちなみに>>723の方法だと、確かに何文字目までスクロールアウトしてるかは取得できるんですが、
あくまで何文字目かなので、アバウトなスクロールドット数しか分からないのです。
(横(水平)スクロールだと、文字の半分だけスクロールアウトしてる場合などがあり得る)
>781
うーん……
(1) TextBoxのクライアント領域の幅をpixel単位で求める
(2) GetScrollInfoでスクロールバーの「ページ」部分の長さ(nPage)を求める
(3) GetScrollPosでスクロール位置を求める(GetScrollInfoで一緒に求めてもよい)
として、
 (3)の結果 × { (1)の結果 ÷ (2)の結果 }
でたぶんドット数になるんじゃないかな。試してないけど。
783781:02/03/04 21:24
ってこれ、そのままドット数なのか・・・な?
784781:02/03/04 21:25
う、すれ違った。
いやあのなんかですね、GetScrollPosで取得した値がそのままドット数っぽいです。
なんか。
ちょっとまだテスト中ですけど。
785781:02/03/04 21:32
どうやらGetScrollPosで取得した値がそのままスクロールアウトしたドット数だったみたいです。
思い通りに動きました。
>>782さんには非常に悪いことしちゃったぽいですね、申し訳ないです。
786デフォルトの名無しさん:02/03/04 22:00
ファイルリストボックスのファイルをクリックすると
リッチテキストにファイルの中身を表示するようにしたいのですが
下記のモノではリッチテキストにファイルのパスが出るだけでうまく
いきません。なにぶん始めたばかりで初心者な質問かと思いますが
どこがいけないのか教えていただけると幸いです。

Private Sub File1_Click()
SelectedFile = File1.Path & "\" & File1.FileName
RichTextBox1.Text = SelectedFile
End Sub
>>786
中身を見るにはOpen〜Get〜Closeを使うなり。
ファイル入出力をもうちょっと勉強すれ。
>>786
惜しい。RichTextBox1.LoadFile hoge.txt だ。
つーか、msdn読め。
789787:02/03/04 22:08
>788
おっと、そんなんあったのね。失礼。
790786:02/03/04 22:16
>>788
ありがとうございます。
解決いたしました。
msdnの2枚目のディスクを割ってしまいましてうまいこと読みだせませんでした。
791デフォルトの名無しさん:02/03/04 22:28
9xで作ったプログラムをNTやXPで起動すると
文字化けしてしまいます。

XPで見るにはどうすればいいのでしょうか?
>>791
VBのランタイムを入れなされ。
793デフォルトの名無しさん:02/03/04 23:06
>>776
関数名(引数1, 引数2)
としてもエラーにはならないんだよね。
ByVal になるみたいだけど。
794デフォルトの名無しさん:02/03/04 23:35
>>793
エラーになりますが何か?
795デフォルトの名無しさん:02/03/04 23:57
>>794
ならないですが何か
796デフォルトの名無しさん:02/03/04 23:57
>>794
ちゃんと通りましたが何か?
797デフォルトの名無しさん:02/03/05 00:07
以前 wavファイルを再生する方法として「sndPlaySound」というものを教えていただいたのですが、
これは最近よく聞く"API"というものですか?
>>797
Yes
>>797
長い音は鳴らせないのでそのつもりでな。
警告音とか効果音に便利。
800デフォルトの名無しさん:02/03/05 00:21
ブラウザ作ってんだけど右クリックでソース(テキスト)って
見られるよね。それをボタン押すとソース見られるようにしたいんだけど
どうしたらいいんですか?
801デフォルトの名無しさん:02/03/05 00:24
>>800
取得したhtml文書をメモ帳とかエディタで開くだけ。
802672:02/03/05 00:37
>>672です
>>731さん
コード(>>709-710)を見て頂いてありがとうございます。
ご指摘通り変数を1つずつIntegerで宣言したら、倍近く速くなりビックリしました。
ものぐさはだめですね。ありがとうございました。

>>712=>>715=>>724さん
度々ありがとうございます。
確率・統計の組合せは苦手を通り越して、サッパリなんですよね(W
そちらも高校から勉強し直します。
LeftとMid関数はそういう事にも使うんだと知りました。
まだ選択除去法はピンときませんがもっと勉強します。
>>800
Private Sub Command1_Click()
  Winsock1.Connect "www.2ch.net", 80
End Sub
Private Sub Winsock1_Connect()
  Winsock1.SendData "GET / HTTP/1.0" & vbCrLf & vbCrLf
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  Dim A$
  Winsock1.GetData A
  Text1.Text = Text1.Text & A
End Sub

フォームにWinsockコントロールとText1とCommand1をぽとりぺたして、
Text1のMultiLine=Trueにして、このコードを貼れ。
細かい所は問題あるから自分で調整するよーに。でわ健闘を祈る!
804デフォルトの名無しさん:02/03/05 00:40
>>802
全ループは、こうだった。
7*8*8*8*8*8*8*8 = 14,680,064回

フラグ法
flag_k(7) As Boolean
例えば 3を使ったら、Falg(3) = True とする。
ただ、各ループごとにフラグ配列を用意して、各ループに入ると同時に、
外側のフラグ配列をコピーする必要があって、これに時間がかかるみたい。
動的配列なので、コード自体は flag_j() = flag_i() ですむんだけど。

選択除去法(勝手に名前つけただけ)
"01234567"から1を使ったら"0234567"とする。
取り出しは、Mid(文字列, ループ変数+1, 1)でいいけど、取り出された後の
文字列を取得するのがちょっと面倒かな。勉強にはなると思うけど。
コレクションの代用ね。
>>793-796
関数名(引数1, 引数2)はエラーです。
関数名 引数1, 引数2 はエラーになりません。
Call 関数名(引数1, 引数2)はエラーになりません。
関数名(引数1)はエラーになりません。

理由はCallをつけないときは括弧をつけたらいけないからです。
関数名(引数1)がエラーにならないのは、
Call 関数名( (引数1) ) のCallと外側の括弧をはずしたものとみなされるからです。
引数が二つある場合「関数名 (引数1), (引数2)」となります。

関数名 (引数1) = Call 関数名( (引数1) )とした場合、
引数がByRefでも括弧をつけているためByValになります。
動けばなんだっていいのさ〜ヽ(´ー`)ノ
>>806
そういうことを言うやつに限って動かなくてはまるという罠
>>805
そう。エラーにならないのは、引数1個の時だけだった。

でも、どうしてカッコを付けると ByValになるの?
これが原因のバグってけっこうあるかも。
正確にいえばVBが内部に変数を用意してそのRefがわたされる。
subhoge (引数+0) とか書くのと同じことです。
>>808
かっこ「 ( ) 」という演算子だと思えばいいんではないかな。
Sub subHoge(ByRef i As Integer) だったとして、
Call subHoge( j ) は参照渡し、
Call subHoge( j + k ) は値渡し、
Call subHoge( ( j ) ) も値渡し。
811805:02/03/05 04:20
>>808
ByValになるっていうのは言い方が悪かった。
たぶん内部的にはByRefで処理されている。
なぜByValのように見えるのかというと、括弧で囲むことで
変数がByRefで渡るのではなく、(変数)という演算結果が渡されるから。

Call foo( Clng(A) )←この場合Aが変わらないのは納得いくでしょ。
Call foo( (A) ) ←これはAがfooの引数の型に変換されるだけ。

> これが原因のバグってけっこうあるかも。
「基本はByValをつける」を守っていればあまり問題は無いと思う。

ただ Sub foo(i As Long) のような関数を
Dim i As Integer: Call foo(i) じゃ呼べないのに
Dim i As Integer: foo (i) だと呼べたり

Sub foo(udt As UserDefineType)のような関数を
Dim udt As UserDefineType: Call foo (udt)だと呼べるのに
Dim udt As UserDefineType: foo (udt)じゃ呼べない

という結果を見てユーザ定義型の場合はCallをつけなければいけないとか
変な勘違いをしている人がいるかもしれない。
>>811
深い。深すぎて、理解しきれない。
なんとなくならわかりかけてきたような気もするけど、気のせいかも。

813797:02/03/05 06:02
>>798
>>799
ブロック崩しゲーム(アルカノイド風)で球がはね返るときにwavファイルを鳴らそうと思ったんですが、
sndPlaySoundではどうも処理に時間がかかるようで、壁やブロックに当たるところで少しのあいだ止まってしまうのです。
読み込みを先にしておけば。
815デフォルトの名無しさん:02/03/05 06:40
>>813
非同期で鳴らしたら、まずいの?
816800:02/03/05 07:01
>>803
わかった
やってみる、ありがとうおじさん
817813:02/03/05 08:55
>>815
すみません、非同期ってなんですか?
>>817
フラグに SND_ASYNC を入れるといいぞ。
同期再生だと、再生が終わるまで関数が帰ってこない=固まる。
非同期再生だと、鳴らし始めたらすぐ帰ってくる。
あとは自分で検索してしらべた方が身になるよ。
819デフォルトの名無しさん:02/03/05 16:25
質問です。
VB6+SP5でPrinterオブジェクトを使用して
B4サイズで印刷しようとしています。
(使用するプリンタのデフォルト用紙サイズはA4)

WinNT4.0では
PaperSize=12 (=VbPRPSB4)
でB4出力できたんですが
Win2000の場合、同じプリンタなのに
PaperSize=126
と指定しないと出力できません。(VbPRPSB4を代入したらエラー)
「PaperSize=126」はプリンタのデフォルト用紙サイズをB4にして
PaperSizeを求めたら出てきました。

このように、プリンタが同じでもOSが違う(ドライバが違う?)と
用紙サイズの指定が上手くできないのです。
「PaperSize=126」はプリンタ独自のB4サイズの値なのでしょうか。
もしそうだとすると、どのプリンタを使用するにしても
プリンタごとの「B4サイズの値(12なり126なり)」を
求めることはできないのでしょうか?

GetPrinter使ったりするのかな・・・
とは思ったんですが、行き詰まってます。
意味不明な長文ですみません・・・

>>819
漏れも昔ソレで困った事があった。
その時はマニュアルに「プリンタの設定はA4にしてください」って書いて終わりにしちゃった☆
テヘッ♪
821デフォルトの名無しさん:02/03/05 16:37
ファイルリストボックスの中身をリッチテキストに表示して
それをクリックボタンを押して保存するときにRichTextBox1.SaveFile
で保存しようとしているのですがうまくいきません。
1というファイルが出来てその中に保存されています。
その1というファイルを開くと文字化けしています。
リッチテキストで開くとうまく表示されます。
どうしてうまく保存されないのでしょうか。


822デフォルトの名無しさん:02/03/05 16:53
>>821

object.SaveFile(pathname[, filetype])

SaveFile メソッドの構文の指定項目は次のとおりです。

filetype 省略可能です。保存するファイルのタイプを整数または定数で指定します。設定する値については、次の「設定値」を参照してください。


設定値

filetype の設定値は次のとおりです

rtfRTF 0 (既定値) リッチテキスト形式 (RTF)。リッチテキスト ボックス コントロールの内容を .rtf ファイルとして保存します。
rtfText 1 テキスト。リッチテキスト ボックス コントロールの内容をテキスト ファイルとして保存します。

ヘルプ見てくれ。
しっかり書いてあるから。
RichTextBox1.SaveFile "C:\hogehoge\hoge.txt",rtfText
見たいな感じです。
823デフォルトの名無しさん:02/03/05 22:30
このスレ見ながら苦闘3ヶ月。ようやくアプリケーション1つ作れました。
よかったら感想オネガイシマス。

ttp://www2.makani.to/akutoku/upload/dat/1015334740.lzh
>>823
403:アクセス不可
>>823
直リン不可。2ch不可。回線遅い。
今後気をつけましょう。
826デフォルトの名無しさん:02/03/05 22:55
827824:02/03/05 22:59
>>826
これなにするソフト?
828デフォルトの名無しさん:02/03/05 23:01
厨房質問です。
ファイルの生成の仕方がわかりません。
ファイルに書き込みたいんじゃなくて生成したいんでう。
教えてください。
>>828
Open 開きたいファイル for binary as #1
close #1
830デフォルトの名無しさん:02/03/05 23:06
>>827
URLの管理用に作ったものです。
簡単な検索機能が付いてます。
831828:02/03/05 23:08
>>829
わかた、やってみるよ。ありがとう風のおじさん
832823:02/03/05 23:09
LZHファイルです。解凍するといくつかのファイルが入ったフォルダが出来ます。
そのなかに、そーす.txtというファイルが入ってます。
そこにすべての元データが入ってますので、危険かどうかは分かります。
使うときは、使い方.txtを見てください。自動セットアップなんて高等技術はできませんので
手動でセットアップになります。
>>832
落としてみたけど、パス決めうちかよ!
プログラムのあるディレクトリパスはApp.Pathで取れますがな
834824:02/03/05 23:12
>>830
K大学かい?exe作るときは注意すれ。
他にもC直下に置くなとかボタン置きすぎとか
Captionが無いコントロール山ほどあるとことか
デフォルトボタンとキャンセルボタン作れとか
つっこみ始めればきりがないが。

まあでも最初のアプリはこんなもんか。頑張れ。
835823:02/03/05 23:14
>>833
そうなんですか!
今度直してみます。
836823:02/03/05 23:25
>>834
ありがとうです。ご意見、ありがたく頂きます。
C直下に置いたことについてですが
起動時に1つだけどうしても読み込まないとだめなファイルがあって
そのファイルの場所を固定しなければならなくなり、C直下に置いてしまいました。
>>832
ソースをざっくり見たが、かなり無駄が多いな。
ちゃんと書けば今の量の10分の1以下に抑えられるだろう。
細かい所を上げるとほんと、きりが無いけど少しだけ。
関数を作ってないみたいだね。知らないのなら関数に手をだしてみたら。
あと、ファイル番号(#???ってやつ)はFreeFile()で取得した方がいいよ。
イッテ(・∀・)ヨシ!!
ttp://cgi.shutdown.server.ne.jp/SQ/minibbs.cgi
839823:02/03/05 23:56
>>837
ありがとうございます。
関数ですね。難しそうですが、MSDN見ながらやってみます。
840672:02/03/06 02:34
>>672です
>>804さん度々ありがとうございます。
アドバイスに従って、選択除去法を書いてみました。
最初、If関数でループの変数が、まだ残ってる数字の中にあるかという考えで書いたんですが、
それだと、前のと変わらない事に気付きまして、下の様に書き直しました。
以前のものよりさらに速くなりましたが、考え方はこんな感じでいいでしょうか?
>>804さん始めレスくださったみなさん大変勉強になりました。ありがとうございました。

Dim sData As String     '書込み用データ
Dim strBuff(6) As String   '数字格納データ
Dim sKumiawase(7) As String '残りの組合わせ文字列
Dim i As Integer       'ループ用カウンタ1
Dim j As Integer       'ループ用カウンタ2
Dim k As Integer       'ループ用カウンタ3
Dim l As Integer       'ループ用カウンタ4
Dim m As Integer       'ループ用カウンタ5
Dim n As Integer       'ループ用カウンタ6
Dim o As Integer       'ループ用カウンタ7
Dim p As Integer       'ループ用カウンタ8

For i = 1 To 8
 sKumiawase(0) = "01234567"
 strBuff(0) = Get_Number(i, sKumiawase(0), sKumiawase(1))
 For j = 1 To 7
  strBuff(1) = Get_Number(j, sKumiawase(1), sKumiawase(2))
  For k = 1 To 6
   strBuff(2) = Get_Number(k, sKumiawase(2), sKumiawase(3))
   For l = 1 To 5
    strBuff(3) = Get_Number(l, sKumiawase(3), sKumiawase(4))
    For m = 1 To 4
     strBuff(4) = Get_Number(m, sKumiawase(4), sKumiawase(5))
     For n = 1 To 3
      strBuff(5) = Get_Number(n, sKumiawase(5), sKumiawase(6))
      For o = 1 To 2
       strBuff(6) = Get_Number(o, sKumiawase(6), sKumiawase(7))
        sData = strBuff(0) & strBuff(1) & strBuff(2) & strBuff(3) & strBuff(4) & strBuff(5) & strBuff(6) & sKumiawase(7)
        Print #FileNumber, sData
      Next o
     Next n
    Next m
   Next l
  Next k
 Next j
Next i

Public Function Get_Number(i As Integer, sKumiawase1 As String, sKumiawase2 As String) As String
 Dim sLeft As String   '取り出した数字の左側の文字列
 Dim sRight As String  '取り出した数字の右側の文字列
 Dim iMojisuu As Integer '全体の文字数

 iMojisuu = Len(sKumiawase1)
 sLeft = Left(sKumiawase1, i - 1)
 sRight = Mid(sKumiawase1, i + 1, iMojisuu - i)
 sKumiawase2 = sLeft & sRight
 Get_Number = Mid(sKumiawase1, i, 1)

End Function
841804:02/03/06 02:51
>>840
たったあれだけのヒントでよく完成しましたね。
関数化した点を除けば、ほとんど同じです。

細かいことを言えば、Midって長さを省略できるんですよ。
それと、バリアントが返るMidより、Mid$のほうがちょっと速いです。Left$も同様。

さらに、ループ変数もIntegerよりLongのほうが速いです。CPUもOSもVBも32bitですから。
842672:02/03/06 03:17
>>672です
>>804=>>841さん。即レスありがとうございます。
お陰様で大変勉強になりました。
この選択除去の仕方は、次に作りたい物にも応用が利きそうです。
また、何かあった時はよろしくお願いします。
843デフォルトの名無しさん:02/03/06 11:14
お前らEnum使ってますか?

最近知って便利さにビクーリしたよ
0という数字から、それに対応する定数の名称の文字列
(例えばvbDefaultトカ)を取得する事はできますか?
845デフォルトの名無しさん:02/03/06 12:09
>>844
ムリ。
つーか何がしたいんだ一体
846844:02/03/06 12:22
>845どうもありがとう。
特に意味は無いんです。できるのかなぁっていう興味だけで。
847817:02/03/06 14:55
>>818
ありがとうございました。勉強してみます・・・。
848Enum......:02/03/06 15:53
public Enum Hoge
aaa=1
bbb=2
End Enum

sub Test(p as Hoge)
end sub

---------------------------------------
1・Hoge.って打ってみ
2・dim a as Hoge:a= って打ってみ
3・call test(って打ってみ
今、vb2をやらされてます。
印刷機能を改良してます。
サンプルとして、vb5のソースを貰ったんですが、
API(OpenPrinter,GetPrinterなど)が、ことごとく使えません。

プリンタの設定(使うプリンタ、用紙サイズ、縦・横)を変更したいんですが、
ここらへん詳しい方いらっしゃいましたら教えてください。
850デフォルトの名無しさん:02/03/06 16:11
>>848
thx 愛してる
851ツリービューについて:02/03/06 17:07
ツリービューを使ってるのですが
ノードの2番目を選択させる方法がわからないので教えて下さい。

tre.Nodes(2).Selected = Trueで
うまくいくと思ったのですがうまくいきません。
マウスでノードをクリックしたような事をプログラムでやりたいです。
>>845
無理じゃないよ。ほれサンプル。最善のコードじゃないかもしれないけど。
「TypeLib Information」を参照設定してな

Private Sub Form_Load()
Dim tli As TypeLibInfo
'Set ti = TypeLibInfoFromRegistry("{FCFB3D2E-A0FA-1068-A738-08002B3371B5}", 6, 0, 9)
Set tli = TypeLibInfoFromFile("C:\WINNT\System32\MSVBVM60.DLL")
Call PrintConstantFromValue(tli, 0)
End Sub

Private Sub PrintConstantFromValue(ByVal tli As TypeLibInfo, ByVal Value As Long)
Dim ci As ConstantInfo
Dim mi As MemberInfo
For Each ci In tli.Constants
For Each mi In ci.Members
If mi.Value = Value Then
Debug.Print ci.Name, mi.Name
End If
Next mi
Next ci
End Sub
853デフォルトの名無しさん:02/03/06 19:01
すみません、クリスタルレポートで作ったファイルって、
やっぱクリスタルレポートをインストールしている環境じゃないと
動かないのでしょうか。
もしそうなら、あんまり意味が無いような気がするけど。。。
854デフォルトの名無しさん:02/03/06 19:06
>>853
だからセットアップexeを作る必要がある。
しかしそれが悲劇の始まり
855853:02/03/06 19:19
>>854
うん?setup.exeって?クリスタルレポートで、ってことですか?
そんな機能あったっけ?
856デフォルトの名無しさん:02/03/06 19:34
>>855
『クリスタルレポートで』か。
『クリスタルレポートを使った』と勘違いした。すまん
857853:02/03/06 20:01
あ、クリスタルレポートを「使った」です。多分。
VBからPrintたたくソレです。
普通に作ったファイルなんですが。
858デフォルトの名無しさん:02/03/06 20:52
>>857
VB6ならプログラム→vb6→vb6Tool→ディストリビューションウィザードで
setup.exeが作れるので、それに栗スタルレポートを入れればヨイ
859853:02/03/06 20:54
ムホッ、ありがとうございます。
明日会社でやってみます。
860デフォルトの名無しさん:02/03/06 22:16
昨日からVBやり始めてとりあえずソースエディタでも作ろうかと思ってる。
リッチテキストコンポーネントでエディタ部分作るんだけど予約語をリアルタイムで色つけたいと思うんだけどできるかな?
読み込み時にTextをリッチテキストフォーマットにすることは出来たんだが・・。
たとえば
switc と入れて最後にhをつけた瞬間にswitchが赤色に変わるとか

やっぱVBでは細かいことは出来ないのかな?
あとリッチテキストフォーマットの詳しい日本語説明のページ誰か知らない?
googleで検索しても全然ひっかからね〜〜・・・、MSDNのは英語だし・・
リッチテキスト自体もう死んでいくフォーマットだからかな
>>860
イベントでチェックすれ。
全部自前で描画してもよいよ。
862デフォルトの名無しさん:02/03/06 22:37
>>861
横レスで申し訳ないのですが、テキストボックスで
2文字目から5文字目まで赤。とかできるんですか?
863861:02/03/06 22:39
>>862
標準テキストボックスで普通のやり方したら無理。
API使いたくないなら我慢すれ。
(もう一個テキストボックス作る、とかいう方法もある。)
864860:02/03/06 22:55
>>862
リッチテキストコンポーネントならできるよ
自分でリッチテキストフォーマットで書かなきゃならないようだけど
と言うかそれしか知らない
865デフォルトの名無しさん:02/03/06 23:20
Ping(Pingじゃなくてもコマンドなら何でも)をうちたいのですがWin95/98とかだと普通に実行できるのですが
NT系だとうまくいきません。
98やNT系の両方で使えるようにしたいのですがこの場合どのように
すれば良いのでしょうか?
866デフォルトの名無しさん:02/03/06 23:28
>>865
メインは1行なんだから、コード見せるべし!
たぶん環境変数COMSPECを使うといいよ。
>>865
前にShell関数でPing打つコード書いたがスレと番号がわからんかった。
>>866の回答+Environ関数を合わせて使う。
868:02/03/07 02:01
VBで「テトリス」みたいなのを作ってみたいのですが、ブロックを何で作ればいいかわかりません。
またブロックを回転させる方法、他のブロックとの衝突を判定するアルゴリズムのヒントをください。
869:02/03/07 02:02
テトリスはむずかしい 初心者はこんなのから作ってみれ、みたいなのがあれば教えてほしいです。
もちろんゲームに限りません。
870デフォルトの名無しさん:02/03/07 03:03
>>868
>ブロックを何で作ればいいかわかりません。

Lineメソッドで■を描いてもいいし、ビットマップファイルをPictureBoxに
読み込んでおいて、PaintPictureメソッドで切り出して転送してもよい。
#ある程度、プログラムが動くようになったら、API関数のBitBltを使って、
#高速化すればいい。(←はじめたばかりなら#書きのところは気にするな)

>ブロックを回転させる方法
高校数学で習う回転の公式。
あるいは、単純にあるブロックの回転後の位置のパターンを全部用意してもOK。

>他のブロックとの衝突を判定するアルゴリズム
ブロックの管理は、例えば画面が横x縦を10x20とすると
そのサイズ + 左右上下2マス分だけ多い目の2次元配列を用意する。

で、2次元配列の中の数値の意味を、
・0なら何もない
・1なら移動中のブロック
・2なら固定されたブロック
・3なら画面の上下左右の壁
といった風に意味を決めておく。

ブロックを(上下左右に)移動させるときには、
各ブロックの移動後の位置の配列の中身をチェックして、
2や3に移動するブロックがあったら、移動不可とすればよい。
871デフォルトの名無しさん:02/03/07 03:05
>>869

まるっきりの初心者なら、
カレンダー、電卓、(人対人の)オセロとか。
>>868
このスレにインベーダーの基本になるソースがあるから、
それを元に改良してみたら?
参考になると思うよ。

最初、えらい苦労してカレンダー作ったなぁ。。。
874デフォルトの名無しさん:02/03/07 12:13
Dim varname() ←で宣言された配列があるのですが、
コード上のある時点で、この変数が「ReDimで再定義されたかされていないか」、
つまり要素数を与えられたかそうでないか判断するにはどういう手法があるでしょうか?

例えば
If UBound(varbane()) > 1 then
とか記述すると、「インデックスが有効範囲にありません」というエラーになってしまいます。
875kuromo:02/03/07 12:21
テトリスよりカラムス(コラムス?)の方が簡単。
永らくお世話になりました。
http://www.shoeisha.com/mag/vbm/
>>876
>プログラムをカッコよくするイけてるTips
これが気になります
>プログラムをカッコよくするイけてるTips
文章になってんのか?
879デフォルトの名無しさん:02/03/07 13:44
>>874
他にスマートなやり方があるのかもしれないけど、力ずくでやるなら

Function ubound_ex(aaa, Optional bbb) As Long
  On Error GoTo err_ubound_ex
  ubound_ex = UBound(aaa, IIf(IsMissing(bbb), 1, bbb))
  Exit Function
err_ubound_ex:
  ubound_ex = 0
End Function

こんな感じかな?
ubound_ex(varbane()) とすれば、
要素数が与えられていない時は0が返ってくると思う。
880デフォルトの名無しさん :02/03/07 13:55
>>875
コラムスは消す時の判定が面倒ですよ。
ブロックの色も覚えておかなくてはいけない。
その点テトリスは連鎖も無いし、横の列だけ見てればいいし、
ブロックの種類というか色も考慮しなくてよい。
テトリスのほうが簡単だと思うなぁ。
昔DOSのテキストで作った感じでは、
初心者の定番のブロック崩しやインベーダーよりも
テトリスのほうが簡単だった。
881874:02/03/07 15:30
>>879
な、なるほど……

場合によると
Redim vername(0)
とかが実行される可能性が有るのでエラーセクションの返り値を
-1にしましたが、ほぼそのままコード使わせていただきました。

どうもありがとうございます。
882pingうちたいわけじゃないがEnvironってはじめて知ったもので・・・:02/03/07 15:40
>>102
これってコマンドボタンかなにかにくみこめばいいのか?
883:02/03/07 16:30
>>870
ありがとうございます。
ブロックの描画で学ぶことたくさんありそうです。
ひとつずつ勉強していきます。またいろいろ教えてください。
>>871
電卓は作りました。でもいきあたりばったりで、適当に変数をポコポコ作ってテストをくりかえしてたら
偶然うまいこと動いたって感じでした。かなり無駄の多いコードだと思います。カレンダーは本で見たかぎり、
日付の関数とかややこしくて逃げちゃいまちた。今度作ってみようと思います。
>>872
インベーダーにも挑戦してみたいと思ってます。ブロック崩しが大体できたので。
ある処理を、無限に繰り返したい。
でも、操作があれば止めたい。
こーゆー時、どのようにするものなんでしょうか?

今、キーボードのスクロールロックキーのLEDを光らせて遊んでるんですが
ずーっと点滅させ続けて、要らなくなったら止める、という操作が出来ず
悩んでいます。お助け下さい。
>>884

Private blnFlag as Boolean

'ボタン1の中
Do
DoEvents
'LEDを点滅させるコード
If blnFlag Then Exit Do
Loop
 
'ボタン2の中
blnFlag = True
886デフォルトの名無しさん:02/03/07 21:08
相手のサーバの情報を取得するのにAPIを使えばいいというのは調べてわかったのですが
その中のHTTPRequestに関するものがありません。
一応APIビューアで検索したのですがそれらしいものは見つけられませんでした。
これってどこにあるんでしょうか?それとも検索の仕方が悪いのでしょうか?
888デフォルトの名無しさん:02/03/08 00:21
Accessのリンクテーブルを作りたくて、

Set catDB = New ADOX.Catalog
catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & strDBLinkFrom

Set tblLink = New ADOX.Table
With tblLink
.Name = strLinkTblAs
Set .ParentCatalog = catDB
.Properties("Jet OLEDB:Create Link") = True
.Properties("Jet OLEDB:Link Datasource") = strDBLinkTo
.Properties("Jet OLEDB:Remote Table Name") = strLinkTbl
End With

catDB.Tables.Append tblLink

とすればいいのは判ったのですが、この時のリンク元に、
パスワードが設定されたMDBを使用したいのです。
どうしたらよいのでしょう?
889884:02/03/08 01:22
>>885
ありがとうございす。
点滅させ続けたりが自由にできるようになりました。
つーかこんな単純なことでお世話になって申し訳ないです。
今後はもっと七転八倒してから質問に来ます。
失礼しました。
890 ◆zjlzY5Ns :02/03/08 05:45
VBでperlのcryptと全く同じ結果を出す方法教えてマヂで。
API使ってもperlのと同じようには暗号化されないっぽいし・・・。
8910843:02/03/08 06:45
七転八倒しなくていいから、検索ぐらいすれば?

>>888
「VB MDB パスワード」で検索

>>890
「VB Crypt」で検索
892デフォルトの名無しさん:02/03/08 08:43
>>891
検索してみましたが、パスワードつきMDBへのアクセス方しか見つけられませんでした。

catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & strDBLinkFrom _
& ";Jet OLEDB:Database Password = " & strPassword & ";"

では、リンク先のMDBの設定ですよね?
テーブルのPropertiesにはPassword設定できませんし……。
それとも、何か根本的に勘違いしてるんでしょうか?
>>890
ちょっと調べてみた限り、
>暗号アルゴリズムは、OS に依存する。
>例えば、FreeBSD は MD5。Linux,Solaris は、DES が使われる。
みたいなことが書いてありますが。
つまり、ハッシュ方法は処理系依存。Perlでも同一性が保証されている
訳じゃないみたい?
アルゴリズムはDESかMD5のようなので、がんばればなんとかなりそうですが。
すいません、ひょっとしてshell関数でバッチファイルは起動させられないんですか?
今試しているのですが、起動してくれないのです。

VBからバッチファイルを叩きたい場合はどうしたらよいのでしょう。。。
ShellExecuteで普通に開けるはずだが
>>895
ありがとうございます、調べてみます。
>>896
手軽さとShell関数と似た使い勝手ということで、WinExec APIもいいかも。
推奨されない方法らしいけど問題ないでしょ。
ただ、ハンドルが帰ってこないので、BATファイルの終了待ちをしたい場合は
ShellExecute使う方がいいかな。

ところでさ、MSDNライブラリのShellExecuteの項目、変じゃない? 途中で
StartPageの解説に入れ替わってる…。
VC5付録のASCIIのAPIリファレンスも、VB用の定義記述がRegQueryValueEx
に入れ替わってたし、もしかして鬼門か?(^^;
898ナコルル:02/03/08 15:35
VB6 SP5 で、WIN2000で、
コモンダイアログのプリンタ設定から設定した値が、
コントロールパネルのプリンタプロパティに反映されないんですけど。
そして反映されてないのにもう一度ダイアログ開くと、設定変更後の値がでます。

http://210.233.22.220/VBlabo/commonDLG/J042959.htm
調べた結果、NTでの上記の方法があったので試してみました。
すると、ダイアログから設定した値が、
ちゃぁんとプリンタプロパティにも反映されて、成功。と思えるんですが、
ここでもう一度ダイアログを開いてみると、設定変更前の値が表示されます。

今度はそのままマシンを再起動して次の各設定を見てみると、
プリンタプロパティの設定 → 設定変更後
アプリのダイアログ    → 設定変更前

と、二つの設定の値がなぜか異なります。
おそらく二つの設定の値がどこかに保持されているようで、
ひとつはレジストリだとはおもうんですが、
もうひとつはどこにあるのでしょうか?

このような現象が起こる具体的理由について誰か知らないでしょうか?
また、この現象に対して、有効な策というものはないのでしょうか?
899デフォルトの名無しさん:02/03/08 16:19
そのURLの「状況」のところに
仕様です って思いっきり書いてあるんで
素直に 仕様なのか〜って納得するんじゃ駄目?
900Delフサギコ ◆zE1iiRdQ :02/03/08 21:11
  ,,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡 < メニューを表示せずにShortCutKey
  UU"""" U U    \の機能を使いたいのですが、どうすれば?

今は、FormのKeyPreviewをTrueにして
FormのKeyDownでCtrlとかShiftとかとキーの内容を
コードで処理してますですが、

もちっと、スマートな方法はないかしらと、思ってます。

VB6の普通のアプリです。よろしくスコ


901デフォルトの名無しさん:02/03/08 22:25
>>900
コマンドボタン?だったら、
caption="キャプション" & "&P"みたいな感じでショートカットキーの
設定ができたと思われ
902Delフサギコ ◆zE1iiRdQ :02/03/08 22:27
    ∧ ∧  ・・・・。
    ミ ゚Д゚彡
  〜ミ,,,,uuミ  ソリハ アクセラレータ では?
903デフォルトの名無しさん:02/03/08 23:06
>>894
できるよ。
BATはスクリプトファイルで、実際に実行するのはコマンド・インタプリタ。
>>900
今の方法でいいとおもふ・・・。
テキストファイルをプロジェクトに埋め込んで
TextStreemに入れる方法ないですか?
外部に置きたくないけど
モジュールに書くと編集が大変なんで

環境はVB6 SP5です
906デフォルトの名無しさん:02/03/08 23:44
Toolberコントロールに並べたボタンをチェックボックスの用に使いたいんですが、
初めからチェックされた状態(ヘコませた状態)にしておく方法が分かりません。
Toolbar.Buttons(index).Style = tbrCheck
で、チェックボックスの様な動きをするボタンに出来たんですが、
(クリックすればへこんで、もう一度押せば普通に戻る)
コレをコードでヘコませる方法が分かりません。

えーと、具体的には前回の状態を保存して、前回ヘコませたままで終了してれば、
次回起動時にもヘコんだままで起動させたいんです。
当然、前回の設定を保存する方法とかはわかりますんで、
知りたいのはコードでチェックされた状態(ヘコませた状態)にする方法です。
>>906
Toolbar.Buttons(index).Value = tbrUnPressed
Toolbar.Buttons(index).Value = tbrPressed
>>907
感謝。
出来ました。
909長いかも:02/03/09 00:44
ASPからMutex使おうと思って、VBでMutexをCreate、ReleseするCOM(ActiveX)をつくり
COM+に登録しました。
ASPから呼び出しもうまくいってたんですが、実は問題があることがわかりました。

Mutexって作成したThreadなりProcessが開放されると自動的に開放されるはずなのですが、
この場合COM+のコンポーネントが作成元なので、呼び出し側できっちりReleaseしてあげないと、
Mutexが残ってしまいます。
これでは、呼び出し側が以上終了した場合のことを考えると恐ろしくて使えません。

うまいこと、このMutexを(自動的に)開放する方法はないもんでしょうか?

Public Sub MutexOn()
Dim PrevhMutex As Long

PrevhMutex = OpenMutex(MUTANT_ALL_ACCESS, 0, "TestMutex")
If PrevhMutex Then
CloseHandle PrevhMutex
Err.Raise 1 + 513 + vbObjectError, "TestCom", _
"Mutex作成済みです"

Exit Sub
End If

m_hMutex = CreateMutex(0, 0, "TestMutex")
End Sub

Public Sub MutexOff()
ReleaseMutex m_hMutex
  CloseHandle m_hMutex
End Sub
>>900
・VC++でやるとメッセージ監視して処理、って感じ。
・VBのイベントはVBがメッセージを監視してイベントに変換。
・KeyPreviewはフォームできーイベントを一括処理するために用意されたたもの。

なので、それがVBではスマートだと思う。そんなことで
サブクラス化したって仕方ないしねー。
911名無しさんです:02/03/09 01:08
>>900
Delフサギコさん、VBもいぢるんですね
912Delフサギコ ◆zE1iiRdQ :02/03/09 01:27

     | ̄ ̄ ̄ ̄ ̄ ̄|
     | .ありがと  |
     |______| >>904さん>>910さん
     ∧,,∧.. .||
    ミ,,゚Д゚ミ..||    
    ミつ  づΦ   
  〜ミ  ミ
    U''''.U  DelphiではKeyPreviewもShortCutイベントも
        非表示MenuItemもAction.ShortCutもあって
        WM_COMMANDあたりのメッセージも取れるので
        VBでもなんか方法があるものかと
        思ってみたりしたんですが、
        素直にKeyPreviewでやってみますです。
>>911さん、
 不慣れですが、ぼちぼちとです。
だ、だれかリッチテキストの仕様の和訳どこかにないか知らないか・・?
探し疲れた・・
画面上(どこでも)でクリックした場所の色データを取得するには
どうやったらいいんでしょうか。
検索してもなかなか見つからないです・・・
>>913
お疲れさま。漏れもさんざん探し回ったことあるけど、結局みつからなかったよ。
英語のドキュメントを一生懸命解読してなんとかしたです。
VBのRichTextBoxコントロールはWin9xとNT系で微妙な仕様の差とかあるから、
十分注意してくださいね。HangingIndentと改行関係が腐ってたな。
リソース漏らしてるのか、Selxxx系で繰り返し操作すると落ちたり、散々。
>>914
デスクトップウインドウのhDC取得して、マウスが操作された位置の色を取得すれば
いいんでないの?
マウスの操作を検知するのがキモかな。
>>916
どうもありがと〜
918916:02/03/09 04:58
>>917
なんか無責任な気がしてきたので、少し作ってみた。ヒントになるかな。
フォーム内で選択するのではなくて、マウスポインタ直下の値を直接取得したい
なら、サブクラス化とかが必要になると思う。

Option Explicit
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Const SRCCOPY = &HCC0020 ' (DWORD) dest = source
Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  Me.Tag = IIf(Me.Tag = "", "lock", "")
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  Dim hDcDesktop&
  If Me.Tag <> "" Then Exit Sub
  hDcDesktop = GetWindowDC(GetDesktopWindow())
  Me.Caption = BitBlt(Me.hdc, 0, 0, _
            Screen.Width \ Screen.TwipsPerPixelX, _
            Screen.Height \ Screen.TwipsPerPixelY, _
            hDcDesktop, 0, 0, SRCCOPY)
  Call ReleaseDC(GetDesktopWindow(), hDcDesktop)
  Me.Caption = Hex$(Me.Point(X, Y))
End Sub
919917:02/03/09 05:32
おお!どうもわざわざすまんです。
さっそく使わせてもらいます。
マジさんくす
920916:02/03/09 06:26
>>919
書き忘れてたけど、フォームのScaleModeをピクセルにしてね。
このままのコードだと実用的じゃないので、工夫してね。
BitBltのかわりにStretchBlt使うと拡大鏡みたいにもなるよ。色を
抽出したいなら、便利かもしれない。
921デフォルトの名無しさん:02/03/09 12:07
>>915
やっぱ英語の仕様を読むしかないのか

英語の能力もプログラマには必須だと思い知らされたよ・・

レスthanks
922デフォルトの名無しさん:02/03/09 21:50
VBに限ったことじゃないんだがプログラムの中でアイコンを使いたいんだが
プログラムの中とかでフリーで使ってもいいアイコンとかってないですか?
 探してはみたんだけどホームページ上のアイコンとかしかみつかりませんでした。
923Delフサギコ ◆zE1iiRdQ :02/03/09 22:44
    ∧,,∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ,,゚Д゚彡 <  こんなんいかが?
   ミ つ日   \___________
 〜ミ,,,,,, ,,ミ
アイコンリンク
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999486538
>>3

VB以外のトコで書かないと読んでもらえないのでは?
        って、俺のことか.....
924デフォルトの名無しさん:02/03/09 22:51
>>923
超サンスクコッ!
925Delフサギコ ◆zE1iiRdQ :02/03/10 13:04
   ∧,,∧    /
  ミ,,゚Д゚彡 < VBでテキストファイルアクセスで
   ミつ つ゛  \改行コードがCRLFじゃなく
 @ミ  ミ      CR単独とかLF単独でも
   ∪''∪     そのまま文字列に取得する方法
           教えてください。

Line Input を使うと、かってにCRLFに変換されて
しまうようなの。
926Delフサギコ ◆zE1iiRdQ :02/03/10 13:12
   ∧,,∧∩  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < なんとなく、どんどこ、しつもーソ
   U  ミ   \____________
 @ミ  ミ
   ∪''∪

動的配列についての質問です。

配列の中身を見るとき
Dim A() as Integer
For i=0 to UBound(A)
処理
Next i

としているのですが
ここでAが一度もReDimされてないと
なんちゃらエラーが発生します。
ですので

'UBond で エラーになるならTrueを返す関数
Function ArrayNullCheck(Values() As Integer) As Boolean
 Dim A As Integer
On Error GoTo Err:
 A = UBound(Values)
 ArrayNullCheck = False
 Exit Function
Err:
 ArrayNullCheck = True
End Function

こんな関数を作って
UBound(A)をする前に
A配列の中身が定義されているかを調べているのですが
なんか、実に遠回りの方法を
行っている気がします。

こんなとき、何かよいやり方はありますでしょうか。
よろしくお願いします。
>>925
行単位で取り出して行の終わりがなになのかが大切なシステムなの?
(ちょっと用途が思いつかん)

input()で一文字づつ取り出すか、
一気に読みこんでSplit()で配列につっこむのがいいかな。
もっと細かくやりたいならバイナリで読みこんで
自分で文字列なりに変換するしかないだろな。

VBはWindowsの仕様に有利な解釈を勝手にしてくることが多いから
(VBにかぎったものじゃないけどな、自分に有利に解釈するのは)
Windowsべったりなやつを作るときはすごく便利なんだけど、
それ意外の仕様を扱うときは逆に面倒になることが多いね。


>>926
VBではOnErrorでトラップするやり方が普通なんよ。
他の言語を使ってると気持ち悪いって気持ちはすんごくわかるけどな。
>>926
どの改行コード(CR,LF,CRLF)でも通すなら

dim tLines$()

dim astr() as byte
dim tstr$

open "hoge.txt" for binary access read as #1
redim astr(lof(1))
get #1,1,astr()
close #1

tstr=replace$(replace$(strconv$(astr(),vbunicode),vbcrlf,vbcr)),vblf,vbcr)
tlines=split(tstr,vbcr)

ミタイナ感じ。滅茶苦茶な使い方だけど普通はこうやってるなー…
ファイルサイズとか何も考えてないんで大きいときは適宜ストリーミングするとか
>>928
よく考えると tstr$ 要らんな。むぅ。
コーディングの際に、早さを求める場合の気を付けることを
いろいろご教授下さい。
先日中途採用で入ってきた新人に技術的な面でどれくらいの事が出来れば
初級・中級・上級なのかと聞かれた。
みんなはどれくらいの事が出来れば初級・中級・上級だと思う?
>>930
速さを求める、な。
本当に速さを求めるなら Cとかアセンブラとか直で機械語とか…は置いといて。

VBだと
・型は明示する ( Option Explicit 必須 )
 ・基本的に数値は Long
 ・文字列操作関数も型を明示する ( Left$ とか )
・描画系にVB標準のメソッドを使わない ( PSet, Line とか )
・プロパティ等を3回以上(曖昧)使うときは一旦変数に落とす
・iif とか遅い関数は使わない
・Sub とかの関数の、数値系の引数は明示的に ByVal する。
・除算時に小数点以下要らないのであれば / ではなく \ 演算子を使う
・多次元配列はできるだけ使わない (Cは大抵最適化されるがVBではまだ遅い)
・ネイティブコンパイル時にコンパイラオプションのチェック全部入れる

あと、VBに限らないけど
・For ループはできる限りデクリメントに
・無駄な計算はできるだけ省く ( テーブルとか使って )
・Sub, Functionできるだけ展開する
とか。最後のはコードの読みやすさとトレードオフだけど。

VBってビットシフト無いから乗算をビットシフトに、とかできないもんなー。

あと、 With ステートメントって遅くなった気がするがどうか?
適当に試してみたら使わない方が速かったよーな。調べてないからわからんけど。

言われて思いつくのはざっとこんな感じ。ツッコミキボンヌ
>>931
それに答えるには、まず自分がどのレベルかを確認する必要があると思う。
あと、レベルってのは基本的に相対比較だから、「どの方面」でのレベルなのかが判らないと何とも。
技術面と言ったっていろいろあるでしょーに。
必要とされる技術を即戦力になるレベルで全て持ち合わせているのであれば、間違いなく上級、程度しか。
>>905
目的が良くわからんが…
TextBoxとか ListBoxとかに突っ込んで持たせる、つーのはいかが。

それ以外で埋め込むなら、Stringリソースだろうなぁ。
ただ、この場合も書き換えよりは定数的な使い方が普通だと思う。

モジュールには普通書かんよ、さすがに。(w
935931じゃねーけどさ:02/03/10 20:37
>>933
>必要とされる技術を即戦力になるレベルで全て持ち合わせているのであれば、間違いなく上級、程度しか。
いくらなんでもこれはないだろっ。
ただ単に指定したブラウザを開くだけのものを要求されてそれを作るレベルの技術しか
持ち合わせてないやつを上級とはいわないだろ。(まぁそんなものを要求する会社なんてないだろうけど…)
936930:02/03/10 20:44
>>932
勉強になりました。
Withって遅くなるんですか?
むしろ早くなると思って、必死に使ってました・・・鬱だ。
あと、数値型はなんでLong?Integerはダメですか?
937デフォルトの名無しさん:02/03/10 20:44
http://550m.com/usuarios/kviruses/utils/Vbsencrypter001.zip
のつかいかたがわからないのでおやさしいかたは
おしえてください。
>>935
あくまでもそれが「必要とされる」レベルであればそれはそれでその「社内」では上級者でしょう。(とか言ってみる

まぁでも「これができれば上級者」っていう定義はできなんだ。
いつの間にかそれに相応するスキルを持っていた、ってことはあっても。

…だって「ソフトウェア開発者試験の合格をもって上級とする」みたいなのあっても困るヤン。
>>931
技術上の問題が自己解決できる場合は、上級と見て良いと思う。
仕様上の質問はむしろしてくれる方が良いわけだけど。
>>936
Withを使うことで多少遅くなっても、コードが見やすくなるなら間違っては居ない。
むしろ速度面での差はたいしたこと無いだろうから、
見やすさ優先だと考えて今まで通りに行くのが吉かも。

> 数値型はなんでLong?Integerはダメですか?
ダメじゃないけど、VBがIntegerを扱う際には、内部でLong変換をかますらしい。
結果、速度が多少犠牲になる。
見やすさ優先なら、Integerの方が良いかもしれん。
速度優先なら、Longにそろえる方が早いらしい。
>>937
Readmeが付いてんだからそれを読めよ。
何のことはない普通の英文じゃねぇか。

で、君はこれを使ってどうするんだい?(w
>>936
Integer と Long で 1億回加算してみたけど、コンパイル前は 800msくらい Long の方が速い。( @PenIII 800MHz )
けど、コンパイル後は殆ど変わらない。
まぁどちらにしろ1億オーダーでこの程度なので
そんなに速度差はないけど、Longの方が速いよ、ってことで。

Withに関してはやっぱ俺の勘違いみたいです。スンマセン。
ついでに 932 に付け加え。
・Int よりも CInt の方が速い。けど CInt は四捨五入( Int は切り捨て) なので注意。
つーか速度が欲しけりゃVCでDLL作れ。
コーディングスタイル崩してまでVBでやることではない。
最低限避けるべきポイントだけ押さえとけ。
>>925
バイナリで取得するのが一番手っ取り早いと思われ

>>926
それ結構よく出てくる話題だな。
一応バリアントに代入してバリアントの実データ部分を
参照すれば判定できなくもないが、それぐらいなら
素直(?)にOn Error使っといたほうがいい。

>>930
VC++とインラインアセンブラ使え。なんつって。
基本は

・無駄な処理をなくすこと。
・速い関数、変数を使うこと

かな。
バリアントは速さでは最悪だからループとかで使わないのは基本。
あとは/と\の速さの違いを分かっておく事とか。VBが強制的に型変換する
時を覚えておくとか。

要は経験だと思う。

>>944
んなこた分かってんだよ。いちいち言うな。
>>926
おりゃ、Uboundの代わりにこーいう関数作って使ってるけど。

Public Function UboundNeo(ByRef ArrCheck As Variant, _
Optional ByVal Dimension As Long) As Long

Dim lngMax As Long
On Error GoTo Err

If Dimension > 0 Then
lngMax = UBound(ArrCheck, Dimension)
Else
lngMax = UBound(ArrCheck)
End If
UboundNeo = lngMax

Exit Function
Err:
lngMax = -1
Resume Next
End Function
947デフォルトの名無しさん:02/03/10 23:08
ブラウザの内容を一定時間ごとに更新するにはどの関数を使えばいいのでしょうか?
もしくはコマンドボタンを押した時にブラウザの内容を更新するにはどのようにすればよろしいのでしょうか?
>>947
WebBrowser1.Refresh
949デフォルトの名無しさん:02/03/10 23:21
>>936
大きなループの中で、毎回同じ参照をするときは、
Withを使うと速くなる。ポインタがキャッシュされるから。
MS-FlexGridとかで効果てきめん。
950デフォルトの名無しさん:02/03/10 23:30
>>948
サンクス
951デフォルトの名無しさん:02/03/10 23:33
ここで出てきた高速化手法は、ほとんどヘルプに書いてあるし、
サンプルソースにズバリ Optimize.vbp というのもある。
952Delフサギコ ◆zE1iiRdQ :02/03/11 00:01
   ∧,,∧   ありがとっす
  ,ミ。_。ミ
  ミ∪  ∪  
〜ミ ,,  ミ
  ∪ ∪
>>946さん、投稿した直後に自分でも考えました。

>>927さん
CRLF変換ツールを作ろうかと思ってまして
Delphiでもファイル入出力でかってにCRLF変換される
という罠はあるんですが、回避法がなんとかありまして。
VBでも同じものをつくりたくなったです。

>>928さん
明日、会社で試してみます。
指定したビットマップ全体の色をR,G,Bの三つのスクロールバー操作で変えたいんですけど、
できませんか?
954デフォルトの名無しさん:02/03/11 04:04
>>943
>・Int よりも CInt の方が速い。けど CInt は四捨五入( Int は切り捨て) なので注意。

CInt関数は四捨五入ではなく、銀行型丸め処理なので間違いなきよう。
#暗黙の型変換、CLng関数等も同様。
>>927
> VBではOnErrorでトラップするやり方が普通なんよ。
> 他の言語を使ってると気持ち悪いって気持ちはすんごくわかるけどな。
C++やJavaならtry 〜 catchでエラー処理をする
そういう言語からみるとOn Errorはネストが出来ない、返せる情報が少ない
という点を除いてたいして変わらないので別に気持ち悪くは無い。

>>926
こういうのはどう?
http://www.gj.il24.net/~nakasima/vb/tips/index.htm#VBTIPS2
http://www.gj.il24.net/~nakasima/download/Array/index.htm
956デフォルトの名無しさん:02/03/11 05:22
>>953
できるよ。でも、どこがわからないの?
3つのスクロールバーで色合成をするサンプルはあちこちにある。
あとは、それを応用するだけ。
指定ビットマップにどういう画像処理をしたいのかわからんので、以上。


957953:02/03/11 05:30
例えば、デジカメなどで風景を撮って、
指定ピクセルではなくその画像全体のRGB値を変更したいんです。
サンプルがたくさんあると書かれているので
もう一度調べてきます。
>>957
つまり写真全体を赤っぽくしたり青っぽくしたり暗くしたりしたいというわけね。
それぞれのピクセルのRGB値を配列変数に入れてやって、あとはFor文を使って
指定ピクセルを変えるのと同じようにやればいいんじゃないかな。
    ・
    ・
    ・
あれ?もしかして違う?
959956:02/03/11 06:54
>>957
サンプルは、スクロールバーとRGB()を連動させるコード。
VB入門1日目でやるような例題。

これに対し、フィルタ処理のサンプルは少ない。
VBでやると死ぬほど遅いけど、勉強にはなるかも。
960関係ないけど:02/03/11 09:10
>>955
それ、いいHPだな。ありがとう。
961デフォルトの名無しさん:02/03/11 09:41
>>932
・For ループはできる限りデクリメントに
これはどうして速くなるの?解説求む。
>>932
うぁ、Iifって遅かったのか…。3項演算子のつもりで使いまくってた。鬱氏。
チェックしてみたらIfで開くより2倍以上遅いね。ループ内で使うのは無茶だな。
>>961
俺も分かんない。
Forループ内は出来るだけ簡略化しろ、だと解釈したが。
違うんだろーなー。
>961
ループカウンタ変数とゼロの比較のみすればよいからという理由だったんじゃないかな。
965963:02/03/11 10:51
>>964
アセンブラなら分かるんだけど。
速度変わらないと思う。
テキストボックスに半角数字以外は入力させない方法がわかりません、
よろしかったら教えてください。
>966
入力時に入力文字のチェック。
ValidateかLostFocus時に入力項目のチェック。
最後にもう一回チェックするのもよし。
968932:02/03/11 11:44
# (928=929=)932=933=938=942=943 ってことで。

ありゃ。
Forループがデクリメントの方が速いって…For で シーケンシャルに配列 にアクセスするとき、でですな…。
…ってコレもVBで通用したかどうか怪しいけど…。

なんか滅茶苦茶だ。スンマセン。
969963:02/03/11 11:56
>>968
いえいえ。
あと、小数点同士の演算なら\より/の方が速いよ。

>>953
ヒマになったんでちょっと作ってみた。要API。
Function RGBChange2(pic As PictureBox)
Dim IBMP As BitMapInfo, DAT() As Byte, PP&
Dim rc&, i&, UboundDAT&, t&

'BitMapInfoの取得
IBMP.biSize = 40
rc = GetDIBits(pic.hdc, pic.Image, 0, 0, ByVal 0, IBMP, 0)
UboundDAT = IBMP.biWidth * IBMP.biHeight * 3 - 1
ReDim DAT(UboundDAT)

'ビットマップの取得
IBMP.biBitCount = 24
IBMP.biSizeImage = UboundDAT + 1
IBMP.biCompression = 0
rc = GetDIBits(pic.hdc, pic.Image, 0, IBMP.biHeight, DAT(0), IBMP, 0)

'変換w
For i = 0 To UboundDAT
DAT(i) = CByte(CLng(DAT(i)) \ 2)
Next i

'表示
pic.Picture = LoadPicture()
rc = SetDIBitsToDevice(pic.hdc, 0, 0, IBMP.biWidth, IBMP.biHeight, 0, 0, 0, IBMP.biHeight, DAT(0), IBMP, 0)
End Function

宣言は自分でよろしこ。
いちいちビットマップ取得しなけりゃもっと速くなるよ。
ループでデクリメントが速い理由は、
インクリメント: +1 → 判定 → 判定結果でジャンプ
デクリメント: -1 → 演算結果(0とか符号)でジャンプ
という理由じゃないかな?

> Forループがデクリメントの方が速いって…For で シーケンシャルに配列 にアクセスするとき、でですな…。
ん〜。あったっけ?そんなの。俺が知らないだけかな。

あと、VBでの出力コードをちょっと調べてみたよ。

VBコード
Public Sub a()
  Dim i As Long
  For i = 0 To 1000
    Call foo
  Next i
End Sub

Public Sub b()
  Dim i As Long
  For i = 1000 To 0 Step -1
    Call foo
  Next i
End Sub
971970:02/03/11 12:38
↑続き
違うとこの範囲のみ抜粋。>のところが違う。

Sub a
> 00401B19 33 FF xor edi,edi
> 00401B1B 89 7D FC mov dword ptr [ebp-4],edi
00401B1E 8B 75 08 mov esi,dword ptr [Me]
00401B21 56 push esi
00401B22 8B 06 mov eax,dword ptr [esi]
00401B24 FF 50 04 call dword ptr [eax+4]
00401B27 8B 1D 10 10 40 00 mov ebx,dword ptr [__imp_@__vbaHresultCheckObj (00401010)]
00401B2D 8B 0E mov ecx,dword ptr [esi]
00401B2F 56 push esi
00401B30 FF 91 04 07 00 00 call dword ptr [ecx+704h]
00401B36 85 C0 test eax,eax
00401B38 7D 0E jge Form1::a+58h (00401b48)
00401B3A 68 04 07 00 00 push 704h
00401B3F 68 C4 15 40 00 push offset ___vba@001CDBFC (004015c4)
00401B44 56 push esi
00401B45 50 push eax
00401B46 FF D3 call ebx
> 00401B48 83 C7 01 add edi,1
00401B4B 70 27 jo $L36+1Fh (00401b74)
> 00401B4D 81 FF E8 03 00 00 cmp edi,3E8h
00401B53 7E D8 jle Form1::a+3Dh (00401b2d)

Sub b
> 00401BA9 C7 45 FC 00 00 00 00 mov dword ptr [ebp-4],0
00401BB0 8B 75 08 mov esi,dword ptr [Me]
00401BB3 56 push esi
00401BB4 8B 06 mov eax,dword ptr [esi]
00401BB6 FF 50 04 call dword ptr [eax+4]
00401BB9 8B 1D 10 10 40 00 mov ebx,dword ptr [__imp_@__vbaHresultCheckObj (00401010)]
> 00401BBF BF E8 03 00 00 mov edi,3E8h
00401BC4 8B 0E mov ecx,dword ptr [esi]
00401BC6 56 push esi
00401BC7 FF 91 04 07 00 00 call dword ptr [ecx+704h]
00401BCD 85 C0 test eax,eax
00401BCF 7D 0E jge Form1::b+5Fh (00401bdf)
00401BD1 68 04 07 00 00 push 704h
00401BD6 68 C4 15 40 00 push offset ___vba@001CDBFC (004015c4)
00401BDB 56 push esi
00401BDC 50 push eax
00401BDD FF D3 call ebx
> 00401BDF 83 EF 01 sub edi,1
00401BE2 70 23 jo $L51+1Fh (00401c07)
>00401BE4 85 FF test edi,edi
00401BE6 7D DC jge Form1::b+44h (00401bc4)
972970:02/03/11 12:38
↑続き
これをみる限り、cmp edi,3E8hとtest edi,ediのどちらが速いかってことになるみたいだね。
testの方が命令数も少ないし速そうだけど俺は詳しくないから知らん。速さに違いがあるのか誰か教えて。
まぁ、通常は気にするまでもないのは確かだろうけど。

VBって数値の範囲チェック(joのとこ)を行っているからデクリメントにしても演算結果でジャンプできないんだろうね。
だから、最適化の詳細設定で整数の桁あふれチェックをしないにしてみたんだけど、そしたらどっちも同じコードになった。
さっきの所に対応するコードはこれ。
00401BAF BB E9 03 00 00 mov ebx,3E9h
00401BB4 8B 0E mov ecx,dword ptr [esi]
00401BB6 56 push esi
00401BB7 FF 91 04 07 00 00 call dword ptr [ecx+704h]
00401BBD 85 C0 test eax,eax
00401BBF 7D 0E jge Form1::b+5Fh (00401bcf)
00401BC1 68 04 07 00 00 push 704h
00401BC6 68 C0 15 40 00 push offset ___vba@001A4934 (004015c0)
00401BCB 56 push esi
00401BCC 50 push eax
00401BCD FF D7 call edi
00401BCF 4B dec ebx
00401BD0 75 E2 jne Form1::b+44h (00401bb4)

ループの速度を気にするなら、デクリメントにするよりも最適化をいじくった方が効果ははるかに高そう。

ちなみに、foo()を呼ばなくても、整数の桁あふれチェックをした場合はループは削除されない。
整数の桁あふれチェックをしないにしたらループは削除されるみたい。
973963:02/03/11 12:42
すいません、↑この逆汗ツールの名前を教えてほしいんですが。
974970:02/03/11 12:47
>>973
VC++ 6.0

EXEを直接開いてステップ実行も出来ます。
VBでシンボリデバッグ情報を作成していると便利。
でもなんかソース行と同期が取れてないなぁ。
使い方間違っているのかな?

・・・って逆汗ツールかよ!?
975963:02/03/11 12:51
>>974
ありがと。やっぱVC++なのか。今までそんな使い方したことあんまり無かったから。

976970:02/03/11 12:51
>>974
× シンボリデバッグ情報
○ シンボリックデバッグ情報
最適化を変更するところにあります
977932:02/03/11 13:32
>>970
そかそか、わざわざ調べてくれてアリガトン
てかdisasmする程でもないなーとか思ってたからやってなかったんだけど、
結局吐かれるコードは一緒なのね…

うむ、考えを改めるー
978932:02/03/11 13:32
しかしdisasmまで出てくるとは…すでに初心者スレではないな(苦笑
979961:02/03/11 13:46
970さんお疲れさまです。
整数の桁あふれチェックを外して高速化。なるほどです。
でも実際比較してみたところ約9000ループしても目立った変化はないです。
効果は薄そうです。
980963:02/03/11 13:59
話は全然変わるんだけど、VBの標準exeでタスクマネージャに
表示させない方法知ってる人いる?

ずっと悩んでる問題の1つ。
981970:02/03/11 14:07
>>977
吐かれるコードが一緒といっても、あの例はループ変数をループ内で
使用していなかったからで、使用したらさすがに同じにはならないです。

で使用してみたら予想通りインクリメントの方がcmp命令一個分多かったです。
まぁ、今のCPUは高速なんでcmpが1クロックで実行されるとして500MhzのCPU
でも500,000,000回実行してやっと一秒ですね。(あってるよね?)

私もいつもは逆汗なんかしないんですけど、面白そうだしちょうど暇だったから。
速度が重要ならVBつかいませんし。しかしVBも意外に悪くないコード吐きますね。
select caseも条件さえそろっていればジャンプテーブルに変換されますし。
982デフォルトの名無しさん:02/03/11 15:20
WebBrowserで表示すると縦のスクロールバーはうまく表示されるのだが
横のスクロールバーが表示されません。
WebBrowserでのスクロールバーをコントロールする関数などあれば教えていただけないでしょうか?
そろそろ新スレ?
立てました。

VB初心者質問スレ Part7
http://pc.2ch.net/test/read.cgi/tech/1015836357/
985905:02/03/11 23:15
>>934
レスサンクスです。
目的かいて無かったですね。すみません。
SQLスクリプト実行したかったんですが
一度その方法で試してみたいと思います。
986デフォルトの名無しさん:02/03/12 21:47
しばらくいじってみた気づいたけどけど、これって中身BASICだよね?
>>986
日本語がよく分からんが勝手に補完して
「VBをしばらくいじってみた気づいたけど、これって中身昔ながらのBASICだよね?」
と解釈してみよう。

VBは昔ながらのBASICから50%ぐらい機能を削除して500%ぐらい機能を追加したものです。
  ∧_∧
 ( ・∀・) ニヤニヤ
 ( 1000 )
 | | |
 (__)_)
989デフォルトの名無しさん:02/03/13 21:13
>>980
そもそも、タスクマネージャってプロセス全部表示されてるでしょ?
むりっしょ。
>>989
何もわかってないアホはすっこんでろ
991誰にもナイショ:02/03/13 23:35
>>989
いや、そういうのあるよ。
でも、教えたくない。
ウィルス作るのが目的かもしれないから。
992980:02/03/14 08:08
いや、タスクのアイコンを表示させたくないだけなんだけど。
プロセスは表示しててもいい。
1000!
994デフォルトの名無しさん:02/03/14 16:57

  ∧_∧
 ( ・∀・) ニヤニヤ
 ( 1000 )
 | | |
 (__)_)





999デフォルトの名無しさん:02/03/14 17:04
     1000!
    v
    \△  ヤッタゼ!!
      ●\
      □
      / \
1000デフォルトの名無しさん:02/03/14 17:05
     1000!
    v
    \△  ヤッタゼ!!
      ●\
      □
      / \
     1000!
    v
    \△  ヤッタゼ!!
      ●\
      □
      / \
     1000!
    v
    \△  ヤッタゼ!!
      ●\
      □
      / \
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。