VBプログラマ質問スレ(6.0以前) Part40

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパック
何がしたくでどうしたけどどう困っているのかを明確に書きましょう。

○関連スレッド
VB.NETは別物なので、基本的に質問はこちらへ
VB.NET質問スレ (Part7)
http://pc5.2ch.net/test/read.cgi/tech/1096683017/l50

API関連の質問はこちらへ
Win32API質問箱 Build24
http://pc5.2ch.net/test/read.cgi/tech/1098967135/l50

MSDN Online Japan ホーム
http://www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6 正式リリース
http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
Google
http://www.google.co.jp/
※「まず自分で調べる」を身につけよう。

心得
一.質問する前に過去ログにも目を通してみる。
二.質問する前に MSDN などで調べてみる。
三.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
五.荒らしは相手しない。
六. VB情報募集中。
七.VB.NETの話題できるだけひかえる。

前スレ Part39 http://pc5.2ch.net/test/read.cgi/tech/1103026199/l50
2デフォルトの名無しさん:05/01/26 23:16:49
前スレ Part39 の961です。
明日Visual Basic の授業があるんで少しでも理解しときたいんで
プログラム教えていただきませんでしょうか?
おねがいします。
3デフォルトの名無しさん:05/01/26 23:20:09
テキストボックスへの表示方法は分かる? .Textに文字列代入だったな?
4デフォルトの名無しさん:05/01/26 23:23:03
じゃあ何が分からない?
計算式か? データ変換か?
5デフォルトの名無しさん:05/01/26 23:43:50
テキストボックスからまずデータを受け取る。
>> 変数A=テキストボックス

計算する。
>> 変数B=変数A*0.06*(・・・など適当に計算式を作る)

テキストボックスに表示する
>> テキストボックス=変数A

これで分からなかったら諦めろ。
6デフォルトの名無しさん:05/01/27 00:10:01
本当に理解したいんなら今ごろテキスト読んでるでしょ。

こんなとこで質問しているのは、本読んで理解するなんてクソ面倒なことは
スキップして優々と答えだけゲットしたいから、違うか?
7デフォルトの名無しさん:05/01/27 00:26:00
まじうぜーー
8デフォルトの名無しさん:05/01/27 02:06:27
前スレ VBプログラマ質問スレ(6.0以前) Part39  実質40
http://pc5.2ch.net/test/read.cgi/tech/1103026199/

このスレは実質41
9デフォルトの名無しさん:05/01/27 02:08:09
>>2
前スレ963で、せっかく円周と面積の出し方教えてもらったんだから、それを応用しろ。
10デフォルトの名無しさん:05/01/27 03:35:29
おまいら優しいな。
ちょっと感動した。
11デフォルトの名無しさん:05/01/27 09:30:46
リア高坊へ

先生にだれから教わったって聞かれたら
「しらないおじさんに教えてもらいました」
ってきちんとこたえること。
12デフォルトの名無しさん:05/01/27 10:44:32
俺もまだ工房だ、おっさんじゃねー。
13デフォルトの名無しさん:05/01/27 10:54:20
?=小学生
厨房=中学生
工房=高校生
?=大学生
14デフォルトの名無しさん:05/01/27 11:46:52
非常に大馬鹿な質問なんですが

二次元配列に入力した数字を2重for文を使って各数字ごとに
空白を設けた状態をテキストボックスに出力したいのですが
うまくできません

改行もできないし空白も設けられないし なりより数字が次々と上書きされているみたいなんです
BASIC始めて3日目なんですが参考書にも載ってなかったのでおしえてもらえないでしょうか
15デフォルトの名無しさん:05/01/27 11:50:27
txtString.text = ""
for i=1 to MAX_COUNT step 1
 txtString.text = txtString.text & aa(i) & " "
next i

適当ですけど、こんなかんじ。
上書きではなく、追加していかないとダメですよ。
16デフォルトの名無しさん:05/01/27 11:57:32
>14
Dim s,i,j,a(22,33)
s=""
For i=0 To 22-1
For j=0 To 33-1
s=s&Str(i)&","&Str(i)&vbCrLf
Next j,i
17デフォルトの名無しさん:05/01/27 11:57:42
>>13
消防=小学生
18デフォルトの名無しさん:05/01/27 12:00:22
>>14
MultiLineプロパティをTrueに
1914:05/01/27 12:01:53
>>15
お忙しい中のわざわざのレスありがとうございます

gnuplotってわからないかもしれないですけど
あれが読み込めるテキスト状態にしたいんですけど

12 33 32 89
87 54 43 898
432 32 74 56
こんな状態です

あと二重ループにしたいのですが
20デフォルトの名無しさん:05/01/27 12:06:57
それならファイルで吐けば?
Open "test.txt" For Output As #1
2114:05/01/27 12:07:03
16,18さんもありがとうございます

さっそく試してみます
2214:05/01/27 12:17:15
>>20

それがわからなくて・・・
ファイル保存を試みましたがだめでした
23デフォルトの名無しさん:05/01/27 12:18:50
>>22
何がだめなんだよ
質問する気はあるのか?
24デフォルトの名無しさん:05/01/27 12:19:43
>22
Print #1, 文字列
Close #1
マニュアルみ
25_:05/01/27 17:46:28
割り込みで質問させて頂きます、当方はVB6を使っています。
txt1.TextBox
txt2.TextBox
cbo1.ComboBox
以上三つのコントロールを配置して以下の動作をさせたいのですが…
1:cbo1,を通常は非表示にしておく
2:txt1のGotFocusイベントでcbo1を表示させる
3:cbo1での選択結果をtxt1に表示させる(txt1に対する直接入力も有り)
4:txt2へのフォーカス移動で再びcbo1を非表示にする
という動作をさせたいのですが、4:の非表示処理が上手く行きません
txt1のLostFocusイベントで非表示処理をすると、cbo1にマウスをポイントした瞬間に
cbo1自体が消えてしまうし、cbo1側のイベントで処理した場合、cbo1に対する操作を
行わずにtxt2にフォーカス移動した際にcbo1が表示されたままになってしまいます
txt2のGotFocusイベントで処理するのは無しです(同種のコントロールを増やす予定なので)
皆様の御教授を賜りたく存じます。
26デフォルトの名無しさん:05/01/27 18:47:25
>25
フラグ変数と共通サブルーチンで一貫性を保て
27デフォルトの名無しさん:05/01/27 18:59:12
>>25
はっきりいって、仕様が糞。
28デフォルトの名無しさん:05/01/27 19:01:42
>>25
txt1とcbo1をまとめたActiveXコントロールを自作
29デフォルトの名無しさん:05/01/27 19:53:14
>>25
要はテキストボックスにフォーカスが移ったときに、
対応するコンボボックスだけを表示して他のコンボボックスは全部非表示にすれば
一貫性を持たせられるんじゃないの?

具体的には、引数で指定したコンボボックスを表示し、他は非表示にするルーチンを書いて、
テキストボックスのGotFocusからこれを対応するコンボボックスを引数に指定して
コールしてやればいいと思う。
30デフォルトの名無しさん:05/01/27 19:55:36
コンテナにすればいいじゃん。
31デフォルトの名無しさん:05/01/27 20:53:19
>>26 フラグ変数
>>30 コンテナ
まだ習得していない段階です、
こちらの程度の低さを記すべきでした…

>>29
この方法でしたら当方のレベルでも理解し易いです
丁寧な解説ありがとうございます。
32デフォルトの名無しさん:05/01/27 23:02:00
VB6です。
MDIフォーム内に子フォームを常に全面表示かつ複数開いている状態で、
メニュークリックで表示画面を切り替え、処理を実行しています。
このときctl+tabキーを入力すると、子フォーム画面が切り替わってしまいます。
画面切り替え前に入力チェックをしていて、引っかかった場合には切り替えたく
ないので、このctl+tabキーを無効にすることってできないでしょうか?
33デフォルトの名無しさん:05/01/27 23:11:48
>>32
他のフォーム.Enabled = False にすればいいじゃない?
34デフォルトの名無しさん:05/01/28 14:42:32
すみません
Picture1の画像をjpegでファイル保存したいのですがどうすればいいでしょうか?
35デフォルトの名無しさん:05/01/28 14:44:29
>34
SavePicture
36デフォルトの名無しさん:05/01/28 16:02:14
Picture1の画像の上に乗ってるLabelまで画像に保存するにはどうしたらいいのでしょうか?
SavePictureだとPicture1の画像しか保存されませんでした・・・
37デフォルトの名無しさん:05/01/28 16:36:36
>36
AutoDraw=False。
PaintイベントでLoadPicture,PaintPictureを呼ぶ。
ピクチャとラベルのそれぞれのhDCで
BitBlt,StretchBlt APIを呼び、ラベルからピクチャにビット転送。
38デフォルトの名無しさん:05/01/28 16:49:57
ラベルのhDC?
39デフォルトの名無しさん:05/01/28 16:55:01
>38
ゴメン。それはVBじゃ使えない。
TextOut, DrawText APIで代用
40デフォルトの名無しさん:05/01/28 17:15:25
>>34
フリーのDLLが必要
>>36
画面キャプチャーすれば?
41デフォルトの名無しさん:05/01/28 23:00:00
>>37-40
ありがとうございます
どうも簡単にはできそうにないみたいですね・・・
(´・ω・`)ショボーン
42デフォルトの名無しさん:05/01/28 23:57:39
>>33
無事解決しました。ありがとううございます!
フックなどでOSのメッセージを取るなど難しく考えすぎていました。
43デフォルトの名無しさん:05/01/30 16:00:40
フォトショップの選択ツールのように、
例えば選択したテキストボックスの周囲の破線が
動いて見えるようにするには、どうやるんですか?
44デフォルトの名無しさん:05/01/30 20:52:45
>>43
タイマーで一定時間ごとにパターンを替えた破線(「蟻の行列」だね)を描画する。
これ以外にどういう答えを期待しているの?

VBなら、蟻の行列はAutoRedraw = Falseにして描画して、それ以外は
AutoRedraw = Trueにして描画すればいいから簡単でしょ。

もっとお手軽にやるには、シェープを使う手もある。
45デフォルトの名無しさん:05/01/31 10:14:35
VB6.0使ってます。

全角と半角が混在しているテキストで、nバイト目が全角か半角を簡単に判定する方法はありますでしょうか?

平成1年1月1日晴れ ←の10バイト目が全角か半角か判定
4645:05/01/31 10:30:28
自己レス
nバイト目が全角1バイト目or全角2バイト目or半角を判定する関数があるのかと思い質問しましたが、
調べてみたらやはり自作しないとダメみたいですね。
スレ汚し失礼いたしました。
47デフォルトの名無しさん:05/01/31 10:39:11
VB6..0を使ってます。
馬鹿な質問で恐縮ですが教えてください。

空っぽのファイルを作成するにはどうすればいいのでしょうか?
48デフォルトの名無しさん:05/01/31 11:40:28
>>45-46
ロジック考えるの面倒なのでさわりだけ。
StrconvでvbFromUnicodeで変換すると、半角1文字全角2文字扱いのものになります。
元のUnicode文字列(VBの文字列です)を1文字づつ取り出して、それを変換して1バイトか2バイトか判断して・・・
をロジック化すればいけるのではないでしょうか?
なので自作です。

>>47
Openしてクローズしたら出来ない?
49デフォルトの名無しさん:05/01/31 12:08:06
>>45-46
48氏の言うように自作しかないかなぁ。
指定された文字が全角の最初の 1 バイトかどうか調べるAPIはある。
IsDBCSLeadByte
未確認だから実際に使えるかどうかわからないけど...
50デフォルトの名無しさん:05/01/31 16:54:40
>>48
ありがとうございます、判定処理を自作することにしました。

>>49
ありがとうございます、PG組んで見たのですが、私の環境ではうまく動きませんでした。
51デフォルトの名無しさん:05/01/31 18:26:46
配列の宣言について質問させていただきます。

10,20,30,40,50 という5つの数値があるのですが、
これを一次元配列としてaに代入するには

Dim a(4) As Integer

でa(0)〜a(4)までの5つの型を宣言し、

a(0)=10
a(1)=20…

と毎回 改行して代入しないといけませんか?
javaのように

int a[] a={10,20,30,40,50};

のように一回で代入できませんでしょうか?
ご存知の方どうかご教授ください。よろしくお願いします。

OS:XP VB6.0
52デフォルトの名無しさん:05/01/31 19:10:50
おしえてください

ループでファイル名を指定してオープンしようとしたとき、指定ファイルが無くなった
ときに、エラーになるが、エラーの帰り値などを参照してループから抜け出るには?

初歩の恥ずかしい、質問ですがよろしくお願いします。VBは初めてなもので
53デフォルトの名無しさん:05/01/31 19:15:56
>>51
Array
54デフォルトの名無しさん:05/01/31 19:27:30
(´-`).。oO(IsDBCSLeadByteが動かない環境ってどんなんだろ?)
5551:05/01/31 19:38:25
>>53
解決しました。ありがとうございます。
56デフォルトの名無しさん:05/01/31 20:40:36
>>52
オープンする前に
On Error Resume Next して、
オープン直後に Err.Number を調べる

または、オープン前にファイルの存在チェックする
5751:05/01/31 22:13:38
たびたび申し訳ございません。先ほど一次元配列の件にて質問させていただいたものです。
一次元配列は「a = array(10,20,30,40,50)」で解決できたのですが、
下記のような二次元配列はどのようにして宣言すればよいのでしょうか?

10,20,30
40,50,60
70,80,90
58デフォルトの名無しさん:05/01/31 22:23:31
>>51
あんたの辞書には「自分で調べる」とか「自分の頭で考える」って項目はないのか?
それが「あえて」人に聞くようなことかい?

こんなググるかMSDNみれば3分で解決するようなレベルの内容に
答える奴もどうかしてると思うが。
59デフォルトの名無しさん :05/01/31 23:47:18
VB6sp3でClipbordのお勉強してるんすけど、フォーム上のコマンドボタンに

Private Sub CreateLink_Click()
Clipboard.SetText "テストテスト", vbCFText
End Sub

などと書いて
自アプリ実行させたんですけど、フォーム上のテキストボックスには
Ctrl+vで貼り付けれるのですが、ノートパッドなどひらいてCtrl+vしても
はりついてくれないのです。 よろしくおねがいします。
60デフォルトの名無しさん :05/01/31 23:51:03



すまん自己解決した。クリアせないかんのか。m(_ _;)m
61デフォルトの名無しさん:05/02/01 06:28:24
>>56
ありがとうございます
参考にしてテストします
62デフォルトの名無しさん:05/02/01 08:53:23
>>54
win2000,vb6.0 or win2000,vbaです。以下のプログラムで、すべて同じ値しか返って来ませんでした。

'【指定された文字が先行バイトかどうかを調べます】
Declare Function IsDBCSLeadByte Lib "Kernel32" (TestChar As Byte) As Boolean
Declare Function IsDBCSLeadByteEx Lib "Kernel32" (CodePage As Integer, TestChar As Byte) As Boolean

Private Sub コマンド72_Click()

Dim length, cnt As Integer
Dim char1, msg, msg2, swork As String
Dim ascii As Byte

'* Stringの内容をチェック
swork = "abcあいう"
length = LenB(swork)
' length = LenB(StrConv(swork, vbFromUnicode))
msg = ""
msg2 = ""
For cnt = 1 To length

char1 = MidB(swork, cnt, 1) '1バイト取り出して、文字コードに変換する
' char1 = MidB(StrConv(swork, vbFromUnicode), cnt, 1)
ascii = AscB(char1)

msg = msg + Right("00" + Hex(ascii), 2) + "," '文字コードを16進数の文字列に変換する
msg2 = msg2 & CInt(IsDBCSLeadByte(ascii)) & ","
Next cnt
Call MsgBox("元の文字列=" & swork & Chr(10) & msg & Chr(10) & msg2)

End Sub
63デフォルトの名無しさん:05/02/01 09:18:20
VB6.0の質問です。
バイナリエディタを作ろうと思っているのですが、何万桁も表示するため、
なるべくメモリ消費量の少ないコントロールを使いたいと思います。
自分なりに調べてLabelかListViewが良いのかなと感じたのですが、
何かお勧めがあったら教えていただけないでしょうか
64デフォルトの名無しさん:05/02/01 09:22:44
>>63
使い方次第です
表示する前後部分だけコントロールに送ってやれば消費はどれも少ない
65デフォルトの名無しさん:05/02/01 10:00:05
>>64
ありがとうございます
なるほど、そういうやり方がありましたか
それならMSHFlexGridとVScrollBarを組み合わせてやってみようと思います
66デフォルトの名無しさん:05/02/01 15:18:34
>>62
49です。行きがかり上デバッグしてみた

Dim length, cnt As Integer
Dim char1, msg, msg2, swork As String
Dim ascii As Byte

'* Stringの内容をチェック
swork = StrConv("abcあいう", vbFromUnicode)
length = LenB(swork)
msg = ""
msg2 = ""
For cnt = 1 To length
char1 = MidB(swork, cnt, 1) '1バイト取り出して、文字コードに変換する
ascii = AscB(char1)
msg = msg + Hex(ascii) + "," '文字コードを16進数の文字列に変換する
msg2 = msg2 & CInt(IsDBCSLeadByte(ascii)) & ","
Next cnt
Call MsgBox("元の文字列=" & StrConv(swork, vbUnicode) & Chr(10) & msg & Chr(10) & msg2)

IsDBCSLeadByteは使えるようです。

それと... Dim length, cnt As Integer は
Dim length As Variant
Dim cnt As Integer
になるのは知ってるよね
6766:05/02/01 15:43:35
追加です。
IsDBCSLeadByte は、全角2バイト目でも全角1バイト目と判定する文字コードがあるようなので実際に使うのは難しいかもです。
連投スレ汚し役立たずでスマソ...orz
6845:05/02/01 15:53:28
>>66
レスありがとうございます。

IsDBCSLeadByte関数自体は使えるのですが、
期待していた戻り値とは違ったために、「私の環境ではうまく動きませんでした」
という表現をしてしまいました。

"abcあいう"
期待していた戻り値:msg2=0,0,0,0,-1,0,-1,0,-1,
私の環境での戻り値:msg2=0,0,0,0,0,0,0,0,0,

>それと... Dim length, cnt As Integer は ...
これは知りませんでした、実務では気をつけるようにいたします。
69デフォルトの名無しさん:05/02/01 16:23:18
ここで質問でいいのかどうかわからないけど教えてたもう。

いいかげんソースの容量が増えてきたのでバックアップ時に不要ファイルを消してからバックアップ取ろうと思ってる。
で、「VBの不要ファイルってのがどれか?」ってのと「そのファイルを捜して削除するのに何使ってる?」って質問。
70デフォルトの名無しさん:05/02/01 18:36:26
VBのコンパイラって不要なファイルなんて作ったっけ?
そんな神経質なことするぐらいなら圧縮でもしちゃう方が早いきがする。

ていうか、今時VBのソースぐらいの容量が問題になる環境ってのが想像できん。
パラノイアの人?
71デフォルトの名無しさん:05/02/01 18:59:46
>>69
*.vbw
あと、ActiveXコンポーネントをコンパイルすると、中間ファイルみたいの(拡張子は忘れた)が作成される事があるがそれもいらない
72デフォルトの名無しさん:05/02/01 19:00:35
52です
>>56
上手くいきました、ありがとうございました。
73デフォルトの名無しさん:05/02/01 19:17:10
一つ質問させて頂きます。

Msbarcode9.ocx を用いてバーコード化(Code128)して表示、印刷させるアプリを作成しています。
現在バーコードの表示までは完成したのですが、プリンターへ出力出来なくて困っております。

バーコードフォント(Code128)をPrinter.Font.Nameにセットして
BarcodeCtrlのValueをプリンタに送信するだけしてみたのですが
印刷物と、PrintFormでハードコピーしたもの内容が明らかに違うのと、
バーコードリーダーで読み込んだ際に印刷物の方は読み込めず、
ハードコピーした方はリーダーでも読み込みができ、
Textboxのデータとも一致している状況です。

このBarcodeCtrlで変換したバーコードイメージを
そのままプリンターへ送る事は出来ないのでしょうか?

いろいろ検索した結果VB-BarCode .NETなる物もあったのですが、
このコンポーネント?なるものを導入しないと駄目なのでしょうか?

長くなりましたが、VB初心者で上手く表現出来てないかもしれませんが、
ご存知の方がいらっしゃいましたらご教授ください。
7469:05/02/01 21:30:18
>>71
ありがとー。

>>70
どうせやるのならと思ってね。
75デフォルトの名無しさん:05/02/01 22:37:36
XP VB6.0
DataReportのラベルにフォームのラベルの内容を直接移すには
どうすればいいですか?
最初は
DataReport1.Section1.label1.caption = form1.label1.caption
みたいな単純なコマンドだと思ってたんですがやっぱり無理でした...
76デフォルトの名無しさん:05/02/02 05:42:12

PictureBoxに、自作のLineStyleの直線を引く方法を教えてください m( _ _ )m
(例えば3点鎖線のような)
77デフォルトの名無しさん:05/02/02 12:58:53
>>76
ペン
78デフォルトの名無しさん:05/02/02 14:54:35
VB6.0+SP6+WinXP(Pro)

調子くれて ActiveXControl 作ってたら、テスト段階では動くのに、コンパイルしてみたら、
「Visual Basic でサポートされていないオートメーションが変数で使用されています。」
ってエラーがでますた。

このエラーの意味は何となくわかるが、どの変数かが特定できません。
怪しいところを、一つずつ修正してコンパイルしていけばいいように思うんですが、これだと辛いです。
簡単に特定する方法はありませんか?
79デフォルトの名無しさん:05/02/02 14:56:53
デバグ環境るんだから、ひとつひとつつぶせばいやん。
それとも机上でバグ?
80デフォルトの名無しさん:05/02/02 14:58:38
どの変数かが特定できないんですよ。
コンパイルしたときに、エラーが表示されるだけなんです。
81デフォルトの名無しさん:05/02/02 15:04:41
それじゃターゲットマシンにOLEが不足してるんじゃないの?
どんなモジュール使っているのか列挙しないとMSの野郎以外分かりません
82デフォルトの名無しさん:05/02/02 16:35:42
>>78
APIのパラメーターがくさいな。
P-Codeコンパイルでもだめ?
8378:05/02/02 17:08:08
P-Code も同じでした。

ちなみに現在参照しているのは、

Visual Basic For Applications
Visual Basic runtime objects and procedures
Visual Basic objects and procedures
OLE Automation

です。
全部の変数の型を確認するのは嫌なので、何とかお知恵を・・・
84デフォルトの名無しさん:05/02/02 17:15:27
エラートラップして調べればいいんじゃないの?
85デフォルトの名無しさん:05/02/02 17:47:53
>>83
Variant型がくさいと思うけど。
8678:05/02/02 18:19:00
>>84
詳細きぼんぬ

>>85
Variant 型を宣言している部分を全部変えてコンパイルしないと確認できないんですけど、他に何かよい方法はありますか?
87デフォルトの名無しさん:05/02/02 20:56:55
>>78
全体的に意味不明というか情報不足だよ。

たとえば「現在参照している…」ってそれ自作コントロール使ってるアプリのこと?
それとも自作コントロール自身?

どんな機能のコントロールなのかは極秘事項で人に明かせないの?

いつものことだが人にESPを期待しない。
あんたの思念は言葉で表現しないと人に伝わらないよ。

つーか自作コントロールってそもそもコンパイルして使ってみるなりしないと
テストも糞もないと思うんだけど。

なんか開発環境と実行環境が違っていて、自作コントロールが参照しているCOMの
タイプライブラリがちゃんとインストールされていないなんてオチの予感がする。。
8884:05/02/02 21:38:55
OnError で エラー458 を捕まえて場所や頻度を調べればいいんじゃない?って事。
面倒でお気に召さないかもしれないけど。
89デフォルトの名無しさん:05/02/02 23:01:27
エラーはコンパイル時に出てるんだろ、
OnErrorってなんだよ。
90デフォルトの名無しさん:05/02/02 23:31:18
あ、コンパイル時エラーか。>>80見落としてた。ゴメン
91デフォルトの名無しさん:05/02/03 00:58:33
VBScriptで質問があります。
VBSでUDP(又はIPパケット)を送信する方法を、ご存じの方教えてください。
目的は、自作のスクリプトからsyslogメッセージを送ることです。

MSDNで、「.NET FrameworkでUdpClientクラス」を見つけましたが、
VBSで使えるモノでしょうか?(そのままでは動かないことは確認しました。)

あとは、GoogleでVB(VBSでない)やCで「WinSock」を使う例が見つかりましたが
そのままでは使えませんし。

よろしくお願いします。
9278:05/02/03 09:30:39
>>87

>>たとえば「現在参照している…」ってそれ自作コントロール使ってるアプリのこと?
>>それとも自作コントロール自身?

 えっと、自作コントロール自身がコンパイルできないので、自作コントロール自身の参照を列挙しました。
 コントロールを使用する不特定多数のプロジェクト側を書いても意味ないと勝手に思ってしまったものですから。
 まさか、コントロールを呼び出す側の参照内容も明示しなければいけないなんて、ボクには想像もつきませんでした。

>>いつものことだが人にESPを期待しない。
>>あんたの思念は言葉で表現しないと人に伝わらないよ。

 「Visual Basic でサポートされていないオートメーションが変数で使用されています。」 の変数を調べるのに、
怪しい変数を外してコンパイルを繰り返すしか方法はないんですか?
 というのが知りたいんです。最初から同じ質問内容のつもりだったんですが、エスパーでないとわからないでしょうか?
 もしくはボクの文章力がないのでしょうか?

>>どんな機能のコントロールなのかは極秘事項で人に明かせないの?

 ボクの知りたいのは、「Visual Basic でサポートされていないオートメーションが変数で使用されています。」 の変数を調べるのに、
怪しい変数を外してコンパイルを繰り返すしか方法はないんですか?というのが知りたいんですが。
 この場で見ず知らずの方に、仕様を明らかにして根本的にデバッグしてもらうとか、エラーの出ている変数を特定してもらうつもりなら詳細説明が必要でしょう。
しかし、そこまでをお願いするならプログラマなんて辞めたほうがマシですよね。多分・・・

>>ーか自作コントロールってそもそもコンパイルして使ってみるなりしないと
>>テストも糞もないと思うんだけど。

 お説教ありがとうございます。以後気をつけます。
 おっしゃる通り、コンパイルして使ってみるなりしないとテストもクソもないのです。
 そこでお願いです。コンパイルするために、問題のある変数を調べる方法を教えてもらえませんか?
93デフォルトの名無しさん:05/02/03 09:50:09
変数のオートメーションエラーなんだから、Variantが怪しいとしか
言えないんだわ。
二分木検索って手もある訳だから、大きく割って上か下かで、検索
すればすぐだろ。
9478:05/02/03 10:23:38
>>93
>>二分木検索って手もある訳だから、大きく割って上か下かで、検索
>>すればすぐだろ。

 この方法は同様の現象(コンパイル時にのみエラーがでる)際に、何度か試したことがあります。
 プロジェクト全体が大きい場合やモジュール数が多い場合、また広範囲のソースコードを操作するため、あまりやりたくなかったのですが、やはり、この方法しかないんですね・・・

 ということで、この方法で見つかりました。

>>変数のオートメーションエラーなんだから、Variantが怪しいとしか

 はい、その通りでした。

public property get AAA(optional byval V as Variant = Null) as CMyClass

 の Null がお気に召さなかったらしく・・・ "" に変えたら通りました。
 ありがとうございました。

 ちなみに87氏の説では、あなたはエスパーと言う事になりますね。
95DethLow:05/02/03 12:30:51
VB6.0で販売システムを作成しているのですが、メルマガを発行したいので
ACCESSで作成したデータベースから顧客すべてのメールアドレスを取得し
メーラーのBCCに自動で挿入し件名・本文を入力した後にコマンドボタンを押したら
送信する処理は作成できるんでしょうか?
96デフォルトの名無しさん:05/02/03 12:47:54
>>95
できます。
97デフォルトの名無しさん:05/02/03 12:48:49
>>95
そういう方法では普通やらない
メルマガの作り方から勉強して下さい
9893:05/02/03 13:43:12
>>94
エスパーではなく屁スパかな。
99DethLow:05/02/03 14:41:56
>>97メルマガの作り方から勉強してみます・・・
100デフォルトの名無しさん:05/02/03 15:38:20
高1なんですが、授業でゲームを作れと言われました。簡単な作り方を教えてください
101デフォルトの名無しさん:05/02/03 15:55:24
フォーム上にテキストボックスの配列がある場合、フォーカスがあたっているテキストボックスの
インデックスはどうやって知るのですか?
102デフォルトの名無しさん:05/02/03 17:16:02
>>101
コントロール配列だったら、イベント引数の Index で取得できます。
10378:05/02/03 18:01:29
>>101
アクティブなコントロールを得るには、activecontrol オブジェクトを使うと楽です。
こんな感じで書くと良いですよ。

if (activecontrol.name = "txtArray") then
CurrentIndex = activecontrol.index
end if
104デフォルトの名無しさん:05/02/03 19:17:08
>>103
C# のように見える (w
105デフォルトの名無しさん:05/02/03 19:50:03
>>102-103
ありがとうございます
106デフォルトの名無しさん:05/02/03 20:00:31
>>100
どんなゲームが望みなんだろう?
こんな漠然とした質問も久しぶりに見たよ。
107デフォルトの名無しさん:05/02/03 23:39:36
VB6.0 winXP

DataReportのLabel1にフォームのLabel1を表示したい場合は
DataReport.Sections("Section1").Controls("Label1").Caption = Form1.Label1
でいけたんですけど同じように
DataReport.Sections("Section1").Controls("Image1").Picture = Form1.Image1.Picture
とイメージを持っていこうとすると
「オブジェクトはこのプロパティまたはメソッドをサポートしていません」
と実行時エラーが出るのですが何が悪いのでしょうか
108デフォルトの名無しさん:05/02/04 09:58:58
>>100
1. フォームにラベルとコマンドボタンを配置
2. 乱数を発生させ、その値に応じて「グー」、「チョキ」、「パー」をラベルに表示

これでじゃんけんゲームの完成じゃ。

宿題なんだからここから先は自分で考えな。
109デフォルトの名無しさん:05/02/04 11:23:41
VB6.0 win2000SP4

splitを使って出た文字を違うフォームのテキストにそれぞれ表示させたいのですが、
うまくいかず困っています。宜しくお願いします。

Dim i As Integer
Dim sData() As String

sData = Split(sKey, ",")
For i = 0 To UBound(sData)

Load Form2

Form2.Show
Next
110デフォルトの名無しさん:05/02/04 12:50:23
WindowsMediaEncoder9 SDKを使用して音楽ファイルの連続エンコードを
VBScript上で行っています。

エンコードを繰り返していると、原因不明(エラーハンドルは捕まえられません)
のままScriptが止まった状態になります(プロセスは生きています)

このようにスクリプトが止まってしまう現象として、考えられる原因は
何がありますでしょうか・・・ メモリリークとか怪しいと思っていますが
リークしているか調べるられるのでしょうか・・・
111デフォルトの名無しさん:05/02/04 14:07:02
Dim i As Integer
Dim sData() As String
Dim f() As Form2

sData = Split(sKey, ",")
ReDim f(UBound(sData))
For i = 0 To UBound(sData)
    Set f(i) = New Form2
    f(i).Caption = sData(i)
    f(i).Show
Next
112デフォルトの名無しさん:05/02/04 15:38:17
>>111
ありがとうございます。大変助かりました。
113デフォルトの名無しさん:05/02/04 16:52:02
2000 VB6 0#

VB6開発環境でGrepやブックマークのショートカットキー対応などの機能を持ったアドインを自作したいのですが、
どこか参考にできるようなサイトや書籍はないでしょうか?
ググってみたけどアドインを解説しているサイトはなかなか見つからなくて…
114デフォルトの名無しさん:05/02/04 20:55:28
6.0にはsplit関数があるのか。便利だなー
115デフォルトの名無しさん:05/02/05 02:33:21
textboxに文字が入力されないのですが、どのような原因が考えられますか?
keyPresをみてみると、codeは正しく来ているのですが・・・
116デフォルトの名無しさん:05/02/05 03:25:57
どこかに盗まれてるのかなぁ。
例えばキーロガーとか。
まあ、そんな間抜けなロガーは無いか。
117デフォルトの名無しさん:05/02/05 03:55:23
>>115
かんたん、キープレスでキャッチしてない、
女を馬鹿にするなよ
118デフォルトの名無しさん:05/02/05 12:42:28
>>113
なんのアドインだよ。
119デフォルトの名無しさん:05/02/05 13:17:07
>>107
Set
120デフォルトの名無しさん:05/02/05 16:10:49
VB6.0
MSChart SP4

MSChartでX軸を左向きにするにはどうすればいいでしょうか?
121デフォルトの名無しさん:05/02/05 17:23:58
VB6.0
3 text1
5 text2
8 text3
3+5 text4←計算式をテキストボックスに出すにはどうやってやればいいんでしょうか?
122デフォルトの名無しさん:05/02/06 02:17:25
>> 121
・・・パズルか?
う〜ん、意味がわからん。
123デフォルトの名無しさん:05/02/06 02:25:35
>>121
text1 & "+" & text2
124デフォルトの名無しさん:05/02/06 02:26:47
>>122
text4に計算式を出さなくちゃいけないんだけど
やりかたがわからないです。
text1とtext2に入れた数をtext3に答え
text4に式を出す。横には足すとか引くとか色々なボタンがあるんですけど
125デフォルトの名無しさん:05/02/06 02:30:38
>>123
サンクスです。出来ました。ありがとうございました。
126デフォルトの名無しさん:05/02/06 04:59:33
text1に入力した数値からtext2に入力された数値までの累計を求める
Dim 入力1 As Integer
Dim 入力2 As Integer
Dim 累計 As Integer
Dim cnt As Integer

入力1 = Text1.Text
入力2 = Text2.Text
累計 = 0
cnt = 入力1

Do While cnt <= 入力2
累計 = 累計 + cnt
cnt = cnt + 1
Loop
Text3.Text = 累計
これで普通に求まるんですが
偶数の累計はどこを変更すればいいんでしょうか?
127デフォルトの名無しさん:05/02/06 10:32:25
意味わからん。。
データ2つしかなかったら「累計」じゃなくて「合計」だと思うんだけど・
っていうか、偶数の累計??判じ物の一種ですか?

ていうか、こんなレベルの内容をよく人に聞けるもんだ。
こんな感性の人間は何やらしてもおそらく満足にできないタイプだろう。

普通黙って本屋行って入門書買って勉強するとかするでしょ。
VB5,6なんてウェブ上にだって親切なサイトがいくらでもある。
学校の宿題なら当然テキストがあるだろ。
128デフォルトの名無しさん:05/02/06 15:27:09
  Dim 入力1  As Integer
  Dim 入力2  As Integer
  Dim 累計  As Integer
  Dim 偶数計 As Integer
  Dim cnt   As Integer

  入力1 = Text1.Text
  入力2 = Text2.Text
  累計 = 0
  偶数計 = 0
  cnt = 入力1

  Do While cnt <= 入力2
    累計 = 累計 + cnt
    If cnt Mod 2 = 0 Then
      偶数計 = 偶数計 + cnt
    End If
    cnt = cnt + 1
  Loop
  Text3.Text = 累計
  Text4.Text = 偶数計
129デフォルトの名無しさん:05/02/06 16:52:58
>>128
ありがとうございます!
130デフォルトの名無しさん:05/02/06 16:58:26
テキストボックスに入力されたものが数値か判断するには
どうプログラムを書けばいいんでしょうか?
131デフォルトの名無しさん:05/02/06 17:09:48
for~next文を使って、
     12345
     12345
   12345
  12345
    12345
     12345
      12345
のように表示させるプログラムを作りたいのですが
わからず困っています。
ヒントだけでも教えてもらえませんしょうか?
132デフォルトの名無しさん:05/02/06 17:23:14
>>130
IsNum()
133デフォルトの名無しさん:05/02/06 17:25:47
>>131
for i=0 to 6
for j=0 to iif(i>3,3-i,i-3)
print ""
next j
print "12345"
next i
134デフォルトの名無しさん:05/02/06 17:52:44
For i = 0 To 6
  Print Space(Abs(i - 3)) & "12345"
Next i
135131:05/02/06 19:00:44
>>133,134
ありがとうございます。
テスト期間中なので、ほんと感謝です。
他にもわからなくて困っているのですが、質問させていただいてもよろしいでしょうか?

             1
           2
         3
       4
     5
     1 2 3 4 5 7 8 9
                  6
                7
              8
            9

これもfor〜next文を使用してプログラムを
完成させるらしいんですが・・・全くわかりません・・・。
136デフォルトの名無しさん:05/02/06 19:05:19
>>135
あなたはテストで出される問題を全てここでやってもらうつもりか?
137デフォルトの名無しさん:05/02/06 19:12:14
>>135
水平の数字列に6が無いのが気になる。
138デフォルトの名無しさん:05/02/06 19:16:35
>>132
サンクスです。
139デフォルトの名無しさん:05/02/06 20:28:35
s = Space(5)
For i = 1 To 9
  Print s & i
  s = Left(s, Len(s) - 1)
  If s = vbNullString Then
    For j = 1 To 9
      If j <> 6 Then
        s = s & j & Space(1)
      End If
    Next j
    Print s
    s = Space(10)
  End If
Next i
140131:05/02/06 21:00:10
すいません、6抜けてました。

135>>一応自分でもやってるんですが、どうしても解らなくて・・・
134さんと139さんのヒントを元に自分でやってみたんですが

For i = 1 To 5
Print Space(Abs(i - 5)); i
Next i
Print 12345678910#
For j = 6 To 10
Print Space(Abs(j - 20)); j
Next j

菱形っぽいですができました。
できるだけがんばってみます。
ありがとうございました。
141デフォルトの名無しさん:05/02/06 21:31:12
VB6.0で
ポップアップメニューを右クリで表示させるんですが
左クリしても表示しちゃうんですが表示させないようにするには
どうすればいいでしょうか?
142デフォルトの名無しさん:05/02/06 21:33:00
>>141
どうやって表示させてるんだ
143デフォルトの名無しさん:05/02/06 21:34:17
If Button = 2 Then
PopupMenu M_Popup
End If
ですが・・・
144デフォルトの名無しさん:05/02/06 21:36:09
いやできてました。
すいません。
145デフォルトの名無しさん:05/02/06 21:53:21
右クリで出たものをクリックしてForm上に画像を出すんですけど
出ません。左クリでも最初の画像だけ出ちゃいます。
左クリで出さないようにして
右クリで画像出すにはどうやればいいんでしょうか?
ちなみにメニュー欄にあるやつを押せば画像はちゃんと出るんですが・・・
146デフォルトの名無しさん:05/02/06 21:59:40
>>145
基地外だな
147デフォルトの名無しさん:05/02/06 22:07:34
>>145-146
コーヒー噴いちゃったじゃんかよ。責任とれ!
148デフォルトの名無しさん:05/02/06 22:48:50
わ、わかった
むきだしのコックをぶちこんでくれ
149デフォルトの名無しさん:05/02/06 22:54:16
右クリで出すにはどうすればいいんでしょうか?
左では出なくなったんですが
150デフォルトの名無しさん:05/02/06 22:57:57
なんか表現に興奮するな・・・ ちょっと抜いてくる
151デフォルトの名無しさん:05/02/06 23:05:35
性欲をもてあます
152デフォルトの名無しさん:05/02/07 02:18:26
良スレの予感
153デフォルトの名無しさん:05/02/07 13:44:43
お取込のところすまんがWindows2003Sever上でVB6の動作はどんなもんですか?
2000からの移行なんだけど、コーディングでささいな変更とかあったら教えてください
お願いします
154デフォルトの名無しさん:05/02/07 15:14:15
すみません標準コンポーネントのMsFlexgridについておしえてください。
自前でソート機能を作成したのですが、項目部分(トップの見出し)
をクリックした再のRowsの値により、どの行がクリックされたか判定しています。
なぜかIF Rows = 0 Thenの処理を飛び越えるのでウオッチウインドウで確認したところ
見出しのトップ行と次のデータ部の行で取得できる値がいづれも1≠ェ
戻ってきてしまいます。見出し行クリック時のうまい判定のしかたを伝授願えないでしょうか?
環境はVB5です。


>>153
うちの環境では5でも6でも順調に動いていますよ。
155154:05/02/07 15:36:34
すいません解決です。どうやら固定値を設定してはいけないみたいですね
コードで項目部の色変えることにします。
156デフォルトの名無しさん:05/02/07 16:17:53
角丸四角形の描画はこれでいいですか?
いちおう線はつながりますけど、泥縄式に調整したので自信なくて。

pi = 4 * Atn(1)
r = 8 ' 半径
x = 15 ' 開始X座標
y = 40 ' 開始Y座標
w = 300 ' 幅
h = 200 ' 高さ
Line (x + r, y)-Step(w - 2 * r - 1, 0)
Line (x + r, y + h)-Step(w - 2 * r - 1, 0)
Line (x, y + r)-Step(0, h - 2 * r - 1)
Line (x + w - 1, y + r)-Step(0, h - 2 * r - 1)
Circle (x + r + 1, y + r + 1), r, , pi * 0.5, pi
Circle (x + w - r - 1, y + r + 1), r, , 0, pi * 0.5
Circle (x + r + 1, y + h - r - 1), r, , pi, pi * 1.5
Circle (x + w - r - 1, y + h - r - 1), r, , pi * 1.5, pi * 2#
157デフォルトの名無しさん:05/02/07 17:11:10
>>156
RoundRect 使え
158156:05/02/07 19:16:54
>>157
ありがとう。
検索したら、「角の丸い」って書いてあった。
「角丸」じゃほとんどヒットしなかったのに。
159デフォルトの名無しさん:05/02/07 20:55:51
VB6.0でマルチスレッドって出来るんですか?
160デフォルトの名無しさん:05/02/07 21:00:20
>>159
するな。
161153:05/02/07 21:02:46
>>154 レスありがとうございます。
2003でやってみようかな
162デフォルトの名無しさん:05/02/08 06:50:16
>159
ActiveXのInstancingプロパティをMultiUse
163デフォルトの名無しさん:05/02/08 09:08:24
>>159
やめろ、ひどい目にあうぞ。
あんな簡単な、マルチメディアタイマーさえ動かない。
164デフォルトの名無しさん:05/02/08 18:58:59
VB6は事務処理専用に使ってます。
165デフォルトの名無しさん:05/02/08 18:59:30
適材適所ですな(w
166デフォルトの名無しさん:05/02/08 19:06:07
Winnyだってマルチスレッドを直接使わず、
VBでも使えるsocketの非同期通信だけでやっているわけで
VBだってどうにかなる。
167デフォルトの名無しさん:05/02/08 19:18:27
一輪車で日本一週できるかっつったらできるけどさぁ
168デフォルトの名無しさん:05/02/08 19:22:57
わざわざやらん罠(w
169デフォルトの名無しさん:05/02/08 20:00:48
やってやる、覚えてろよ。
170デフォルトの名無しさん:05/02/08 23:42:26
Windows98以降であれば、何のコンポーネントも追加せず
作ったソフトなら、VBランタイムを別途インストールしなくても一応起動しますよね?
だけど、日本語を使ってると、その日本語が化けるって症状が起こりますよね?
この認識あってます?
171デフォルトの名無しさん:05/02/08 23:46:52
>>170
特殊なコンポーネント使ってなければ、英語のVBランタイムの一部は入ってるな
172デフォルトの名無しさん:05/02/08 23:50:03
ごめん、VB使ってるのはメインウインドウだけ
173デフォルトの名無しさん:05/02/09 11:20:00
VB増強作戦のオフライン版を持ってる型、ぜひアップロードしていただきたいのですが・・・
174デフォルトの名無しさん:05/02/09 16:22:46
2.07MBの奴だよね。

うpろだおくれ。
175デフォルトの名無しさん:05/02/09 17:27:05
印刷帳票の一部に、リッチテキストのデータを入れたいんですけど、どうすれば良いのでしょうか?
176175:05/02/09 17:48:38
もしや、一度イメージにしないと駄目なのか?
177175:05/02/09 18:00:09
イメージにしてみたんですが、一度、解像度が低い状態でイメージ化したものをプリンターオブジェクトに吐き出したためか、ジャギジャキな文字になってしまうんですが。
何か良い方法はないんでしょうか?
178デフォルトの名無しさん:05/02/09 19:47:19
リッチテキストのデータって何かね?
179173:05/02/09 23:58:45
>>174
ttp://www.fileup.org/
ここにおながいします。m(__)m
180デフォルトの名無しさん:05/02/10 04:15:28
VBでI/Oポートの制御したいです。
Windows APIでもいいのですが、可能でしょうか?
i)特定番号のI/Oポートの内容を見る。
ii)特定番号のI/Oポートに書く。
iii)特定のI/Oに入力があったときに割り込み処理
(またはデータの取りこぼしがないようにする方法)

よろしくおねがいします。
181デフォルトの名無しさん:05/02/10 11:56:03
>>180
I/Oボードのメーカーにきけば?
182デフォルトの名無しさん:05/02/10 15:09:10
>>179
fup8004.lzh で、受信パスは vb で。
183173:05/02/10 15:33:31
>>182
ありがとうございます。モウナクシマセン・・・・
ぢつはもう7年前の話なんですね
184デフォルトの名無しさん:05/02/10 17:16:00
>>180
i),ii)はCでDLLを作れば可能だけど、
iii)は難しいかな。割り込みはドライバーの仕事だからな。
どうしてもと言うならCのアプリを作ってポーリングでポートを見て、
MessageでVBに飛ばすかな。
185デフォルトの名無しさん :05/02/10 17:41:48
すんませんVB6.0なんですが、質問させてください。
iniファイルの置き場所をwindows(もしくはwinNT)直下では無く、
任意のフォルダ(出来れば実行ファイルが置いてあるフォルダ)にしたいのですが、
そのパス等、どのように記述すれば良いんでしょうか?
どうかよろしくお願いいたします。
186デフォルトの名無しさん:05/02/10 19:05:49
iniファイルの読み書きには何を使ってるんだ?
187デフォルトの名無しさん:05/02/10 22:30:12
188デフォルトの名無しさん:05/02/10 23:25:17
>>183
お役に立てて光栄。大切にしてケロ。
ろだの方はデリるズラ。
189デフォルトの名無しさん:05/02/11 10:27:09
10進から16進に変換するにはどうすればよいのでしょうか。
190デフォルトの名無しさん:05/02/11 10:39:44
hex
191デフォルトの名無しさん:05/02/11 10:41:36
>>189
Hex
192デフォルトの名無しさん:05/02/11 10:45:19
>>190-191
ありがとうございます。あともう1つお願いします。

数値の先頭を0埋めしてある桁数になるようにしたいのですが、
どうやるのが普通でしょうか。VB.NETならPadLeftとかいう関数が
あって便利なのですが。

800 → 000800

みたいなことです。
193デフォルトの名無しさん:05/02/11 10:49:42
Format
194デフォルトの名無しさん:05/02/11 10:50:36
Right(("000000" & "800"), 6)
195デフォルトの名無しさん:05/02/11 10:51:22
Format("800", "000000")
196デフォルトの名無しさん:05/02/11 11:06:27
>>193-195
どうもです。助かりました。
197デフォルトの名無しさん:05/02/11 12:00:57
>>177
OleDrawで描いてみるとか。
198デフォルトの名無しさん:05/02/11 12:23:21
ボタンを押したら、OutlookExpressの「メッセージの作成」ウィンドウを
表示して、件名や本文や宛先を表示したいんですがどうやれば
いいかわからない・・・orz

よろしくお願いします。m(_ _)m
199デフォルトの名無しさん:05/02/11 12:30:46
OutlookExpressを起動してメールの作成ボタンを押し、
メッセージの作成ウィンドウが表示されたら件名や本文や宛先を
入力して表示させます。
200デフォルトの名無しさん:05/02/11 12:31:07
201198:05/02/11 12:57:04
>>199 >>200
早速のお返事ありがとうございました。m(_ _)m
さあ、がんばろうっと!
202198:05/02/11 13:32:43
>>200
mailto:をコピペしたんですが、本文の1行目が必ず改行されてしまいます。
ShellExecuteEXを使用しています。
どうして・・・orz
203デフォルトの名無しさん:05/02/11 16:01:14
Visual Basic 6.0を使ってます。
質問なんですが、DirectXを使ってスタートボタンを押したときにでるメニューを消したいのですが、どうすればいいでしょうか。
お願いします。
204デフォルトの名無しさん:05/02/11 18:42:11
>>203
DirectXを使ってスタートボタンを押すことはできねーぞw。
もちっと読む側のことを考えて文を書けや。

全画面(占有)モードのときWindowsキーを押されても機能しないようにしたいってことかな?
それならDirectInputで強調レベルにDISCL_FOREGROUNDを指定するだけでいいはずだぞ。
DISCL_NOWINKEYってフラグもあるけどな。
205203:05/02/11 21:54:22
>>204
すいませんでした。そのことを心がけるようにします。

DISCL_FOREGROUNDに指定すると、DiDev.GetDeviceStateKeyboardのところでエラーになりました。
何故でしょうか。
206203:05/02/11 23:04:20
どうやら、そのプログラム本体からフォーカスがなくなるとエラーになるみたいです。
これを改善する方法を教えてください。
207デフォルトの名無しさん:05/02/11 23:22:19
>>203
だからぁ〜、どういう風にやってて、どんなエラーなんよ?

メソッドの意味とか理解しないでコピペしてんじゃねーの?
アクセス権とかちゃんとてやってる?
「心がける」なんて小学生にでも「言える」ぞ?ん?
208デフォルトの名無しさん:05/02/12 15:25:22
shiftキーが押されたかどうかを知る方法はないのでしょうか?
メニューエディタのところに表示しないダミーのメニュー置いてショートカットキー指定すればいいジャン、って思ったのですが
shift+enterというのがないもので・・・
209デフォルトの名無しさん:05/02/12 15:35:39
あ、すいません。。。
keydownイベントでできました。。。
210デフォルトの名無しさん:05/02/12 20:10:41
VB6.0 を使用しています。
「フォームが最小化された」「最小化の状態から復元された」をトリガにして
処理を行いたいのですが、どのようにすればよいでしょうか。
フォームの width、height を監視するくらいしか思いつかないのですが。
211 ◆uILP78dVVc :05/02/12 20:20:04
>>210
最小化等の動作をするとForm_Resizeイベントが発生します。
イベント内でフォームのWindowStateを見て、処理を分岐します。
212デフォルトの名無しさん:05/02/12 20:20:51
>>210
Private Sub Form_Resize()
  Select Case Me.WindowState
213210:05/02/12 20:24:39
>>211-212
ありがとうございます。
WindowState プロパティがあるのを失念していました。
214198:05/02/13 13:54:35
VB6、SPREAD6を使っています。
5列100行のスプレッドシートで、表示可能行は20行です。

一番先頭の行を表示した状態で、その先頭行をクリックしたまま下のほうに
マウスを移動するとスプレッドシートがスクロールするのですが
最終行が一番上にきて終了してしまいます。
最終行を表示可能行の一番下に表示したいのですが
どうやったいいのでしょうか?
よろしくお願いします。 m(_ _)m
215198:05/02/13 14:20:06
ScrollBarMaxAlignプロパティでできました。(^^;
216デフォルトの名無しさん:05/02/13 16:41:56
Os:WinXP Home
VB:VB5.0 SP無し

PCゲーム(Winning Post7)のメモリを操作したいと思ってます。
OpenProcess → ReadProcessMemory → WriteProcessMemory
ということまでは分かったんですが、チンプンカンプンです。。
メモリマップ等が詳しく載っているサイトや本をご存知の方いますか?
もしくは類似品を作ったことがある人で、手順を教えていただける方
いますか?
どうぞ宜しくお願いします<(_ _)>
217デフォルトの名無しさん:05/02/13 17:40:37
WIN2000
VB6 SP5
EPSON LP-8100
です。

印刷の事なのですが、「逆方向から印刷」をコードで
実現したいのですが、可能でしょうか?
218デフォルトの名無しさん:05/02/13 17:49:00

【Q】
  >>217の文章で、217以外の人間に
  217が実現したいと思っていることを伝達することは可能でしょうか?

【A】
  不可能だと思います。

「逆方向からの印刷」ってどういうこと?
機種名書かれても普通の人はどんなプリンタかわかりません。
219デフォルトの名無しさん:05/02/13 18:00:02
>>218
その程度もわからないなら口を挟むな
220217:05/02/13 18:20:57
217です。書き方悪くてすみません。
印刷したいものをPictureコントロールに乗せて、そ
れを180゜回転して印刷、なんて事も考えたのですが、
処理に時間がかかり過ぎるかなぁとか。
プリンタドライバの操作は簡単ではないですか?
221デフォルトの名無しさん:05/02/13 18:31:56
>>220
紙を反対にセットしたほうが早いと思われ。
222203:05/02/13 18:32:23
>>207
DirectDrawの強調レベルのところが
DD.SetCooperativeLevel hWnd, DDSCL_EXCLUSIVE Or DDSCL_FULLSCREEN Or DDSCL_NOWINDOWCHANGES
DirectInputの強調レベルのところが
DiDevK.SetCooperativeLevel hWnd, DISCL_FOREGROUND Or DISCL_NONEXCLUSIVE
となっております。

これで、Windowsのキーを押すと、
実行時エラー '-2147024866(8007001e)';
オートメーション エラーです。
指定されたデバイスから読み取れません。
というエラーが出ます。
223217:05/02/13 18:59:21
何度も申し訳ないです。
決められた様式の枠内に文字を印刷したいのですが、
プリンタの印刷範囲の下マージンが17mmで印刷しきれ
ません。「逆方向から印刷」する事で、解消できるの
ですが、コモンダイアログの「印刷」を出してきて、
「プロパティ」を押す、という方法はしたくないので
す。
224デフォルトの名無しさん:05/02/13 20:08:53
>>223
今までどういう方法で印刷してたの?
プリンタのプロパティで“逆方向から印刷する”ってあるの?
225デフォルトの名無しさん:05/02/13 20:26:39
>>223
それなら、描画位置をScaleXXプロパティ使ってずらすだけでいいと思うんだけど。。
まさかFormのPrintFormなんて使ってないよね?
226217:05/02/13 20:31:29
EPSONのプリンタしか知らないのですが、「逆方向か
ら印刷」もしくは「180゜回転して印刷」というのが
あります。
227デフォルトの名無しさん:05/02/13 20:38:19
VB6.0を使用してます。質問したい事があるのですが、現在の日付から自分で指定した日付の差の日数を求めるプログラムを
作りたいのですがこれにはDateDiff関数を使いますよね。
MSDNでDateDiffの使用例を見て作ったのですが、これからの日(今日で言うと2/14〜12/31)を求める事はできたのですが
過ぎてしまった日にち(今日で言うと1/1〜2/12)を入れてやると「-〜日」となってしまうんです。
12月をまたいでもちゃんとできるようにしたいのですがどうすればいいのでしょうか?
DateDiff関数じゃなく別の関数を使用しなければならないのでしょうか。

ちなみにこれがMSDNに記載されていた使用例です。

Dim TheDate As Date
Dim Msg

TheDate = InputBox("日付を入力してください。")
Msg = "今日からの日数: " & DateDiff("d", Now, TheDate)
MsgBox Msg

228デフォルトの名無しさん:05/02/13 20:41:11
>>226
Printerオブジェクトの中にそれらしきプロパティないの?
229デフォルトの名無しさん:05/02/13 20:43:29
ちょっとわかりにくかったもしれないので補足です。

1/1の日を指定したのであれば今日を元に「指定した日まで後320日です」という風にしたいんです。
230デフォルトの名無しさん:05/02/13 20:50:36
>>229
日付を入力するときに、年を入力しなかったでしょ。
でないと、2004年1月1日と解釈しますよ。
231デフォルトの名無しさん:05/02/13 20:51:53
>>229
西暦と月と日全てが無いと、計算できないだろ?
232230:05/02/13 20:54:08
× 2004年
○ 2005年
233デフォルトの名無しさん:05/02/13 20:54:12
あー西暦を忘れてました・・・。あほ質問ですいませんでした。
234デフォルトの名無しさん:05/02/14 10:33:27
mciSendStringでmidiが再生できない時があるのですが、
何か原因はありますかね?
私の環境では再生できるのですが、
他の環境では再生できないらしいです。
その再生できない環境ですが、サウンドカードも積んであるようですし、
なにより他の再生ソフトでは再生できるようでして。
midiも特に拡張音源は使ってませんし。
ググッたところmidiのフルパスにスペースが含まれていると
正しく動作しないとあったのですが、
その辺もダブルクォーテーション入れて対策済みですし。
原因がサッパリつかめなくて困ってます。
どなたかご教授願えないでしょうか?
235234:05/02/14 10:36:59
訂正。mciSendStringAです。
236230:05/02/14 10:57:43
>>234
鉄道屋さんですよね?
マップをクリックしたら、再生がはじまるときがあるのですが、
頭だし1秒か2秒で止まってます。
237234=usk ◆.GszOyJeCA :05/02/14 11:25:30
ハイ、その通りです。ってか八方塞です。orz
まぁついでなんで作品と疑惑のソース晒しておきますね。
ラップ化したクラス : ttp://isweb43.infoseek.co.jp/computer/kml/midiclass.zip
本作品 : ttp://isweb43.infoseek.co.jp/computer/kml/tetsudoya1010b.zip
238デフォルトの名無しさん:05/02/14 12:54:13
重すぎて動かん
239デフォルトの名無しさん:05/02/14 19:21:44
>>234
無責任に気づいた点を並べてみる。
MCIのコマンドについては知らないので何も指摘できませんが。。

(1) cStateって配列を初期化で、文字列の最後のナル文字は不要だと思う。

(2) 各プロパティ・メソッドの中のmciRetStringは、mciSendStringをコールする前に
  mciRetString = String(255, vbNullChar)のようにナル文字で埋めておく必要があると思う。
  特に、MidiStateプロパティの中の処理はまずい気がする。
  ていうか、MSDNにあるように、使わないんだったらNULL渡しとけばいいのでは?
240デフォルトの名無しさん:05/02/14 21:55:36
Val関数使うと物凄い遅くなるんですね。
241usk ◆.GszOyJeCA :05/02/15 00:56:35
>>239
レス有難うございます。
cStateのNullを取ったりしていろいろ文字列弄くってたら
>>236さんと似たような症状が出てきました。
mciRetStringに返される文字列がNT系と9x系で違ってるかも。
Nullの後すべてNullで埋められるか、デフォルトのままか。
デフォルトのままだったらcStateと同値判定されて正しく動作して
Nullで埋められたら同値判定されず正しく動作しない。そんな感じがします。
とりあえず、その辺の修正をして今は報告待ちです。
242239:05/02/15 01:12:24
あ、ちょっと言葉が足りなかったので補足しますが、MidiStateプロパティの中の
  If cState(i) = LCase(mciRetString) Then
ここは明らかにまずい。

>>239に書いたように、mciRetStringはまずAPI呼ぶ前にナル文字で埋めとく必要があるし、
APIによってセットされた文字列を検査するときも、下のMSDNにあるようにLeft$とInstrを
組み合わせてナル文字の前で切ってやる必要があると思う。
http://www.microsoft.com/japan/developer/library/VBCon98/vbconpassingstringstodllprocedure.htm
243usk ◆.GszOyJeCA :05/02/15 01:32:45
>>242
そうやっといたら正しく動いたようです。
有難うございました。
244デフォルトの名無しさん:05/02/15 10:05:39
WinXP+SP2+office2003のマシンにVB6.0を入れると、
VB起動時に毎回office2000のインストーラが立ち上がってくるようになったんだけど・・
なぜ?
ちなみにAccess使ってるんだけど何か関係あるの?
245デフォルトの名無しさん:05/02/15 12:01:31
>>244
たしか既知のバグ。
MSに対処方法が載ってる。
246244:05/02/15 12:35:19
これですかね?

[OFF2000] DHTML 編集コントロールにアクセスすると Windows インストーラが起動する
http://support.microsoft.com/default.aspx?scid=kb;ja;304107
247244:05/02/15 12:38:36
すいません、これのようですね。

[VB6] Office 2000 の CD を要求される
http://support.microsoft.com/default.aspx?scid=kb;ja;417320
248154:05/02/16 18:03:18
すみません緊急的に教えていただきたく存じます
文字列"c:\folder\main\app\Job"
というフォルダパスなのですが、一番最終の"Job"の文字列のみを抽出したいのですが
何卒お願いいたします
249デフォルトの名無しさん:05/02/16 18:13:34
6なら、Instrの文字列うしろからバージョンとかで出来る。
またはSplitで分けた末尾。
250デフォルトの名無しさん:05/02/16 18:40:07
ていうか、文字列関数眺めてそれぐらいのアルゴリズムが
ぱっと思い浮かばない人がプログラミングに関わるのは本人にとっても悲劇だと思う。
251デフォルトの名無しさん:05/02/16 19:32:23
>>249
splitって、文字列を後ろから¥探すより速いですか?
252デフォルトの名無しさん:05/02/16 19:46:13
自分で試せることは自分で
253デフォルトの名無しさん:05/02/17 00:09:55
vb6.0です
bitblitでvbSrcCopyを使って描写するとフォームの下が透けて見える
いろんなサイトのサンプルコードと見比べたけど原因が分からない

bitblit vbSrcCopyで背景を描写(したいんだけどバグる)

bitblt vbSrcAndとvbSrcInvertでオブジェクトを描写(これは正常に動作してる)

Refresh
Wait

繰り返し

助けてくれ
254デフォルトの名無しさん:05/02/17 00:11:31
なんかbltをblitとか書いちゃったけどそこはスルーで
255デフォルトの名無しさん:05/02/17 00:17:57
自己解決しました
AutoRedraw忘れてた
なにやってんだ俺は・・・自分一人で空回り
256デフォルトの名無しさん:05/02/17 00:45:50
ttp://www.xbeat.net/vbspeed/
スピードを気にしてる人どぞ
2バイト文字に対応してるかどうかは知らん
257デフォルトの名無しさん:05/02/17 01:09:05
ところで、質問なんだがいまさら保守要員以外でVB6で食えるの?
なんか食える人間ゴロゴロいるんだがいつごろ、消えるのだ?
258デフォルトの名無しさん:05/02/17 01:19:47
>>257
.NETかJavaの時代になるまで。
259デフォルトの名無しさん:05/02/17 11:10:12
VB6.0です

FTPサーバー上にある実行ファイルの更新日付を見て、
ローカルにあるものよりも新しかったらダウンロードして
上書きをするというものを組んでるんですが、
この場合、一旦日付を見ずに無条件に落としてきて
ローカル上でFileDateTime関数で上書きするか否かを判断するしか無いでしょうか?
FTPサーバー上のファイルの更新日付を見る方法はありますでしょうか?
よろしくお願いいたします。
260デフォルトの名無しさん:05/02/17 11:52:39
VB6.0です。この先2、3年現役です
ところでWindowsXP Pro + SQLServer2000 + VB6.0の構成でサーバ兼クライアントとして
動かした人います? WindowsServerの短期代替として動くか気になるところなんですか・・・
261デフォルトの名無しさん:05/02/17 13:59:52
>>260
知らんけど、同時接続数次第では?
262デフォルトの名無しさん:05/02/17 14:08:12
>>259
FTPに何を使ってるかによるけど。

FTPの制御データの流れは単なるキャラクタのやり取りだからね。
lsなりdirなりリスト表示コマンドを投げて、その戻り値を文字列解析して該当部分を切り出せばいけるでしょ?

(.netだとフリーのFTPライブラリとかがあって、そのソースを見ると勉強できるよ。)
263259:05/02/17 14:41:00
>>262
レスどうもです
InetでFTPやってるんですが、InetのFTPコマンドでは日付取得するコマンドが
存在しないらしく、ちょっと参ってました。
とりあえずdirの返り値を見てみようと思います
参考になりました!
264デフォルトの名無しさん:05/02/17 14:58:01
>>263
手でFTPやってみれば判るけど、相手側FTPサーバによって戻り文字列のフォーマット違うから注意してね。
265259:05/02/17 16:34:27
>>264
だめっす。。。。
手でFTPのdir打つと「更新日付/サイズ/ファイル名」が返ってくるんだけど、
Inetだとファイル名の一覧しか帰ってこない。。。。。。鬱

なんかいい方法無いっすかね?orz
266デフォルトの名無しさん:05/02/17 16:49:06
>>265

1.ぐれーぷしちーあたりで買う。

2.作る
ttp://x68000.q-e-d.net/~68user/net/ftp-1.html
ttp://members.jcom.home.ne.jp/1213687801/cs/menugeneral.html

下のリンク、.netだけどDirを送って結果を受けるまでなら簡単に移植できると思うよ。
コマンド部分はソケットで自作、実際のFTPはInetコントロールでも何でも。
(Inet使ったことないんで、実はそれで出来るっていう人いたら突っ込んでください。)
267デフォルトの名無しさん:05/02/17 16:57:16
あともういっこ手段があった。

3.バッチファイルでFTPコマンドを実行して、ls結果をファイルにリダイレクトさせる。
VB
Shell "Command.com バッチファイル"

バッチファイル
FTP < コマンドファイル >outdata.txt

コマンドプロンプトで手でやってみれば判りますが・・・。
” <コマンドファイル”には手で実行するFTPコマンドを記述
">out・・・"は結果の標準出力をファイルにリダイレクト。

コマンドファイル内は多分
USER xxx
PASS xxxx
Connect
LS
BYE
かな?

で、その出力されたファイルを解析。
268デフォルトの名無しさん:05/02/17 17:00:45
パイプでやれば良いのに
269デフォルトの名無しさん:05/02/17 17:03:22
>>268
VBのShell起動した先から標準出力ってパイプで取れたっけ?
コンソールを作って標準入出力ってのはやったことあるんだけど。
270259:05/02/17 17:21:29
わざわざ色々と模索してもらってほんと申しわけ無い。。。
ありがとうございますorz

バッチファイルでいくのが一番手っ取り早そうなんで、
ちとやってみます。
ほんとありがとう!
271デフォルトの名無しさん:05/02/17 18:53:47
お尋ねします。
V.BのACTIVEX.EXEからV.C作成のノーマルDLLを呼び出す事が
できません。
色々と調べたのですが、ヒントが何処にも乗っていなく。

DLLがACTIVEXDLLなら当然呼び出せるのですが、
素材としてノーマルDLLがファイルとして存在する
だけなもので、DLLをACTIVEX化する事も出来ません。

どなたか、V.BのACTIVEX.EXEからノーマルDLLを
呼び出せる方法をご存知無いでしょうか?
OS:WindowsXP
V.B6.0
を使用しています。
よろしくお願いします。
272デフォルトの名無しさん:05/02/17 19:07:17
>>271
普通のEXEからはそのDLLの呼び出し成功するの?
273デフォルトの名無しさん:05/02/17 19:10:35
>>272
通常のEXEからは動作実績のあるDLLです。
ですから、今回流用使用しようとしたのですが、
ACTIVEX.EXEからはDLLが認識できないようなのです。
何かいい知恵はありますか?
274デフォルトの名無しさん:05/02/17 20:58:17
>>271
パスが通ってないとかじゃないよな?
DLLをc:\Windowsとかに突っ込んでもダメ?
275デフォルトの名無しさん:05/02/18 00:31:33
普通に書き方間違ってるだけだろ。
276すみません。教えてください。:05/02/18 09:41:22
VB6.0からEXCEL2002のファイルに貼ってあるコントロール(チェックボックス)を制御したいのですが、
エラーが出てうまくいきません。。

↓---------------------------------------------
Dim objXls As Object
Set objXls = CreateObject("Excel.Application")
With objXls
.Workbooks.Open (xlsPath), ReadOnly:=True

'<このobjXlsのシートは「sheet1」のみです。>
'<「sheet1」には「CheckBox1」が設置してあります。>
  '=(この部分でエラー)==============================
  .Sheet1.CheckBox1.Value = True
.CheckBox1.Value = True
'↑(2個のどちらを使ってもエラーが出ます。)========
End With
---------------------------------------------
エラー内容
「オブジェクトは、このプロパティをまたはメソッドをサポートしていません。」
とでます。

何かご存知の方教えていただけますでしょうか??
宜しくお願いします。
277デフォルトの名無しさん:05/02/18 11:20:40
階層がおかしくない?

Excel -> Book -> Sheet だよね。BookとSheetが同レベルになっていないか?
278デフォルトの名無しさん:05/02/19 01:51:59
TEMP = Shell("move c:\temp\000*.bmp c:\Program Files\Barcode\", 1)

だとProgram Filesのスペースのせいかうまくいきません。
”でくくっている文字列の中でどのようの表現したらよいのでしょうか?
279デフォルトの名無しさん:05/02/19 02:18:11
2つのプログラムの間で命令のやり取りを行うとしたら
DDEとPROPどちらがおすすめでしょうか?
ソケットを使うって手もありますが、一番早いのはPROPですかね。
DDEはCancelを返さないとエラーが起こるので頻繁にやり取りを
行うプログラムには向いていないように思えるのです。
280デフォルトの名無しさん:05/02/19 08:37:46
現在パソコンが4台ネットーワーク接続されており
サーバー管理はしていません。
1台のパソコンで残り3台のパソコンをネットワーク
から切断するソフトをVBで開発したく教えて下さい。
使用目的はWinnyやMX等を仕事中に起動させている
アホな社員を阻止する為です。
281デフォルトの名無しさん:05/02/19 09:08:39
偽ARPパケット出しまくる
282デフォルトの名無しさん:05/02/19 10:05:37
281>
どうすれば良いのですか?
バカなので食わしく方法を
説明してください。
283デフォルトの名無しさん:05/02/19 10:15:35
>使用目的はWinnyやMX等を仕事中に起動させている
>アホな社員を阻止する為です。
ルータの設定を変えろ、アホ。
284デフォルトの名無しさん:05/02/19 10:28:39
283>ルータの設定は勝手にイジラレて
  しまうので無効なんですよ。
285デフォルトの名無しさん:05/02/19 10:33:44
Explorerの詳細表示と同じように,画像の左に複数列の文字列を置け
複数行リスト表示可能なコントロールって無いでしょうか.
286デフォルトの名無しさん:05/02/19 11:07:51
>>284
ルーターにパスワードかけたらどうよ?
287デフォルトの名無しさん:05/02/19 12:32:06
286>僕にはルーターにパスワードの権限が無いのです
288デフォルトの名無しさん:05/02/19 12:35:28
>>287
ルータにパスを設定できる権限を持った人に頼みなさい。
その権限がないものがネットワークの他人の接続を
どうこうしようなんてお門違いです。
289デフォルトの名無しさん:05/02/19 13:02:41
288>
違うのです。僕がネットワークを管理しているのですが・・・
上長がルータのパスワードを教えろとか聞いてきてヤリタイ放題
なのです。
290デフォルトの名無しさん:05/02/19 13:13:19
糞ネタ投稿するな。ニートなのがバレバレなんだよ。
291デフォルトの名無しさん:05/02/19 14:18:11
上長がやってりゃ会社の方針なんだからおまえもやれ。
292デフォルトの名無しさん:05/02/19 15:15:36
>>285
ListView
293デフォルトの名無しさん:05/02/19 15:59:40
>>289
 アンカーちゃんとしろ
294デフォルトの名無しさん:05/02/19 16:08:38
>>279
DDEは.NETから廃止されました
295デフォルトの名無しさん:05/02/19 18:14:00
>>278
スペースを含むようなパスはダブルクォートで括る。
こんなのは Windows の基本。
>>279
サブクラス化してメッセージでやりとりしてもいいんじゃない。
IDEが落ちないモジュールも今なら出回ってるし。
296デフォルトの名無しさん:05/02/20 09:04:04
>>294何故?
297デフォルトの名無しさん:05/02/20 09:45:44
座標上を点が時計回りに移動するとします。

例えば、最初は真下に移動し、障害物があれば左に移動。
以下同様に、左→上→右→下→左→上・・・・・・と移動します。

つまり移動量と方向は(0,1)→(-1,0)→(0、-1)→(1,0)→(0、1)・・・
のように変化します。

なにか上手い方法ってありませんかねえ?
caseを使って切り替えるくらいしか思いつかないんですけど
なんかダサイ気がするもんで。
298デフォルトの名無しさん:05/02/20 10:06:04
普通移動行列使うだろ
299デフォルトの名無しさん:05/02/20 10:23:38
普通三角関数使うだろ
300297:05/02/20 10:33:15
あ、つまり回転行列を使って、つど回転させる訳ですか。なるほど。
301デフォルトの名無しさん:05/02/20 11:35:55
当方まったくの初心者なのですが、これからVBを勉強していこうと思っています。
VBの本で、何かお勧めの本はありませんか?
302デフォルトの名無しさん:05/02/20 11:50:12
>>300
わかってると思うけどそんなくだらないネタに納得しないほうがいいと思うよ。
俺ならその「ベクトル」をマネージするクラスを作るね。
それならエレガントかつ将来の拡張性もある程度確保できる。

しかしネタってのはわかってる奴がやって初めて面白いのに。
何もわかってない>>298-299みたいなVB厨のやるネタは面白くもなんともないな。
303デフォルトの名無しさん:05/02/20 12:58:38
>>302はゆとり教育の申し子
304デフォルトの名無しさん:05/02/20 15:30:20
>>301
こういう質問はよく見かけるけど、
本なんて人によって合う合わないがあるから無意味じゃね?
どんな自称初心者にも最適な本なんてもんがあれば
MicrosoftがVBに付属でつけるやろ。
2chで聞いてる暇あったら大き目の本屋にいって
片っ端からのぞいてみた方がいいと思うよ。

っていうか、こういう「覚え方」を人に聞くのって
なんか頂けないなぁ。オイラの考え方が古いのかなぁ・・
305デフォルトの名無しさん:05/02/20 16:38:57
>>304
本を聞く=覚え方を聞く
だとは思えないなぁ。
あと、100点の本は無いかもしれないけど0〜80点くらいの本はあると思う。
20点の本は殆どの人の役に立たないけど、80点の本は殆どの人の役に立つわけでしょ?
良書を薦めるのは無意味じゃないんじゃないかなぁ。
306デフォルトの名無しさん:05/02/20 17:50:53
本屋で見てこれは良さそうだと思って買って帰って
よく見たら、全く役に立たない。
こんな本全く役に立たないやと思って捨てておいたら、
半年後すばらしい本であることがわかったり。
英語のVBの本を翻訳した本て、いい物が多いよね、
たくさんある中から翻訳するので、その時一度
選別されてる。
307デフォルトの名無しさん:05/02/20 17:53:02
>>296
MSがそう決めたから
308デフォルトの名無しさん:05/02/20 17:53:39
MMO製作企画を立ち上げました。協力できる人はこちら
http://www112.sakura.ne.jp/~kaientai-project/creategame.htm

2chスレ
http://game10.2ch.net/test/read.cgi/mmominor/1108379282/l50

ただ今職人(プログラマ、グラフィッカー)はげしく募集中!
あなたの力を思う存分発揮してください。
309デフォルトの名無しさん:05/02/20 17:54:23
>301
これからやるんなら、VB6じゃ無くて、VB.NETの方がいいのでは、
と思うのですが、この板の趣旨に合わないので激しく反省。
310デフォルトの名無しさん:05/02/20 23:52:55
>>301
マジレスすると
これからやるんなら、VB.netよりもC#の方が100倍いいのでは、
と思うのですが、この版の趣旨に合わないので激しく反省。
311デフォルトの名無しさん:05/02/21 01:45:52
VB6.0です。
足し算・引き算・かけ算・わり算・三角関数(sin・cos・tan)の計算が出来る関数電卓のプログラムを作りたいのですが、足し算意外が分からなくて困ってます。
本を呼んでも具体的な方法が書いてなかったのでどなたかプログラムを教えて頂けませんか?
312デフォルトの名無しさん:05/02/21 01:49:01
>>311
足し算がわかって引き算わからないの?どんなプログラム書いてるんだ
313デフォルトの名無しさん:05/02/21 02:13:36
*これが掛け算だ
314デフォルトの名無しさん:05/02/21 02:17:07
プログラムは
Dim EnterFlag As Boolean
Dim s As Long
Count Pl As Single = 3.141593
*==*==*==*==*==**==*==(0〜9までのキー)
Private Sub key_Click(Index As Integer)
If EnterFlag Then
Text1.Text = ""
EnterFlag = False
End If
If Len(Text1.Text) < 10 Then
Text1.Text = Text1.Text & Index
End If
End Sub
*==*==*==*==*==**==*==(足し算のコマンド)
Private Sub Command1_Click()
s = s + Val(Text1.Text)
Text1.Text = s
EnterFlag = True
End Sub
*==*==*==*==*==**==*==(引き算のコマンド)
Private Sub Command2_Click()
s = s - Val(Text1.Text)
Text1.Text = s
EnterFlag = True
End Sub
*==*==*==*==*==**==*==引き算の場合のみ、数字の前に-が付いてしまいます(例:3-2=-1)
315デフォルトの名無しさん:05/02/21 03:14:16
>>314
で、掛け算はできて割り算ができないと言い出すのか?
316デフォルトの名無しさん:05/02/21 09:04:15
>>311
ヒント:構文解析、再帰法
317デフォルトの名無しさん:05/02/21 11:58:57
何故か円周率がPl
318デフォルトの名無しさん:05/02/21 13:40:42
Countって・・・
まさか手打ち?
319デフォルトの名無しさん:05/02/21 14:48:26
VB5にてネットワークドライブを切らずに…
「\\ホスト名\フォルダ名\」で既存のフォルダを調べる方法はないのですか
320デフォルトの名無しさん:05/02/21 14:51:01
>>319
 ちなみにdirコマンドでやると
「ファイル名または番号が不正です。」エラーになるのです
321デフォルトの名無しさん:05/02/21 14:54:36
>>319-320
 「\\ホスト名\フォルダ名\」はできますね…
 すみません、間違いです。

 上記ではなく…ホストPCの検索です。
 dir(\\ホスト名\)では無理なんですよね…。
322デフォルトの名無しさん:05/02/21 16:03:02
net view \\ホスト名
323デフォルトの名無しさん:05/02/21 16:20:36
>>322
 変数が定義されていません。 だそうですが
324デフォルトの名無しさん:05/02/21 17:24:20
>>307
だめだから廃止したんでしょ?使わないほうがいい?
325デフォルトの名無しさん:05/02/21 19:33:54
>>324
だめだからじゃない
他のOSにDDEが無いから
.NetはMS-Windowsだけで動くものじゃないぞ
326デフォルトの名無しさん:05/02/21 21:45:02
すみません、質問させてください。
OSはXP、ver6.0、SP1です。

現在簡単なプログラムを作ってまして、ある条件値に対応した画像を表示させるもので、
Picturebox.Picture = loadpicture("c:\***.bmp")
というような記述をいくつか並べてるんですが、
「.exeを作成」をして、できたexeファイルを配布した場合、このままでは当然ながら他のパソコンでは表示できません。。
これを他の環境でも表示させるようにしたいのです。

理想はexeファイルに各々の画像データも一緒に取り込まれる形なんですが、そのようなexeファイルの作成の
仕方ってあるのでしょうか。
やはり、それぞれのファイル指定の仕方を("***.bmp")という感じにして、exeファイルと各画像データを
zipでまとめて配布するしかないのでしょうか?

できればプログラム実行中以外には画像ファイルを覗けないようにしたいのですが・・・よろしくお願いします。
327デフォルトの名無しさん:05/02/21 21:48:03
>>326
そのBMPのサイズが大きくなければリソースとしてEXEに埋め込める
328デフォルトの名無しさん:05/02/21 21:52:34
>>326
.exeと同じフォルダに置けば読み込めるけど。
329326:05/02/21 22:01:24
>>327さん
VB初心者なもので、リソースという概念を知りませんでした・・・ご迷惑おかけしました。
330デフォルトの名無しさん:05/02/22 00:18:38
>314
[3]→[-]→[2]→[+]と押された場合
変数sの値は
[3]・・・s=0
[-]・・・s=0-3=-3
[2]・・・s=-3のまま
[+]・・・s=-3+2=-1
になってま。
331326:05/02/22 21:06:52
たびたびすみません。

リソースにBMPファイルを追加することはできたのですが、
それを本体からどのように呼び出したらいいのかがわかりません・・・。

リソースに追加されたある画像ファイルの名称を"abc"とした場合、
どのような記述で呼び出せばいいのでしょうか?

ネット上・本屋で調べてみたのですが、要領を得ません。おねがいします。
332デフォルトの名無しさん:05/02/22 21:33:42
LoadResPicture
333326:05/02/22 21:48:47
>>332さん
ありがとうございます!
すると今回の場合でしたら、
LoadResPicture(abc, vbResBitmap)となり、vbResBitmapは決まり文句となるんですね。
助かりました。ありがとうございました。
334332:05/02/22 22:16:09
>LoadResPicture(abc, vbResBitmap)となり
Yes

>bResBitmapは決まり文句となるんですね
No

VbResBitmap -- 0 ビットマップ リソース
VbResIcon -- 1 アイコン リソース
VbResCursor -- 2 カーソル リソース
335326:05/02/22 22:27:32
>>332さん
ご丁寧にありがとうございます。感謝します。
336デフォルトの名無しさん:05/02/23 15:41:55
厨な質問で申し訳ないです

WindowsXp+VB5を使い画像ファイルの縦と横のサイズを取得したいのですが
GetFileInformationByHandleで取得できる構造体BY_HANDLE_FILE_INFORMATIONの
構成には該当情報が無いようですね。画像の種類はVBが標準でサポートしている
もののみ(BMP;JPG;GIF)で、調べた限り次のやり方でできそうですが

1.Susieプラグイン等を使う
2.Pictureオブジェクトに取り込みサイズを測る

今回は1.は用途からするとパス。2.はImageコントロールを使って高速性を
出したいのでちょっと

ファイルプロパティに項目がありますから取得できると思うのですが
構造体やAPI関数を教えていただけますでしょうか
337デフォルトの名無しさん:05/02/23 18:37:16
>>336
>2.はImageコントロールを使って高速性を出したいのでちょっと

言ってる意味がよく解らないんだけど、もしかして、
サイズ取得とImageコントロール用で2回読み込みとか考えてる?
338デフォルトの名無しさん:05/02/23 19:36:11
>>337
考えてました・・・・実験した結果Visibleプロパティをfalseにして
読んで処理してからtrueにすることでそこそこ動きましたので
これで逝こうと思います
339デフォルトの名無しさん:05/02/23 20:08:03
>>338
visible ?
もしかして、pictureってpictureboxのことかな。
どんなコードを書いているのか知らないけど、普通は次のようなコードを書くと思う。

'image1はImageコントロール
'hogeは読み込みたいファイル
dim a as Picture
set a=loadpicture(hoge)
debug.print a.height,a.width
set image1.picture=a
340デフォルトの名無しさん:05/02/23 21:01:48
StdPictureのWidth/HeightはHiMetricなんじゃなかったっけ。
ScaleX/ScaleYを使えば変換できるでしょう。だから>>339がきっとスマート。
で、質問なんですけど
Dim lngArray1(256& * 256&) As Long, lngArray2(255&, 255&) As Long, i As Long
For i = 0 To 256& * 256&
lngArray1(i) = i
Next i
Call CopyMemory(lngArray2(0, 0), lngArray1(0), 65536)
Dim x As Long, y As Long
For y = 0 To 255
For x = 0 To 255
Debug.Print "(" & x & ", " & y & "):" & lngArray2(x, y)
Next
Next
私の環境ではなぜかx*y=15000あたりからずっとlngArray2(x, y)の値が0になってしまいます
悪いのはCopyMemory(MoveMemory)でしょうか。32bitDibを二次元配列でいじりたいんです。
341340:05/02/23 21:12:01
あ、LONGだから4バイト掛けるのか。マジで樹海いって首吊ってくる。
342デフォルトの名無しさん:05/02/23 21:25:25
>>341
気を付けて行ってらっしゃい。
門限までには帰ってくるんですよ。
343デフォルトの名無しさん:05/02/23 23:07:53
>>336
ヘッダ読むだけで出来る。
JPGの位置は固定じゃないけど。
昔、英語のコードを検索したらすぐ見つかった。
344デフォルトの名無しさん:05/02/24 00:16:33
exeを実行しているPCのオフィスのバージョンって取得できますか?

OSは出来たのですがオフィスの方法が分かりません。


お願いします。
345デフォルトの名無しさん:05/02/24 00:36:14
Application.Version
346デフォルトの名無しさん:05/02/24 00:39:25
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSoftware = objWMIService.ExecQuery _
("Select * from Win32_Product where name like '%Office%'")
For Each objSoftware in colSoftware
msgbox objSoftware.Name & ":" & objSoftware.Version
Next
347デフォルトの名無しさん:05/02/24 00:56:49
>>346
>>345

ありがとうございます

今からやってみます
348デフォルトの名無しさん:05/02/24 01:16:02
うちの環境だと、
("Select * from Win32_Product where name like '%Office%'")
オートメーションエラーで中断されてしまいます。
("Select * from Win32_Product")
なら動くのですが、Office以外も全部出てきてしまいます。・・・
349デフォルトの名無しさん:05/02/24 01:37:16
350デフォルトの名無しさん:05/02/24 03:32:35
>>349
MScalが入ってるとは限らないだろ
351デフォルトの名無しさん:05/02/24 08:53:32
Windows XPで既にcomdlg32.ocx 6.0 sp3が存在している状況で
VB 5.0にてコモンダイアログ5.0を例えばcomdlg32old.ocx等に
変更し登録して使用することができません

5.0と6.0が並んでいて選択は5.0をチェックし「適用」や「OK」
ボタン押しても実際に再度コンポーネント選択画面では
6.0が選ばれている状態で、実際のフォームにダイアログを
貼り付けようとしても「ライセンスが無い」と怒られます

Windowd2000の頃は大丈夫だったような気がしてますがXpで
両者を共存させることってできますか?
352351:05/02/24 09:02:28
353デフォルトの名無しさん:05/02/24 14:49:31
ランダム・ファイルの保存について教えてください。

Open "FILENAME" For Random As #1
n = LOF(1) / LEN(XXX) + 1 →XXXは64バイト固定のデータ
put #1, n, XXX
Close #1

この様なソースを書いて何度も実行すると
データが最後のレコードに書き込まれず、
ファイルが倍のスピードで大きくなってしまいます。

試しに上記ソースの2行目をなくしてnを固定で入れた場合
n=1 ファイルサイズ=64B
n=2 ファイルサイズ=192B
n=3 ファイルサイズ=320B
という感じで64×nバイトにならず64×(n×2−1)
となってしまいます。
VB6.0を使っているのですが、何か書き方が悪いのでしょうか? 
それともこういうもんなのでしょうか?
354デフォルトの名無しさん:05/02/24 15:13:54
書き方が悪い
355353:05/02/24 16:31:34
どこが悪いのでしょう?
356デフォルトの名無しさん:05/02/24 17:05:23
VB6でグリットコントロールはなくなったのでしょうか?
コンポーネントが見つからないのですが・・・
表にデータを表示するのって簡単に出来ないですか?
357デフォルトの名無しさん:05/02/24 17:51:27
>>356
Microsoft DataGrid xxx
or
Microsoft FrxlGrid
358デフォルトの名無しさん:05/02/24 18:09:35
>>325
じゃあなぜ>>279に対して>>294のようなレスをするのかがわからない。
359338:05/02/24 18:21:59
>>339
ありがとうございます。うまくいきました・・・・・・・が

調子に乗って数十枚程度表示するとVB5がCPU100%使ってフリーズします
プログラム未完成なのでコンパイルするとどうなるか試していません
また再帰とかOpenArray等は使用していませんけどヒープを喰っちゃうん
でしょうかね
360デフォルトの名無しさん:05/02/24 18:27:04
VB6使ってるんですが
PDFファイルを表示させる方法おしえてくさい
361デフォルトの名無しさん:05/02/24 18:29:04
PDFを指定してIEコンポーネントを開く
362338:05/02/24 18:37:52
コンパイルしても一緒なのでいくつか変更して実行したら、テストに
使用したJpegファイルが「不正なピクチャ」だそうで・・・・・・・

Windowsビルトインビューアや他のグラフィックソフトでは問題なく
表示しますけどヘッダー情報かなにかがおかしいデータみたいです
363339:05/02/24 19:35:58
>>362
似たような経験あるなあ。

これを回避するには、フリーのライブラリか何かで読み込むようにするしか無いんじゃないかな。
364デフォルトの名無しさん:05/02/24 19:47:25
>>353
openステートメントでレコード長を指定していないからじゃないかな
365338:05/02/24 20:42:10
>>363
結局SUSIEプラグインですね・・・・ありがたく使わせて頂くことにしますた
366デフォルトの名無しさん:05/02/24 20:45:17
MoveFileはMoveFileExを使うのでしょうか?
FileCopy & Killでもまあ良いんですけど無条件に上書きつうのが・・・
MoveFileExについてはVBでの呼び出しを解説したサイトがあまり
無いようですけど他の方法にはどんなのがありますか?
367デフォルトの名無しさん:05/02/24 20:55:11
>>366
エスパーじゃないと君の文章の意味はわからないと思う。
368デフォルトの名無しさん:05/02/24 21:10:24
MoveFileメソッドの実装までは知らんけど、コピーしてリネーム&削除が一般的でわなかろうか。
MoveFileEx自体簡単なAPIだし、それでもいいんじゃね?
369デフォルトの名無しさん:05/02/24 21:26:46
>>367
読解力に欠ける人でも分かるように書き換えてみました
尚、レスをして頂けたら嬉しさと驚きで家人みんなに自慢しそうです

「VBでファイルを移動する場合、VBに用意されているStatementは
FileCopyだけで、コピー後にKillすることで移動が実現できますが
この場合Windowsのシェルでコピーや移動を行う場合とは異なり
無条件で移動先に同名ファイルが存在する場合に上書きしてしまいます。
これを避けたい場合、わたしの拙い技量で調べた限りAPIでMoveFileExを
呼び出す手法があるようですがGoogle等検索エンジンで調べてもVBでも
使用方法があまり見当たりません

宜しければこれについて詳しいサイトを教えて頂くか、こちらに書き込んで
頂けると幸甚に存じます。またそれ以外に役に立つ方法をご存知であれば
ご教示頂けますと幸せのあまり屁をこきそうです」
370デフォルトの名無しさん:05/02/24 21:29:05
>>366
Nameステートメントじゃだめなの?

371デフォルトの名無しさん:05/02/24 22:17:50
function conv_hex( param )
{
var hex="";

for(var i=0; i<param.length; i++){
hex = hex + param.charCodeAt(i).toString(16);
}
return hex;
}

javascriptで文字列から無理矢理16進数に変換した文字列を
vbsで10進数の文字列に戻したいんですがどう記述すればいいでしょうか?
372デフォルトの名無しさん:05/02/24 22:54:29
10進数の文字列と言うのは・・・

"00 12 34 56 78 90 123 234 255"

と言うことだな!

↓あとはよろしく。
373デフォルトの名無しさん:05/02/24 23:12:34
>>366
>>370の通り、NameでOKなはず。

> Name ステートメントはファイル名を変更して、必要に応じて他のフォルダにファイルを移動します。
374デフォルトの名無しさん:05/02/25 00:24:33
>>371
スレ違い。
あとはよろしく↓
375371:05/02/25 01:14:23
どこのスレに書き込めばいいの( ・◇・)?(・◇・ )
376デフォルトの名無しさん:05/02/25 01:20:01
WSH(・∀・)スレッド!
http://pc5.2ch.net/test/read.cgi/tech/1055075469/
377デフォルトの名無しさん:05/02/25 01:23:57
Integerの読み方教えてください
 イントエジャーでいいの?

まさか、インテグラじゃないですよね?
378デフォルトの名無しさん:05/02/25 01:26:08
インテジャー で いいんじゃー
379デフォルトの名無しさん:05/02/25 01:26:51
インテジャー
380377:05/02/25 01:42:12
>>378
>>379
ありがとうございました
381デフォルトの名無しさん:05/02/25 01:54:53
インテジャー入ってる
382デフォルトの名無しさん:05/02/25 01:56:22
インテジャーウソツカナイ
383デフォルトの名無しさん:05/02/25 02:20:11
何インテジャー
384デフォルトの名無しさん:05/02/25 02:53:39
VB6.0で、FORM1のpictureに画像を指定し、
その上に置くラベルやフレームの背景を透過させ、FORM1の画像を透かして表示させる、、、
というようなことは可能でしょうか?
385デフォルトの名無しさん:05/02/25 03:14:04
インテジャージョーンズ 〜最後の聖戦〜
386デフォルトの名無しさん:05/02/25 04:25:58
evb3.0でセーブしたランダムファイルをvb5.0で読み込むにはどうしたら
いいのでしょうか?
単純にvb5でランダムアクセスしても無理みたいなんですけど・・・。
387デフォルトの名無しさん:05/02/25 08:08:51
くだらない質問で申し訳ないですが、テキストボックスから受け取った文字をinteger型変数に代入して出力した場合、アスキーコードで出力されるんでしょうか?
388デフォルトの名無しさん:05/02/25 08:30:42
>>387
自分で試せ
389デフォルトの名無しさん:05/02/25 08:35:25
>>387 = 本当にくだらない質問
390デフォルトの名無しさん:05/02/25 08:46:49
申し訳ありませんでした。自分のPCにVB入っていなくて、すぐ試せなかったもので。次にVB使う時に試してみます。
391デフォルトの名無しさん:05/02/25 09:33:44
VBでもVCでもいいのですが、UNIXサーバからwindowsにファイル転送を行う際に
ファイル更新日付を変えないような方法ってありますか?
CInternetSession系のAPI使うと落し込んだ日付に変わってしまいます。
FTPツール(FFFTP等)でローカルに取り込む再に日付が変わらないオプションが
あるのでなんか方法があるんだと思います。どなたかご存知のかた教えてください。
392デフォルトの名無しさん:05/02/25 09:43:06
>>391
日付を変えないという発想ではなく、
盗難したファイルを元の持ち主の日付で、ていぞう(なぜか・・)すれば?

ファイルのタイムスタンプを書き換えてしまえと。
393デフォルトの名無しさん:05/02/25 09:57:43
>>392
とうなんファイルではありませんよ。ローカルと管理サーバ間でのやりとりを行うツールです
FFFTPの日付を変えないオプションはファイル更新日付をAPI等で改竄している仕様なのでしょうか?
FTPは基本的にファイルを分解して転送後、再編成すると聞くので
更新日付が変わるのは当然だと思うのですが、何か知的な方法はありませんか?
394デフォルトの名無しさん:05/02/25 09:58:23
>>392
とうなんファイルではありません。ローカルと管理サーバ間でのやりとりを行うツールです
FFFTPの日付を変えないオプションはファイル更新日付をAPI等で改竄している仕様なのでしょうか?
FTPは基本的にファイルを分解して転送後、再編成すると聞くので
更新日付が変わるのは当然だと思うのですが、何か知的な方法がありましたら
伝授お願いします。
395デフォルトの名無しさん:05/02/25 11:39:54
盗難、捏造は洒落です。
>>393の通り、FTPではファイルはそのまま移動するんじゃなく
垂れ流しされた奴をこっちでファイル化ですからそのままでは日付は変わります。

APIでSetFileTimeあたりでどうですか?ってのが>>392です。
396デフォルトの名無しさん:05/02/25 11:52:22
VB初心者なのですが、
If文でノットイコール(C言語では「!=」)ってどう書けばいいのでしょう?
397デフォルトの名無しさん:05/02/25 11:54:32
>>396

<>
↑です
398デフォルトの名無しさん:05/02/25 12:18:27
>>395
ありがとうございます。
FileTime等で予め、UNIX側のファイル情報を取得しておいて
FTP後にSetFileTimeってところですね
一度つくってみます。助言感謝いたします。
399デフォルトの名無しさん:05/02/25 13:02:35
>>397
ありがとうございました!
400デフォルトの名無しさん:05/02/25 13:51:01
>>384のようなことはVBではできませんでしょうか?
401デフォルトの名無しさん:05/02/25 14:12:21
コンボボックスを使用したのですが、
実行時、リスト内のデータを選択すると、
コンボボックスのTEXT内が紺色(選択状態?)のままで、
文字が表示されません。
(別の領域をクリックすると選択した文字がTEXTに表示されます)
対処法があれば教えてください。よろしくお願いします。
402デフォルトの名無しさん:05/02/25 14:13:31
コンボボックスを使用したのですが、
実行時、リスト内のデータを選択すると、
コンボボックスのTEXT内が紺色(選択状態?)のままで、
文字が表示されません。
(別の領域をクリックすると選択した文字がTEXTに表示されます)
対処法があれば教えてください。よろしくお願いします。
403デフォルトの名無しさん:05/02/25 14:41:27
>>400
質問の意味を取り違えてるかも知れないけど、
ラベルには透過可能なBackStyleプロパティがある。
フレームにはないけど。
基本的にはPictureBoxとか使って自前のコードで
背景の透過処理をすれば、透過できるはず。
404デフォルトの名無しさん:05/02/25 15:51:22
>>384
ラベルの透過はフォームに対してのみ有効。
他のコントロールに重ねたらダメ。
405おしえて(VB+クリレポ):05/02/25 18:32:54
VBからクリスタルレポートの印字を行っているのですが、
端末によってプリンタがことなるとセットアップのたびに
クリスタルレポートのプリンタ設定をいじらないといけなくて困ってます。
VB側から印字の直前にプリンタ設定を変更できないものでしょうか?
VBからのプリンタ設定&用紙指定方法を教えてください。
(環境:Win2K、VB6.0sp5、Seagate Crystal Reports 6.0)
406COMってるんです:05/02/25 19:14:55
COM+勉強し始めて3日目です。
言ってることがおかしいかも知れませんが
どちらもサーバー、どちらもクライアントな状態にしたいのです。
具体的には
クライアントからは検索するので普通にDBを叩くCOMを作成しサーバーに登録します。
それとは別にサーバー側からも不定期な情報イベントが起き、
クライアントの画面(ポップアップではなくメインの画面に)に情報を表示します。

代替案としては
・スレッド立てて、イベント系には別途TCPソケットを用意してサーバーから叩く
・定期的にイベントがあるかサーバーにCOMで聞きに行く
は考えているんですが、
理想としてはサーバー側からCOMキックされてメイン画面が更新される形にしたいのですが
何らかの実装方法はありますでしょうか。

シングルアパートメントだから無理とかそういうのがあれば、VBにもこだわりませんので
出来る出来ないのポインタをいただけると助かります。
407デフォルトの名無しさん:05/02/25 19:18:21
VB6sp5、XpPro です。
ユーザーコントロールを作成したのですが(TextBoxがベース)
作成したコントロールにフォーカスがある状態でカーソルキー
を押してもForm_keyDownイベントが発生しません。Enterキー、
テンキー他、一部のキーでは発生します。
ちなみにformのkeypreviewプロパティはTrueです。

もしかしてVBのバグでしょうか?解決方法がわかる方いましたら
教えてください。

>>405 クリレではおそらく無理です。

Declare Function SetDefaultPrinter Lib "winspool.drv" _
Alias "SetDefaultPrinterA" _
(ByVal pszPrinter As String) As Long


ドライバ複数作成して、↑を使って通常使うプリンタを変更すればよいのでは?


408おしえて(VB+クリレポ):05/02/25 19:29:59
>>407さん
お返事ありがとう(;o;
やっぱり無理なんでしょうか、_| ̄|○
端末ごとのクリレポ設定作業をどうにかして簡略化したかったんですが。。。
残念!!
409デフォルトの名無しさん:05/02/25 20:22:30
>>403,404
ありがとうございます。ラベルはできてもフレーム類はできないんですね・・・。
Pictureboxによる背景の透過処理、で少し調べてやってみます。ありがとうございました。
410デフォルトの名無しさん:05/02/25 23:13:28
>405
OpenPrinter,SetPrinter,SetPrinterData,SetPrinterDataEx
411デフォルトの名無しさん:05/02/25 23:30:13
>>402
コンボボックスはEXCELのがいいよ!
412デフォルトの名無しさん:05/02/26 03:16:10
VB6.0、XPproの環境です。

DataGridを使ってレコードの内容を表示するプログラムを勉強しています。
ユーザの編集でなく、プログラム側からDataGridに空の行を追加したいのですが、
Column(列)、Split(分割ペイン)のAddは出来てもRow(行)の追加だけが見つかりません。

もしかしたら、自分がColumnsやrowの意味を取り違えているのかもしれないと
不安になってきたので、一度詳しい方に聞いてみようと思いまして。
どなたか、お答え頂けると凄く助かります。

具体的には、レコードを読んでDataGridに表示 →
DataGrid上に新たな行を作成 →
別のレコードを読んで、新たな行に表示。
というような、1つのグリッドに追加表示をしたいと考えているのですが……。
413デフォルトの名無しさん:05/02/26 15:46:42
2桁の正数字の一桁目と二桁目の値を取得する関数ってありますか?
414デフォルトの名無しさん:05/02/26 18:43:43
>>413
10で割れば10の位の値
10で割った余りが1の位の値
415デフォルトの名無しさん:05/02/26 19:38:48
(元の数 mod 100 - 元の数 mod 10) \ 10
416デフォルトの名無しさん:05/02/26 20:19:37
厨な質問ですいません。

配列を関数に渡したい場合は、どのようにするのでしょう?

例えば、
Private Sub Command1_Click()
Dim A(1 To 3) As Integer
A(0) = 1
A(1) = 2
A(2) = 3
Text1.Text = CALC_A(A(0))
End Sub

この場合、関数側には、
function CALC_A(******) as Integer
****** ← この部分には、どのように書くのでしょうか?

それとも別の書き方があるのでしょうか?
417デフォルトの名無しさん:05/02/26 20:35:50
>>416
function CALC_A( a() as integer ) as Integer
418デフォルトの名無しさん:05/02/26 20:49:52
Text1.Text = CALC_A(A(0))
419416:05/02/26 20:50:39
ありがとうございました

CALC_A(A(0)) をCALC_A(A())にしたら受け取れました。
420デフォルトの名無しさん:05/02/26 20:54:35
A(1 To 3)には誰も突っ込まないのか?
421416:05/02/26 23:27:26
>>420
間違いです。
書き込んだ後に気がついたのですが・・(´・ω・‘)
422デフォルトの名無しさん:05/02/27 00:11:58
テキスト型で"0001"という値を持っている変数を+1して、
"0002"には出来ないものでしょうか?
+1ではintに変換されてしまってただの"2"になってしまいます……。
423デフォルトの名無しさん:05/02/27 00:16:07
>>422
学校の宿題は友達に聞きましょう。
友達いないなら諦めて入門書買ってまじめに勉強しましょう。
424デフォルトの名無しさん:05/02/27 00:33:08
そんなに簡単なことなんですね……
考えなしに質問してしまってすいませんでした。
色々調べてみます。
425デフォルトの名無しさん:05/02/27 00:43:38
前から気になっていたんですけど、・・・

WORDなんかでは、文字の拡大・縮小が出来ますけど
あれって、どうやってるんでしょうかねえ・・・
426デフォルトの名無しさん:05/02/27 00:48:01
( ゚д゚)・・・
427デフォルトの名無しさん:05/02/27 01:02:43
(*゚д゚)・・・♥・・・(・∀・*)
428デフォルトの名無しさん:05/02/27 01:13:14
何気に使ってるけど実は誰も理解してない
429デフォルトの名無しさん:05/02/27 03:27:01
理解も糞も無いだろ。
430デフォルトの名無しさん:05/02/27 12:42:18
>>425
pictureboxに文字を出力してピクセル単位にpoint関数でドットの有無を読んで
拡大率を掛けてpsetしているんよ、知らなかったの?
431デフォルトの名無しさん:05/02/27 14:20:38
ググって同じ質問を見つけましたが回答が無かったので教えてください

vbHimetricをpixelに変換したいのですが対象がScaleX,ScaleYメソッドが使えない
オブジェクトです。(Picture Object変数です)
何か方法はありますか?
432431:05/02/27 16:06:58
考えてみれば定数みたいなものだからFormのScaleX,Yで変換しても同じことでしたね
お目汚し失礼しました
433デフォルトの名無しさん:05/02/27 16:38:33
『何でFormやPictureBoxにはあるScaleXがPictureにはないんだ。だからVBは…』
こう思ったらVB厨房の仲間入りだよ。
そりゃ単に座標変換の意味がわかってないだけ。

ていうか、そもそも印刷関係のアプリ作ってるのでもなければ
あえてvbHimetricみたいな物理量の座標系を選ぶ理由は何もないはずだけど。
434デフォルトの名無しさん:05/02/27 16:41:27
VB使ってる奴はみんな厨房だからどうでもいい
435デフォルトの名無しさん:05/02/27 16:54:33
厨房だけぢゃなく熟年文科系一筋日曜プログラマーも混ぜてくださいね
436デフォルトの名無しさん:05/02/27 17:28:00
http://www.media-soft.co.jp/goodluck/siwake/d_load.html
こんな感じのソフトを作りたいのですがプログラムのプの字も
しらない素人じゃ何年ほどの勉強が必要でしょうか?
独学で学ぶつもりなのですが。
437デフォルトの名無しさん:05/02/27 17:55:54
>>436
VBなら数週間でできると思うよ
VBは難易度低すぎるから君もやればできるよ
Option Explicitなんか切っちゃってがんがん書いてね
438デフォルトの名無しさん:05/02/27 18:00:50
>>436
毎日2時間で数ヶ月ってとこじゃないかな?
(モデル年齢35歳、文系の場合)
439デフォルトの名無しさん:05/02/27 18:18:21
>>437-436
ありがとうございます。 とりあえず半年をめどに学習に励んで見ます。
440デフォルトの名無しさん:05/02/27 18:37:42
任意のホームページの文字列をVBから取得するにはどんな手段がありますか?

ああ、無知すぎて何から探していいのかすらわからん。orz
どなたかヒントだけでもお恵みください。

A:任意のHP更新察知

B:希望範囲の文字列抜き出し

C:ケータイにメールとして転送

BとCはなんとかなったけど、本末転倒もいいところなカンジっす。
441デフォルトの名無しさん:05/02/27 19:33:05
VB厨的には、
WebBrowserコントロールを使って WebBrowser1.Document.body.innerText かな?
442デフォルトの名無しさん:05/02/27 20:02:47
FileOperationを使えばファイルを簡単にゴミ箱に移動できますが
移動したファイルを元に戻すのはどうしたら良いでしょうか?
443デフォルトの名無しさん:05/02/27 20:24:43
一応移動ログを取ってますのでVB上で移動元パス/ファイル名はわかっています
他のフォルダーに移動させたファイルは初めからUndoできるようにしています。
ゴミ箱への移動だけを手動操作にしても良いのですけど折角だからこれも元に
戻せるようにデザインしたいのですが…
444デフォルトの名無しさん:05/02/27 20:38:44
一つのEXEにフォームが幾つかあって、そのフォームが
表示されれているかどうか、確かめるため、
If Form2.Visible = True Then
とすると、LoadされていないFormまでLoadされてしまいます
LoadしていないフォームはLoadしないでVisibleを
確かめる良い方法はありませんか。
445デフォルトの名無しさん:05/02/27 21:04:56
>>441
サンクス助かった。
よし、朝日が昇るまでに完成さしてみる罠
446445:05/02/27 21:38:46
441を参考にしてこんなソースもゲトしてみた
短いのでカキコしてみる

Sub PrintHttpDocSimply()
Dim oHttp As Object
Set oHttp = CreateObject("MSXML2.XMLHTTP")
oHttp.Open "GET", "http://www.asia.microsoft.com/japan/", False
oHttp.Send
Debug.Print oHttp.responseText
End Sub

サンプルM$のサイトだけど堪忍な〜w
参考元
http://www.f3.dion.ne.jp/~element/msaccess/AcTipsVbaXMLHTTP.html
447デフォルトの名無しさん:05/02/27 21:56:04
ニートっていいね。
448デフォルトの名無しさん:05/02/27 22:00:18
プ 僕厨房ですよおじさん
449デフォルトの名無しさん:05/02/27 22:02:52
>>444

For Each mForm In Forms
If TypeOf mForm Is (フォームのオブジェクト名) Then
(何らかの処理)
End If
Next mForm
450デフォルトの名無しさん:05/02/28 00:35:21
VB6.0+SP6+WinXP(Pro)

現在EnterPriseArchitect(以下EA)のアドインをVBで作成しています。
EAのプロジェクトブラウザに表示されたパッケージをクリックして
そのパッケージ情報を取得したいのですが、何かよい方法はありますでしょうか?

関連するサイト等が見つからないので苦労しています。
何かご存知の方いらっしゃいましたらご教授お願いします。
451デフォルトの名無しさん:05/02/28 00:55:57
簡単なHTTP通信って何故かUserControlのメソッドで実装されてたような
452デフォルトの名無しさん:05/02/28 01:15:33
もうVBで仕事したくないのに
VBの仕事がきます。
どうすればよいですか?
453デフォルトの名無しさん:05/02/28 01:18:47
仕事があるだけマシってもんよ
そうだろう?兄弟
454デフォルトの名無しさん:05/02/28 01:26:38
もういやだ!
もういやだ!
もういやだ!
455デフォルトの名無しさん:05/02/28 06:42:19
>>452
男ならVCで勝負だ
456444 :05/02/28 07:38:49
>>449
なるほどそんな手が有るんですね。
仕方なくフラグでやっていたのですが、コードがすっきりしました。
有難うございました。
457デフォルトの名無しさん:05/02/28 07:41:22
>>452
殆どCのDLLで書いてVBから呼び出せ。
そうすりゃ立派なVBのプログラムだろ?兄弟
458デフォルトの名無しさん:05/02/28 09:11:05
ヘッダーに問題があるJpegなどをLoadPictureで読もうとするとVBで
作ったアプリがCPUを100%使用しフリーズすることがあります。

通常これを避けるためにSUSIE PLUG-INを使用する方法が一般的ですが
そのような破損ファイルでもWindows Xp標準ビューアで使用されている
shimgvw.dllなら問題なく表示できる場合がありますし拡張子が間違って
いても大丈夫ですよね。

VBでの活用法はありますか? MSのKB等で参考になるのとかご存知なら
教えてくだされ
459デフォルトの名無しさん:05/02/28 09:18:18
すみません。もう一回投下します。。
コンボボックスを使用したのですが、
実行時、リスト内のデータを選択すると、
コンボボックスのTEXT内が紺色(選択状態?)のままで、
文字が表示されません。
(別の領域をクリックすると選択した文字がTEXTに表示されます)
対処法があれば教えてください。よろしくお願いします。
460458:05/02/28 09:50:21
GDI+使います
461デフォルトの名無しさん:05/02/28 11:53:11
>>459
選択したイベントで、INDEXをTEXTに貼れば!?
462デフォルトの名無しさん:05/02/28 12:40:20
すみません。まだ解決できていないのでもう一度質問します。

VB6sp5、XpPro です。
ユーザーコントロールを作成したのですが(TextBoxがベース)
作成したコントロールにフォーカスがある状態でカーソルキー
を押してもForm_keyDownイベントが発生しません。Enterキー、
テンキー他、一部のキーでは発生します。
ちなみにformのkeypreviewプロパティはTrueです。

ユーザーコントロール作成したことある方いませんでしょうか?
対処法あればお願いします。

463デフォルトの名無しさん:05/02/28 15:36:45
>>462
ユーザーコントロールってなに?
464VB6.0です。:05/02/28 16:07:32
質問があるのですが、text1.textに入力するある文字列「あああ」と「ああい」があって
if文を使用しもし文字列に「い」が含まれていたらという判定をしたいんですが
どうすればいいのでしょうか?



465デフォルトの名無しさん:05/02/28 16:09:42
グリッド(MSFlexGrid)で
特定のセルのみ文字の太さや色は変えられませんか?
また、MSFlexGrid.FixedAlignment(X) = 2
で一番上の行の文字が中央表示しませんがどうすれば良いのでしょう?
教えてください。
466462:05/02/28 16:47:32
>>463 すみません。ActiveXコントロールのことです。
自分が作成しているのはTextBoxに機能を付け加えたものです。
自分以外の方が作成された同じようなコントロールが配布されて
いましたので使ってみたのですが、やはり同じ現象でした。


ActiveXに追加した機能自体には問題ないのですが、本来TextBox上
にフォーカスがある状態でなんらかのキーを押すとフォーム側のKeyDown
などのイベントが発生するのですが↑↓←→キーを押したときにイベント
が発生しないという状態です。

>>464 InStr関数を使うとよいですよ。
467デフォルトの名無しさん:05/02/28 17:23:46
>>463
ユーザー自作のコントロール
詳しくはヘルプ参照

>>466
ユーザーコントロール以外にもTreeViewやListViewでも同じ症状が出ますね。
ユーザーコントロールのUserControl_KeyDownは来るみたいだから、
こっちで処理してはどうでしょうか。

もしくはサブクラス化するか。
468VB6.0です。:05/02/28 17:30:35
>>466
ありがとうございました
469デフォルトの名無しさん:05/02/28 19:21:11
>>464
inster関数を投入汁
470デフォルトの名無しさん:05/02/28 20:07:55
>>469
instr
471デフォルトの名無しさん:05/02/28 21:07:56
もういやだ!
もういやだ!
もういやだ!
472デフォルトの名無しさん:05/02/28 22:56:50
>>469-470
というかすでに>>466が答えてる。
473デフォルトの名無しさん:05/02/28 23:20:50
フォーム上に、何種類かのコントロールを置く場合、
一括して管理するには、どうすれば良いですか?

コンテナでしょうか?
474デフォルトの名無しさん:05/03/01 00:54:35
>>473
ユーザーコントロール化かな。
管理というのがデザインの話なら、pictureboxに配置。
475デフォルトの名無しさん:05/03/01 01:17:24
ピクチャーボックスはフォーカス取っちゃうから、特に必要なくても
ユーザーコントロールがええと思う。
476デフォルトの名無しさん:05/03/01 04:55:34
Frameでええんちゃう?
477デフォルトの名無しさん:05/03/01 08:23:16
「一括して管理するには」これで話が「通じる」と思ってる奴も
「通じた」と思って答える奴もオジサンにはエスパーにしか思えない。。。

いや、エスパーってのは嫌味だから真に受けないように。
478デフォルトの名無しさん:05/03/01 08:40:02
>>477 は文盲
479デフォルトの名無しさん:05/03/01 09:45:40
>>465
> 特定のセルのみ文字の太さや色
RowとColでセルを指定してから、CellForeColorやCellFontBoldで設定可。

> FixedAlignment
ColAlignmentFixed?
480デフォルトの名無しさん:05/03/01 13:10:05
ファイルが存在するかチェックする関数はないでしょうか?
481デフォルトの名無しさん:05/03/01 13:13:19
>>480
Dir関数じゃ不満?
482465:05/03/01 13:26:23
>>479
ありがとうございます。
フォントの問題は解決しました。

あとはセルの文字列を中央表示にしたいのですが、
ColAlignmentFixedAlignmentやCellAlignmentを「2」にしても
中央に表示されません。
ColAlignmentFixedだとコンパイルエラーになってしまいます。
483デフォルトの名無しさん:05/03/01 13:35:37
>>482
CellAlignmentは「2」じゃなくて3か4か5じゃない?
484デフォルトの名無しさん:05/03/01 15:10:30
>>480
filesystemobjectのFileExists。
>>481の言うdir関数でもいいと思うけどね。
485デフォルトの名無しさん:05/03/01 15:46:06
FileSystemObjectを使って下のような処理をしています。
拡張子が TXT 以外のものが多数あり、時間がかかっています。
特定の拡張子のFilesコレクションを取得する方法はありますか?

Dim fso As New FileSystemObject, fl As File
For Each fl In fso.GetFolder(ネットワーク上の共有フォルダ).Files
If UCase$(fl.Name) Like "*.TXT" Then
'処理
End If
Next fl
486デフォルトの名無しさん:05/03/01 15:53:18
Now関数で西暦だけを取り出したいんですけどどうしたらいいですか?
Nowじゃなく西暦だけを取得できる関数ってありますか?
487486:05/03/01 15:56:48
ヘルプみたらすぐでてきたね・・・。すまそ。
488デフォルトの名無しさん:05/03/01 16:01:04
>>485
FileSystemObjectは見通しの良いコードが書ける反面、スピードは遅いので気をつける。
Likeを使った比較も、If UCase$(Right$(fl.Name,4))=".TXT" Thenという風にすればマシにはなるかも。
>>486
Year(Date)とかYear(Now)。ヘルプ参照。
489デフォルトの名無しさん:05/03/01 16:07:19
>>485
Dir("フォルダのパス\*.txt")でループじゃ駄目なん?
490デフォルトの名無しさん:05/03/01 16:29:17
>>485
それ、ネットワーク共有自体がネックになってない?
491デフォルトの名無しさん:05/03/01 16:40:33
>>488 489 490
ありがと。
やっぱりFileSystemObjectじゃできないんですね。
現在は Dir でやってます。
折角、ファイル系処理はFileSystemObjectで統一したのに・・・
492486:05/03/01 18:31:10
>>488
ありがとう。

日付比較について一つ質問なんですけど例えば、変数Aに今日の日付けを格納しておきテキスト等に入力した日付けを変数Bに格納し
入力した日付けが変数Aより前の場合(今日なら1/1〜2/28)というような比較をしたいのですが
どうすればいいでしょうか?
493デフォルトの名無しさん:05/03/01 18:33:44
>入力した日付けが変数Aより前の場合(今日なら1/1〜2/28)というような比較

何度読んでも何がしたいのか分からん
494デフォルトの名無しさん:05/03/01 18:35:01
12/31も変数Aよりは前だな
495デフォルトの名無しさん:05/03/01 18:40:06
>>492
cdateで日付型にすれば、 比較演算子(<,>,=) で比較できます。
496デフォルトの名無しさん:05/03/02 00:52:58
VB6.0です。
画面遷移について教えてください。
以下のような遷移を行うとき

フォームA → フォームB

フォームA側で以下のように記述するだけでよいのでしょうか?

Me.hide
フォームB.show

他に何か考慮する点はあるでしょうか?
フォームAは姿を隠しただけで、リソースを食っている状態ではないでしょうか?
素人の質問で申し訳ありません。
ご存知の方がおられましたらご教授ください。
よろしくお願いします。
497デフォルトの名無しさん:05/03/02 06:55:38
>>496
フォームB.show
Unload Me
498デフォルトの名無しさん:05/03/02 12:33:17
>>496
Form_UnLoadで
set フォームA = Nothing
したら?
499デフォルトの名無しさん:05/03/02 13:46:57
>>498
hideじゃunloadイベントは発生しないよ。
それに、それだと new フォームA したときにハマルよ。
500デフォルトの名無しさん:05/03/02 15:54:32
500
501デフォルトの名無しさん:05/03/02 18:52:56
>>496
あとで、フォームAが必要なかったら、Unload。
必要だったら、Hideだと思われ。
502デフォルトの名無しさん:05/03/02 19:59:14
Ruby!!!!!!!!1111
503デフォルトの名無しさん:05/03/02 21:22:43
Now関数で取り出した月日(yyyy/mm/dd)を変数iに格納し、コマンドボタンを押すと
iに格納されてる西暦の部分(yyyy)を「2006」に変えたいんですがどのようにしたらできますか?
504デフォルトの名無しさん:05/03/02 21:23:34
書き忘れです。mm/ddはそのままでyyyyだけ変更したいんです。
505デフォルトの名無しさん:05/03/02 22:23:44
>> 503
年を+1したいなら
i = DateAdd("yyyy", 1, i)

固定で2006にしたいなら
i = DateSerial(2006, Month(i), Day(i))

でどうだ。
変数iはDate型で、時刻部はしらんぞ。
506デフォルトの名無しさん:05/03/02 22:32:51
>>503 DateAddを使うかYearを使うとか文字列ならMidとか数値なら2万を
足すとか・・・。
やり方は色々あるけどヘルプで探すことで成長するから面倒くさくても
一度は調べなさい。
関数やAPIに頼らず自力でやることで後々役に立つこともあるからね。
たとえばRaund関数は0.5を正しく四捨五入してくれないとかもあるから
自力でやるのも一つの手だよ。(もうなおってるかな?)

507503:05/03/02 22:54:49
>>505
>>506
ありがとうございます。おかげさまでなんとかなりました。
これからは極力MSNDやVB関係のサイト等を見てなんとかします。
508469:05/03/03 00:57:12
多くのレスありがとうございました。
非常に参考になりました。
509デフォルトの名無しさん:05/03/03 17:39:51
『'』を複数行に同時に設定するショートカットキー
を教えてください。
よろしくおねがいいたします。
510デフォルトの名無しさん:05/03/03 18:16:15
>>509
標準では設定されてなかったように記憶しています。
511デフォルトの名無しさん:05/03/03 20:05:26
long NullElementDelete(POINT *p1, POINT *p2, int num)
{
int i;
int count=0,count2=0,size=0;
POINT *buff;

size = 2 * HORIZONTAL + 2 * VERTICAL;
→buff = calloc(num,sizeof(POINT));

矢印のところで
error C2440: '=' : 'void *' から 'POINT *' に変換することはできません。(新しい動作 ; ヘルプを参照)
'void*' から非 'void' 型への変換には明示的なキャストが必要です。
というエラーが出てしまいます

どうやらC++だとエラーが出るようなのですが
どのようにすればエラーをなくせるかが分かりません。

よろしくお願いします。
512デフォルトの名無しさん:05/03/03 20:42:20
おながいします。

Ary(10,10)
上記の様な二次元配列があったときに、一次元目がnの一次元配列( Ary(n,*) )
を取り出すにはどうすれば良いかご指南いただきたい。
513デフォルトの名無しさん:05/03/03 21:06:51
フォーム上で、Ctrl+H(隠しコマンド)が押されたら、フォームを表示したいのですが、
メニューバーのメニューを表示しないようにしてもうまくいきません。。。
よろしくお願いします。 m(_ _)m
514デフォルトの名無しさん:05/03/03 21:28:56
Ctrl+Hは置換に割り当てられてますが。
515デフォルトの名無しさん:05/03/03 21:49:59
>>513
こういうこと?
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 72 And Shift = 2 Then Form2.Show
End Sub
516513:05/03/03 21:54:17
>>515
できました!
ありがとうございました。 m(_ _)m
517デフォルトの名無しさん:05/03/03 22:04:59
>>513
ちなみに 2はVbCtrlMask、72はvbKeyH と書くとわかりやすい
518513:05/03/03 22:45:31
>>517
本当にありがとうございます。 m(_ _)m
519デフォルトの名無しさん:05/03/03 22:58:25
おねがいしまつ。例えば、
Public Const Err001 = "接続エラー"

としていて、ある関数から
"Err001"という値を受け取ったとします。
この"Err001"を、上で定義したErr001の持つ"接続エラー"として、例えばMsgBoxなどで
表す方法ってありますか?
つまり文字列を変数名として扱う方法ってことになるんでしょうが…
520デフォルトの名無しさん:05/03/03 23:00:12
Ruby
!!!!!!!!!!!!!!!11111111111
521デフォルトの名無しさん:05/03/03 23:04:39
>>519
やめてくれ
522デフォルトの名無しさん:05/03/04 00:00:47
ユーザーコントロールに渡すプロパティには構造体や配列は渡せないんですか??????
523デフォルトの名無しさん:05/03/04 07:25:53
>>522
構造体は不可、配列は可。構造体の配列は不可。
構造体の代わりにClassを使うのが吉。
COMの基本ルールを無視するなら、構造体をValPtrでアドレス渡しって手はあるな。
524デフォルトの名無しさん:05/03/04 10:47:21
VB6.0でWebBrowserコントロールを使ってるんですけど、
コマンドボタンのClickイベントからUnload Meすると、
かなりの確率でフリーズするんです(システムメニュー
から閉じればたぶんOK)。
なんかいい解決方法ないですか?
525デフォルトの名無しさん:05/03/04 14:09:33
VB5でメニューの高さをスマートに知るにはどうしたら良いのでしょうか?

現在はメニューの各Visible プロパティがTrueとFalseで生じるFormの
ScaleHeightの差を取ってますけどいかにもスマートさに欠けるので…
526522:05/03/04 16:39:53
ありがとうございます
527デフォルトの名無しさん:05/03/04 17:11:24
VB で ビットマスク処理はあるんですか?
528525:05/03/04 17:24:53
念のために書きますが「スマート」じゃない現在の方法だと
実際のフォームの高さが変更されるまで若干のタイムラグがあり
変更直後はまだScaleHeightが変わってない場合があって、それを
避けようとするとますますスマートじゃないコーディングに
なっちゃうんですよ
529デフォルトの名無しさん:05/03/04 17:41:25
>>527
ありますよ?
530デフォルトの名無しさん:05/03/04 18:14:08
>>528
DoEvents してる?
531デフォルトの名無しさん:05/03/04 18:57:33
>>511
'void*' から非 'void' 型への変換には明示的なキャストが必要です。
532デフォルトの名無しさん:05/03/04 19:37:45
>>529
演算子おしえてください。
533デフォルトの名無しさん:05/03/04 19:44:43
>>532
謹んでお断りいたします。
534デフォルトの名無しさん:05/03/04 20:11:54
>>533
ド素人はすっこんでな!
535デフォルトの名無しさん:05/03/05 08:40:56
猛烈に厨な質問ですが…

DeclareステートメントのLibrary Nameは文字定数しか受け付けないわけですが
DLLをパスの通ってないディレクトリに置いてプログラム中で場所を指定したい
場合はどうすれば良いですか? 無理っすかね
536デフォルトの名無しさん:05/03/05 11:51:13
>>535
ChDir使ってみるとか
537デフォルトの名無しさん:05/03/05 11:57:46
>>536
ド素人はすっこんでな!
538デフォルトの名無しさん:05/03/05 12:16:47
>>535
プログラム中でパスを変更する。

>>537
ChDirでもいいと思うが?
539デフォルトの名無しさん:05/03/05 14:12:26
おながいします…。

要素が宣言されていない動的配列の、要素の有り無しを判断するには
どのようにすれば良いでしょうか。

String型のStrAry()が動的配列で尚且つ要素が宣言されてないと

UBound(StrAry) ->インデックスが有効範囲にありません エラー
↑エラー発生しちゃってトラップされちゃうと困る

TypeName(StrAry) -> String()
↑Nothingになるかと思ったんだけども
要素が有っても無くても String() だから判断できない。

頼む…。家に帰れないんです。
540デフォルトの名無しさん:05/03/05 14:26:19
>>539
お馬鹿な発想かもしれないけどGlobal変数使ったら?

ReDim Preserve xx(x)
Empty=True
if x<>0 then Empty=False
541デフォルトの名無しさん:05/03/05 14:36:45
>539

1)エラーが発生することを利用して戻り値を設定する関数を作る

2)配列(0)はとにかくダミーとして常に何か突っ込んでおく(あり得ない文字列とか)
542539:05/03/05 14:37:37
>>540
動的配列の要素数と、「要素の有無」フラグをグローバルで持つって事ですか?
543デフォルトの名無しさん:05/03/05 14:44:41
>>542
そうね、ReDimで再宣言してなけりゃ要素は0のはずだしそうじゃなけりゃ
UBoundでわかるっしょ
544デフォルトの名無しさん:05/03/05 14:46:19
つうか再宣言の値そのものを保持しとくほうが簡単確実だな
545539:05/03/05 15:09:08
レス遅くなりました。
>>540>>541でご指南頂いた方法をそれぞれ試していました。
結果両方ともうまく動きました。
どちらの方法を使うかは、またこれからそれぞれの方法のメリット・デメリットを考えながら
決めていきます。
本当に有難う御座いました。
(必要ないと思いますが下記に>>541の 1)の関数を載せておきます)
Private Function chkArrayLen(sAry() As String) As Boolean
On Error GoTo Err_Process
Dim Tmp As Integer

chkArrayLen = False
Tmp = UBound(sAry)
chkArrayLen = True

Err_Process:
End Function
546デフォルトの名無しさん:05/03/05 15:18:28
なんかVB5だとUBoundが-1返すような覚えがあるんだけど記憶違いかな。
それはいいとして、俺ならクラスにするか、さもなくば次のように判定するかな。

Dim SizeOfArray As Integer

On Error Resume Next
SizeOfArray = UBound(MyStrArray) + 1
On Error GoTo 0
547デフォルトの名無しさん:05/03/05 15:36:59
>>545
SafeArrayGetDim などのAPIを使えば、
実行時エラーを使わなくてもチェックできる。
548デフォルトの名無しさん:05/03/05 15:41:13
>>546
ReDim MyStrArray(-2 To -1)

とかやっていじめてやるテストw
549デフォルトの名無しさん:05/03/05 15:59:06
んんじゃあこう汁
SizeOfArray = UBound(MyStrArray) - LBound(MyStrArray) + 1
550デフォルトの名無しさん:05/03/05 16:45:04
先日からVB5で画像を扱うプログラムを作っていて個人使用という目的からすると
一段落したんですが汎用性を持たせようとすると頭が痛くなってきてます

問題は"LoafPicture"が破損ヘッダーファイルがあると使い物にならないことで
アプリが落ちちゃう、そこでSUSIE PLUG-INを使って問題なく動くものが
できました、できましたが例えばPNG用プラグインでエラーメッセージを吐く
版と軽量版なんてのを見ていると特定のプラグインの特定のバージョンじゃないと
意図通りに動かないプログラムなんてど〜考えても嫌だし…

GDI+をVB5で使うのはかなり無謀みたいで日曜プログラマーがこの目的でVB.NETを
買うのもちょっともったいないつうか嫁に殺されそうだし

何か他にうまい手はありますか?
551デフォルトの名無しさん:05/03/05 16:53:09
>>550
C#つかえ。
552デフォルトの名無しさん:05/03/05 16:55:49
>>551
文科系の頭でポインターが使えないんですよ
553デフォルトの名無しさん:05/03/05 16:56:14
>>550
VB.NETのコンパイラ自体はタダで手に入るよ。
それにフリーの統合開発環境を組み合わせる。

ところで今はVB.NETに対応した統合開発環境って
どれくらいのレベルで使えるの?GUIの作成も含めて。
すれ違いだけど。
554デフォルトの名無しさん:05/03/05 16:57:05
>>552
安心しろ。C#はポインタを使わないでできる。
っていうかVBの参照もポインタの一種だ。恐れることは無い。
555デフォルトの名無しさん:05/03/05 17:21:51
>>550
PNG対応DLLあるけど。
556デフォルトの名無しさん:05/03/05 18:33:07
ていうか>>550の文章読んでよく質問内容が理解できるよな。
俺には結局>>550は何を聞きたいのかサッパリわからないが。。

VB遣いにはエスパーが多いのか?
それとも書いてあることを書いてあるまま正確に読む訓練のできてない
思い込みの激しい「夢見る」文系君が多いのかな。
557デフォルトの名無しさん:05/03/05 18:54:42
>>556
自分の読解力の無さを棚にあげて言いたい放題だな
558デフォルトの名無しさん:05/03/05 18:56:17
書いてないことを読み取る能力は読解力とは言いません。
あえていうなら「妄想力」でしょうか。
559デフォルトの名無しさん:05/03/05 18:59:27
>>556
よそ行ってね。君のようなのが荒れる原因だから。
560デフォルトの名無しさん:05/03/05 21:41:51
msgboxを表示するときに、ピンとかいう音がうるさく感じるんですが
なくす方法はありませんでしょうか?
よろしくお願いします。m(_ _)m
561デフォルトの名無しさん:05/03/05 21:44:33
>>560
[スタート]-[設定]-[コントロールパネル]-[サウンドとマルチメディア]
562デフォルトの名無しさん:05/03/05 21:59:48
つまらないことをぐずぐず書く暇があったら、
わからないところを、聞けば良いだろう、ボケ。
563デフォルトの名無しさん:05/03/06 01:07:49
>560
自分でMsgBox「の様な物」を作る。
564469:05/03/06 16:39:43
質問させてください。
VB6.0を用いています。

フォーム上での矢印キーによるフォーカス移動制御を行いたいと思います。
フォーム上に存在するボタン間の制御を行うために、
Command_KeyPress内に矢印キー押下時のフォーカス移動に関する記述を行ったのですが、どうやら、矢印キーを押下してもCommand_KeyPress内に制御は移っていないようです。
どこにどのように記述すればこのような制御は可能でしょうか?

私の場合、以下のような記述を行うことを考えています。

例:ボタンA上で右矢印キーが押され、ボタンBにフォーカスを移す場合

IF KeyCode=vbKeyRight then
commandB.setFocus
END IF

このような記述はスマートでしょうか?
ボタンが多いフォーム上ではやたらコードの量が増えて効率が悪いような気がします。
何かよい方法は存在するのでしょうか?
初歩的な質問で申し訳ありません、ご存知の方がおられましたらよろしくお願いいたします。
565デフォルトの名無しさん:05/03/06 17:21:17
>>564
フォームのKeyPreviewプロパティをTrueに。
それとKeyPressより、KeyDownイベントのほうがいい。
さらにTabOrderも工夫する。
566564:05/03/06 18:21:37
>>565
レスありがとうございます。
さっそく行ってみたのですが、矢印キーのイベントを拾うことができませんでした。
自分自身でもすこし調べていたのですが、
コマンド上にフォーカスがある場合、
矢印キーの押下は取得できないとありました。
何か良い方法はないでしょうか。。。

567デフォルトの名無しさん:05/03/06 19:09:49
>>566
マップを作って1つのプロシージャでまとめて処理させれば
汎用的だし、コード的にもすっきりする。
568デフォルトの名無しさん:05/03/06 19:18:05
キーボードフック使えば?
グローバルフックではないのでDLLはいらず、
VBでもフックできる。
569デフォルトの名無しさん:05/03/06 23:37:12
>>316
>>330
ありがd

VB6.0でsin関数を使わずに、テーラー展開またはマクローリン展開でsinを求める方法ってどなたか分かります?
570デフォルトの名無しさん:05/03/06 23:40:10
>>569
礼儀知らずの人間には教えません
571i:05/03/07 00:04:12
早速ですが、今更と思われそうですがエクセル95のVBAで
FSO(File System Object)は、使えますか?
自宅には当然95なんてシロモノは無いので、確認がとれません
会社でぶっつけ本番でもいいのすが不安で・・
572デフォルトの名無しさん:05/03/07 00:05:00
573i:05/03/07 00:14:15
571ですがVBAのスレがあったのでそっちへ行きます。
失礼こきました
574デフォルトの名無しさん:05/03/07 00:27:38
False ← なんて読んでますか、或いはカタカナ表記だとどうでしょう?

趣味プログラマーって周りに同様の趣味の人がいない場合が多いと思うのですが
こんな単純なことも中々聞けませんよね

IT用語の日本語的方言というのは業界にいないと分かりづらくてPingをピングって
言うのなんか想像の埒外でしたから・・・・・普通ピンって読んじゃいますよね
575デフォルトの名無しさん:05/03/07 00:30:10
フォールス
576デフォルトの名無しさん:05/03/07 00:42:10
>>575 ありがとうございます、普通に読むんですね
577デフォルトの名無しさん:05/03/07 01:24:23
singだってシングだろ・・・。singsongをシンソンなんて普通の日本人は読まないよ。
578デフォルトの名無しさん:05/03/07 01:27:41
じゃあhongkongはホングコングだな。
579デフォルトの名無しさん:05/03/07 01:28:09
pingpongもピングポングだ。
580デフォルトの名無しさん:05/03/07 08:53:54
これを使ったシステムを作ったことある人いますか?
VB Report Ver.3.0
http://shopping.yahoo.co.jp/shop?d=SBSY&id=4993857329034

使用感をお聞きしたいのですが。
581デフォルトの名無しさん:05/03/07 12:42:39
ていうかpingが「ピング」より「ピン」に近いって感覚が理解できん。
後に音が続かない時の(つまり、ping本来の)発音は明らかに「ピング」に近いぞ。
582デフォルトの名無しさん:05/03/07 13:02:52
>>580
んなもん使わずに直接エクセルに出力したほうが早いだろ。
583デフォルトの名無しさん:05/03/07 13:38:45
>>581

結構大勢の人がPingを「ング」にアクセントを置いてしゃべってますよ・・・
Pingつうと「レッドオクトーバー」でラミレス艦長が"One ping only."って
言うのが印象に、って言うのは置いといて
584デフォルトの名無しさん:05/03/07 13:39:24
VB5でSHBrowseForFolderを使いフォルダ選択ダイアログを出す場合

1.エディットコントロールを持つ、新しいユーザーインターフェースを使用し
たい場合はOleInitialize関数またはCoInitialize関数を呼び出してCOMを初期化
する必要があるみたいですがVBでのコーディング例がどこかのサイトにありますか?

2.旧UIを使う場合でもルートフォルダーじゃなくて指定パスを選択状態にして
ダイアログを呼び出せると思うのですがBROWSEINFO構造体を眺めていても指定パスが渡せる
ようなパラメータが見当たりません。別の関数を使うのでしょうか?
585584:05/03/07 14:01:38
更に「初期フォルダ」でググッたら2.に関して山ほどHitしますた
検索語の工夫が足りなかったようで失礼致しました
586デフォルトの名無しさん:05/03/07 14:13:01
>>578-579
まったくこれだから脊髄反射は困るなぁw
「ング」なんて普通に使われているんだから、
想像の埒外なんてありえないって言っただけだろ。
あーやだやだ。
587584:05/03/07 14:21:47
更に更に検索結果を見ていたら1.もVBの場合はシカト可能っぽいですね
>>584は解決つうことで・・・・・・お後が宜しいようで
588デフォルトの名無しさん:05/03/07 16:28:21
さ〜て来週は
カツオ、豪快に釣られる
ワカメ、オナニー見つかる
船、ローレライ発動す
の3本です。お楽しみに〜

んっが、ング
589デフォルトの名無しさん:05/03/07 22:01:29
VBでWindowsNTの、イベントビューアのアプリケーションログを
取得する方法を教えていただけませんでしょうか。
XPか2000ですと
http://www.microsoft.com/japan/technet/scriptcenter/scripts/logs/eventlog/lgevvb03.mspx
で取得できたのですが、これと同じことをNTでできませんでしょうか?
590デフォルトの名無しさん:05/03/08 00:30:40
指定した文字列の間を抜き出したいんですが、
上手く抜き出せません

i = InStr(strData, "一覧表表示")
n = InStr(i + 5, strData, "一覧表表示")
a = Mid(strData, i - 5, n + 8)
Text1.Text = a

始めの位置(i)から最後までが表示されてしまいます。
591デフォルトの名無しさん:05/03/08 01:12:26
>>590
どういう文字列からどういう条件で取り出したいのかがよくわからん。
592デフォルトの名無しさん:05/03/08 01:19:59
midの第3引数は文字長。他にもありそうだが何がしたいのかわからないので
気がついたとこだけ。
593デフォルトの名無しさん:05/03/08 01:30:44
>>590
n+8はどこから出てきたのかな?
これでどう?
a = Mid(strData, i - 5, n -i)

こういう手もあるけど。
"一覧表表示" & Split(strData, "一覧表表示")(1)
594584:05/03/08 06:50:26
SHBrowseForFolderで初期フォルダを選択した状態にできました・・・・が
日本語を含むパスだとツリーは開かれるものの該当フォルダが選択されていま
せん。フォルダ名自体が英語でも途中のパスに日本語が含まれると駄目です。
参考にしたのがカナダのサイトだったので2バイト対応になってないみたいです

Const BFFM_SETSTATUSTEXTW As Long = (WM_USER + 104)

この定数をどこかのパラメータに指定してやれば良さそうにも思えますけど
どの関数のパラメータにセットすれば良いかご存知ですか?
595584:05/03/08 11:25:16
日本語サイトの例をパクッて解決しますた
596デフォルトの名無しさん:05/03/08 14:01:36
マウスカーソルを自前で制御したいのですが、うまい表示の仕方ないでしょうか?
クライアントからLAN経由で受け取ったマウス移動量を元に、サーバ側にマウスカーソルを
表示させたいのです。(この時にサーバ側のマウスは、サーバ側でつかっています)
imageとかpictureをつかう方法を試してみたのですが、うまく透過してくれないので
マウスカーソルとして使えませんでした。いい知恵があればご教示ください。

597デフォルトの名無しさん:05/03/08 14:09:37
VBって.exe の実行ファイル作れるんですか?
Visual Basic 6.0 で
598デフォルトの名無しさん:05/03/08 14:10:23
>>596
Region使え。

>この時にサーバ側のマウスは、サーバ側でつかっています
入力がダブる時はネットワーク側を遅延させりゃ良いだろうけど
どうやってネットワーク側マウスのドラッグを実装するんだ?
599596:05/03/08 14:35:31
>>598
ありがとうございます。Regionを調べてみます。
ドラッグの件ですが、カーソルでどこを指しているかだけを共有したかったので、
そこまで必要ないのです。
600デフォルトの名無しさん:05/03/08 15:49:43
>>597
できる。というか、それが一番主な使い方じゃないのか。
601デフォルトの名無しさん:05/03/08 15:57:23
>>600
ビルドが吐き出す*.exeじゃなくて、ビルドみたいにEXEファイルを作ることはできるか?って意味じゃないのか?
俺は知らんが。
602デフォルトの名無しさん:05/03/08 15:59:55
>>601
想像で言うな
603デフォルトの名無しさん:05/03/08 16:03:42

文字列:s(0〜9、9桁)
モジュラス:m
ウェイト:w

のチェックデジットを計算する関数を教えてけろ


604デフォルトの名無しさん:05/03/08 16:13:39
>603
お前の態度が気に入らない。
605デフォルトの名無しさん:05/03/08 16:17:55
VCでコールバック関数を使ってるプロジェクトを
デバッグしようとするとデバッグポイントが無効になります。
こういう場合どうしたらデバッグモードでステップ実行できるでしょうか?
606デフォルトの名無しさん:05/03/08 19:05:48
マウスカーソルを自作の物に変えるのはどうやればいいですか?
VCだとリソースから変更できるみたいなのですが。
607デフォルトの名無しさん:05/03/08 19:18:54
>>606
Screen.MouseIcon
608442:05/03/08 21:31:46
あれから色々調べましたがUndeleteを実現するAPIがわかりません

Undelete VB API Win32あたりを色々組み合わせてぐぐってもうまく
Hitしないんですけどエクスプローラーには実装されているので
何かあるんでしょうね。皆さんはAPI名が分からない場合どうやって
探しているんですか?
609デフォルトの名無しさん:05/03/08 23:00:23
>>608
そのようなAPIは存在しないと思う。
不便だけど、IContextMenuのInvokeCommandを使うのが妥当かな。
VCならともかくVBでやるのはたぶん面倒だから、
オライリーのVisual Basic Shell Programming辺りを参考にしてみては。
610デフォルトの名無しさん:05/03/08 23:04:54
よく知らないがこれじゃダメなのか?
ググったら10秒で見つかったが。。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpshell/html/_Win32_UndeleteFile.asp
611デフォルトの名無しさん:05/03/09 00:29:01
>608
この辺よんでなんとかならないかなと。
http://support.microsoft.com/kb/136517/ja
xpでもINFO2あるようだし、
エクスプローラで
C:\Recycled\
と入力すると一応ファイルがあるような気分も感じられる。
しかし、深入りしないとわからなそうな気がするので私は止めておきたい。
612デフォルトの名無しさん:05/03/09 03:08:50
SQLのデータ型で
varcharてのはどう読んだらよいのやら?
意味としてはヴァリアント・キャラクタと思うが
略してバリキャラ?
613デフォルトの名無しさん:05/03/09 03:13:15
VB5で引数がファイルなのかフォルダーなのか簡単に知る方法はありますか?

最初 =Dir(引数, vbDirectory)で良いと思ったんですが、vbNormalを指定しても
結果は同じで、引数がフルパスの場合はファイルでもフォルダーでも同じく非Null
になっちゃうんですよね

さらにルートフォルダーを渡すと悲惨な結果を返しちゃいます、まあこの場合は
戻り値が非Nullで引数が3文字であればドライブルートと判断できそうですけど
614デフォルトの名無しさん:05/03/09 03:43:35
>>613
VB5はGetAttrない?
615デフォルトの名無しさん:05/03/09 06:53:41
ボタンを押したら画像が変わるようにしたいのですが
うまくできません。
とりあえず枠組みだけ作りました。
http://f53.aaa.livedoor.jp/~dasai/upload/src/up0012.lzh
616615:05/03/09 06:55:24
それとEXEのアイコンを好きな画像にしたいのですが
リソースハッカー等を使えばいいのでしょうか?
617デフォルトの名無しさん:05/03/09 07:13:48
>>614
な〜るほど、助かりました
618デフォルトの名無しさん:05/03/09 07:29:19
質問させていただきます。
RS232-Cで外部装置とやりとりをしているのですが、
外部装置のデバッグのために意図的に通信エラーを発生させる必要があるのです。
そこで、VBで通信エラー(1byte抜け、パリティエラー等)を発生させるにはどうすればよいでしょうか?
ご存知の方いらっしゃいましたらご教示お願いします。
なお、現在の開発環境は「Win2000 SP1」「Visual Basic 6 SP6」です。


619デフォルトの名無しさん:05/03/09 09:34:59
>>618
ソフト側のバイト抜け、パリティ値異常は自分で組めばOKだな。そりゃあたりまえ。
ソフト正常・PC等異常でのバイト抜け、パリティ異常をVBでどうにかしろってのは無理ってもんだ。
620デフォルトの名無しさん:05/03/09 09:42:09
そこで電子ライターのカチカチですよ。
壊れても責任もたないけど。
621デフォルトの名無しさん:05/03/09 10:08:02
RS232-Cのデバッグなら信号モニタとか繋ぐだろうから
そっちの機能にノイズ発生とかあるんじゃねの?
622デフォルトの名無しさん:05/03/09 11:20:09
DWORDのAPI(timeGetTime等)はVBでLongとして扱われますが、
2,147,483,647を超えた場合、次は-2,147,483,648となり
-1までいったら0となるのでしょうか?
教えてください。
623デフォルトの名無しさん:05/03/09 11:21:20
>>622
自分で試してください
624デフォルトの名無しさん:05/03/09 11:21:20
質問させていただきます。
16進数を10進数に変換する関数ってありますでしょうか?
10進数を16進数に変換する関数は見つけたのですが、その逆がみつかりません。

現在の開発環境は「Win2000 SP1」「Visual Basic 6 SP5」となっております。
よろしくお願いいたします。
625デフォルトの名無しさん:05/03/09 11:25:51
>>624
CInt("&h" & "a")
でも何でもお好きにどうぞ
626デフォルトの名無しさん:05/03/09 11:32:36
>>625
ありがとうございます!
627デフォルトの名無しさん:05/03/09 12:02:40
>>623
timeGetTimeを使えば24日後には結果が出ますね。
1秒以内のタイマに使いたかったんです。
今日中に知りたかったんですが残念です。
ありがとうございました。
628デフォルトの名無しさん:05/03/09 12:08:45
( ゜д゜)ポカーン
629デフォルトの名無しさん:05/03/09 12:09:33
>>627
いや、2の補数なんだから、計算すりゃ出るやん。
それにCコンパイラがあればすぐ試せるやん。
630デフォルトの名無しさん:05/03/09 12:57:31
ぃ〜ち、に〜、さ〜ん、し〜、からあげやん!!
631デフォルトの名無しさん:05/03/09 13:01:52
>>629

2の補数って事はリセットされて0じゃなく
マイナスが帰ってくるって事ですね。
数週間前に初めてVBを触りだし
Cなんてまったくわかりません。
ほんとすみません。
632デフォルトの名無しさん:05/03/09 13:47:00
>>631
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpmltimd/html/_win32_timegettime.asp
> 戻り値は 0 ミリ秒から 2^32 ミリ秒の間を循環します。

Longはsignedだから622の認識でOK
633デフォルトの名無しさん:05/03/09 14:07:43
>>632
ありがとうございます。
これで何とかなりそうです。

>>その他皆様
何回もすみませんでした。
634デフォルトの名無しさん:05/03/09 21:22:44
実行環境の違いについて教えてください。
大きな二次元配列を作って、中身を全部調べるという処理
なんですけど実行する環境で挙動が変わってしまいます。

 WindowsMe : 無応答
Windows2000 : 正常終了
 WindowsXP : 正常終了

途中で DoEvent を発行せず、ループをグルグル回していますが
配列のサイズを小さくすると、WindowsMeでも正常終了します。
処理時間の長さが影響していると思うのですが、ネットで検索
しても、自力で回答を見つけられませんでした。
どなたか詳しい方、解説を宜しくお願いします。

尚、実行ファイルの作成はWindows2000で行っています。
635デフォルトの名無しさん:05/03/09 21:54:30
処理中なんだろ。
CPU使用率眺めてれば。
636デフォルトの名無しさん:05/03/09 22:09:27
いや、確かにWin9xだと巨大な配列とか文字列を扱ってると固まることあるよ。
637デフォルトの名無しさん:05/03/09 22:12:49
巨大な配列は使わない
が定説だったな
638618:05/03/09 22:17:46
>>619-621
ありがとございました。
639vb:05/03/09 23:24:37
VBから、エクセルファイルを開く(書き子んだファイルを起動する)方法教えてください。
リンクするようなイメージで。
640デフォルトの名無しさん:05/03/09 23:27:12
>>639
shellexecute 等
641vb:05/03/09 23:29:10
shellexecuteは使ったことありません。その命令でパスとかを指定すればいいんですか?
もしよかったら、記述の仕方教えてください。
お願いします。
642デフォルトの名無しさん:05/03/09 23:30:44
>>641
それくらいは自分で調べてください。
643vb:05/03/09 23:31:42
分かってたら教えてください。
こういう場で教えてもらったほうが分かりやすいから。
初心者なので。
644デフォルトの名無しさん:05/03/09 23:32:35
いやです。
645634:05/03/09 23:37:21
>>635,636,637
ありがとうございます。

WindowsME : 30分待ってもNG(固まっている?)
Windows2000、XP : 約10秒で終了

なので、ある一線を超えてしまったのでは?と思ったのですが・・
巨大配列は宜しくないようなので、適当に DoEventでOSに制御を
渡してトライしてみます。

 
646デフォルトの名無しさん:05/03/09 23:44:27
初心者ならなんでも許されると思うな
647デフォルトの名無しさん:05/03/10 09:24:09
まあ、>>641みたいのはプログラマじゃないよな。
せめてぐぐってサンプル探して試してダメだったら聞け。
648デフォルトの名無しさん:05/03/10 13:46:24
マルチメディアコントロールの他に手軽にwavファイルを再生する方法ありませんか?
649デフォルトの名無しさん:05/03/10 14:23:16
sndPlaySound
650デフォルトの名無しさん:05/03/10 15:47:33
sndPlaysoundありがとうございます
651デフォルトの名無しさん:05/03/11 02:21:35
先日買ったテキストで勉強をはじめました。
サンプルの掛け算足し算プログラムなど作ってます。
ざっと全章読んだんですが応用するには時間がかかりそうな本でした。
そこで辞典みたいなTIPS?本を買おうと思うのですが
それよりもこれ読んどけ・勉強しとけ みたいな本はありますでしょうか?
652デフォルトの名無しさん:05/03/11 02:41:43
>>651
ISBN4-7741-0859-6 ISBN4-7741-0941-X
ISBN4-7741-0880-4
ISBN4-7741-0771-9 ISBN4-7741-0777-8
ISBN4-7741-0782-4
上げだしたらきりがないが。
653デフォルトの名無しさん:05/03/11 03:46:46
>>652
それは注文番号ですか?ぐぐったら技術評論者の本が
でたので参考にしてみます。サンキュス
654デフォルトの名無しさん:05/03/11 10:45:41
>>653
ISBNだろ
655デフォルトの名無しさん:05/03/11 12:11:19
PROCESS_INFORMATION構造体を使おうとすると、
「ユーザー定義型は定義されていません」と出て、うまく実行されません。
調べると、参照設定を変えるという所までは分かったのですが、
どれを変えればいいか分かりません。教えてください。
656デフォルトの名無しさん:05/03/11 12:31:22
>>655
Google.co.jpで "PROCESS_INFORMATION VB"
657デフォルトの名無しさん:05/03/11 12:39:20
>>655
APIビュアで定義を調べてコピペ。
658デフォルトの名無しさん:05/03/11 12:48:36
>>656>>657
ありがとうございます。出来た模様です。ありがとうございました。
あの長い宣言ですよね。Cの#include <windows.h>みたいな
ちょこっとやっとく感じかと思っていたので大変でした。
659デフォルトの名無しさん:05/03/11 16:03:16
>>654
まじれすか(´・ω・`;) ちゃんと全部VBの本がでたのでアマゾンに
注文してしまいました・・

ISBNで検索してみます(´・ω・`;;)・・
660デフォルトの名無しさん:05/03/11 16:06:46
うわ、全部買ったの?けっこうな金額になりそうだが
661デフォルトの名無しさん:05/03/11 16:28:20
ホリエモンやライブドアを偏向報道から守ろう!!

ttp://www.geocities.jp/horieouenn/
662デフォルトの名無しさん:05/03/11 17:35:11
>>659
ISBNの意味がわかってないのか。
別にアマゾンで買ってもいいよ。
663デフォルトの名無しさん:05/03/11 17:55:28
>>662
ぐぐってみました。日本図書コードってやつみたいですね。

>>660
2冊だけ買いました

スレ汚しスンマセンでした(´・ω・`)
664デフォルトの名無しさん:05/03/11 21:00:09
VB6.0を使っています。OSはXPです。

DirListBoxで普通にパスを指定すると、ドライブのルートから
指定したフォルダまで全ての親フォルダが表示されますよね。
このとき、指定したフォルダより上位のフォルダを非表示に
することは可能でしょうか?
つまり、たとえば"C:\A\B\C\D"というパスを表示するときに、
あたかもBがドライブのルートであるかのように表示して、
ユーザにそれより上位のフォルダにアクセスさせないように
したいのですが……。
665デフォルトの名無しさん:05/03/11 21:25:07
VB5でマウスのホィールを使いたいのですが「VB マウスホィール」あたりだと
ググッてもHitしません。参考になるサイトはありますか?
666デフォルトの名無しさん:05/03/11 21:28:46
>>664
DirListBoxもどきを自作するか、
SUBSTコマンドで誤魔化せ。
667デフォルトの名無しさん:05/03/11 21:31:54
>>665
WM_MOUSEWHEEL
668デフォルトの名無しさん:05/03/11 21:53:12
>>665
「VB マウスホイール」なら腐るほどヒットするのにな。
669デフォルトの名無しさん:05/03/11 23:19:17
>>666
SUBSTについて調べてみましたが、勝手に仮想ドライブを
作ってしまうといろいろ支障が出そうなので、なんとか
DirListBoxっぽいものを自作する方向で考えてみます。
やってみて難しそうならまた別の方法を検討します。
ありがとうございました。
670デフォルトの名無しさん:05/03/11 23:26:17
>>664
っていうか、正直そんなUI糞だと思うよ。。
671デフォルトの名無しさん:05/03/12 00:02:44
世間には普通にあると思うけどなー。
Unixのユーザーアカウントの仕組みもそんなんじゃなかったっけ?
あとFTPとかも。
まあ、それ自体が糞なのだという意見かもしれんが。。
672デフォルトの名無しさん:05/03/12 04:26:04
>>664
SHBrowseForFoldersを使えば指定フォルダー以下の選択ができるけど
あれじゃ駄目?
673デフォルトの名無しさん:05/03/12 04:27:20
おっと、最後のsは余計だった「SHBrowseForFolder」
674デフォルトの名無しさん:05/03/12 08:37:49
675デフォルトの名無しさん:05/03/12 10:50:54
vb5.0のサービスパックはどこで手に入るのでしょうか?
676デフォルトの名無しさん:05/03/12 12:28:58
>>674
それだ
677デフォルトの名無しさん:05/03/12 22:30:59
>>675
MSのトップから辿っていけばすぐに見つかるだろ。
http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs97/vb.aspx
678デフォルトの名無しさん:05/03/12 23:24:42
>>672->>674
アドバイスありがとうございます。
ダイアログボックスを表示するのでなくてなんとかフォームの一部として
組み込みたいと思ってます。
さして複雑な機能を必要としているわけでもないので、Listboxに手を加える
とかでなんとかならないかと模索している最中です。
なので、とりあえずはその方向で頑張ってみて、駄目だったらダイアログボ
ックスを使うことを考えたいと思います。
わざわざアドレスまで示していただいてありがとうございました。
679MG:05/03/13 23:41:55
現在VB6を主な開発環境にしてます。機器制御やデータベースサーバー
(SQL-Server)とのやり取りを主とする社内用のプログラムを開発、保守してます。
VB6もサポートが終わるようですし、netへ移行が必要かな?と思いつつも
(VS2003は購入してあるのですが)いまいち移行のメリットが見えません。
1.クライアントは98からXPでFrameworkのインストールが必要なマシンが
まだ大量にある。またインストールしてどのOSでもほんとに動くのか?
2.Frameworkのバージョンがあがったときにちゃんと動くのか?
3.Framework上でのアプリは遅いらしい(しくみからするとあたりまえか)

1.2はnet系の掲示板をみると大丈夫らしいのですが、どこもNETを
誉めるばかり(MSヨイショか?)みたいでどこまで信用できるのか半信半疑
です。
3.は結構痛いです。マシンを新しくすればよいといわれそうですが、IT系
の企業でもない製造業では、そんなに頻繁にマシンも入れ替えられないので
難しいです。
VB6使いの方はどう思われてますか?
680デフォルトの名無しさん:05/03/13 23:47:16
>>679
結局何を聞きたいのかいまいち見えてこない。
ピントのぼやけた質問にはやはりピンボケの答えしか返ってこないと思う。
681デフォルトの名無しさん:05/03/13 23:49:59
そんなあなたにサミュエル スマイルズ「自助の勧め」をお勧めしよう
682デフォルトの名無しさん:05/03/13 23:50:47
『自助論』だった・・・・・・ORZ
683デフォルトの名無しさん:05/03/13 23:56:04
聞くならVB.NET使ってるやつらに聞くべきだ
684デフォルトの名無しさん:05/03/13 23:59:05
685MG:05/03/14 00:04:19
質問の仕方が悪かったの見たいです。すいません。
聞きたいことはVB6を使っている方が.NETへの移行に関してどう思われている
かということです。
移行するというのもあるかと思いますし、別の開発系にする、あるいは移行しない
という判断もあるかと思います。
その判断と、判断基準を聞いてみたかったのです。
自分の場合は今のところメリットが見えないのですが(移行にもかなりの手間が
かかるし)、今のままにしておくのも今後のこと(将来のOSでは動かないのでは
?)を考えると心配なので、どうするのがベストかを悩んでいます。


686デフォルトの名無しさん:05/03/14 00:06:02
>>685
ウザい
消えろ
687デフォルトの名無しさん:05/03/14 00:28:08
>>685
どの板のどのスレにもいる幼稚な奴は無視するよろし。

.NETに移行することのメリットは、エンドユーザーにとってみれば
ほぼ皆無だと思う。すくなくとも現時点では。

開発者側にとってのメリットも、実は現時点ではそんなにない気もする。
ただ確かにVB6よりはVB.NETの方が言語仕様すっきりしていてある意味解かり易いので
開発効率は若干上がるかもしれない。あとは、とりあえず時流に乗っているという安心感か。w

移行が大変かどうかという点については、VB6でもクラス使いこなしている人なら
全然問題ないと思う。(2-3週で感じは掴めると思う)
逆にVBプログラマにありがちなoopどころか構造化プログラミングもちゃんと
マスターできているか怪しいレベルの人だとかなり苦労するかも。
688デフォルトの名無しさん:05/03/14 00:31:48
うちの会社は新規案件については2年前から移行しているけど、
保守するものについては、ケースバイケース。
VB6製のソフトが将来動かなくなる日はいずれ来る。
ずっと使うってわかっているものなら、いつかは移行せざるを得ないけど、
要はいつ移行すべきかってことでしょう?
それは、知らん。
どの程度の予算・時間で移行できるかとか、プログラムの規模にも担当する人員にもよるし、
プログラムのライフサイクルにもよってくるじゃん。
自分のところで諸事情を検討して決めるしかないよ。
689デフォルトの名無しさん:05/03/14 00:35:11
http://pc5.2ch.net/test/read.cgi/tech/1027559190/
こっちにでも行ってやってくれ
690デフォルトの名無しさん:05/03/14 01:00:52
>>685
マシンの入れ替え次期に合せて.NETに移行すれば?
691デフォルトの名無しさん:05/03/14 01:20:00
うちの社内アプリはVB5製。さすがに古くなってきたからWin32SDKに移行中。
特に移行を急ぐ必要が無いならそのままでいいんでないか?
692MG:05/03/14 01:24:48
>>687
>>688
回答ありがとうございます。移行メリットはあまりないですか・・。
実際作り直すだけのメリットがないのでほんとはVB6互換の使える
環境とか出てきてくれればありがたいんですけど(REALBASICではだ
めみたいだし)
当面VB6でいこうと思います。
>>689 で紹介されたスレもみましたが、新規案件もnet
2.0がでるまで様子見したほうがよい感じですね。
693デフォルトの名無しさん:05/03/14 02:05:09
>>692
2.0まで様子見?一生「次が出るから」なんて言ってればいいよ
将来のOSで動かなくなる?お前、その時に生きてんの?
判断と基準?下調べくらいやってから言えよ
694デフォルトの名無しさん:05/03/14 04:04:28
vb6のサポート終了もあり、新規開発ではvb6を使用すべき状況ではなくなりつつある。
vb6は人気のある言語だったが、移行すべきパスは明確ではない。

vb7みたいな製品があれば良かったのかもしれませんが、
まだプログラマ人口の少ない.netに移行すべきかは迷うところでしょう。

エンタープライズの世界に限って見ると、社内システムでも
画面はブラウザで、ビジネスロジックはapサーバのjavaでという選択も多くなってきていると思います。
ですが、まだ複雑なUIでは、ブラウザでは描画速度や自由度などの点で不満がでることもあるでしょう。
また、2階層のシンプルなシステムから3階層のシステムに移行する点もリスクに見えるわけです。

混沌としているようでもあります。
しかし移行すべきパスが明確でないということは、選択肢が沢山あるということでもあります。
個人的にはその選択にはプログラマ人口が比較的重要だと思っています。
695デフォルトの名無しさん:05/03/14 07:22:16
>>204
じゃあ君が思う正しい文章書いてみ?
696デフォルトの名無しさん:05/03/14 14:30:03
釣堀じゃねーしさ
697デフォルトの名無しさん:05/03/14 14:50:53
VB6.0からVB.NETに逝くぐらいならあっさりC#にしたほうがまし。
698デフォルトの名無しさん:05/03/14 14:53:00
そんな事は当たり前だ。
VB.NETはVBという名前を無くすと暴動がおきるから、しぶしぶ作った代物だ。
699デフォルトの名無しさん:05/03/14 15:01:24
でもなぜか、多くの人はVB.NETを選んでるみたいだね。
700デフォルトの名無しさん:05/03/14 15:09:46
Officeとの親和性だけは高いからね。
701デフォルトの名無しさん:05/03/14 19:28:47
ビルゲイツが何で金持ちになったか知ってるか?
702デフォルトの名無しさん:05/03/14 19:33:54
  (´・ω・`) < 知らんがな
703デフォルトの名無しさん:05/03/14 19:36:26
いや、C系統の言語って視認性が悪過ぎるでしょ。VBとかパスカルなんかに比べて。
くだらないことに脳の資源とられる感覚を払拭できないんだよね。
っていうとすぐに慣れの問題っていう奴が出てくるがそんなことはない。

それだけでも十分VB.NET選ぶ理由になると思うけど。

>Officeとの親和性だけは高いからね。
そこはあんまりC#でも変わらない気がするけど。。
704デフォルトの名無しさん:05/03/14 19:51:03
>>703
変わらないって言えば変わらないかな。
ただ、引数が省略できないから Missing.Value がずらずら〜と並んでorz
705デフォルトの名無しさん:05/03/14 19:57:33
あと、CreateObject("Excel.Application")みたいにレイトバインディングが
簡単に出来ないのが辛いなぁ。
インストール先PCのOfficeのバージョンに合せていちいちビルドし直すのが面倒。
706デフォルトの名無しさん:05/03/14 20:04:02
え、できるでしょ?C#じゃ試してないけど。
インスタンスの生成は単純にExcelをNewしといて、
それをObject型の変数に代入するだけ。

少なくともVB.NETじゃこれでエクセルに関して
バージョンフリー(?)なアプリが作れたけど。。
707デフォルトの名無しさん:05/03/14 20:05:38
っていうか学生さんの言語厨房みたいなこと言って悪いけど
「レイトバインディング」ってCreateObject使うかどうかは関係ないよ。
708デフォルトの名無しさん:05/03/14 20:09:31
っていうかいつまで.NETの話題を続けてるんだ
709デフォルトの名無しさん:05/03/14 20:13:32
>>706
C#の話題なんだが。
710デフォルトの名無しさん:05/03/14 20:15:12
C丼て何?
711デフォルトの名無しさん:05/03/14 20:15:38
>>707
そうそう。だから「CreateObject()みたいに簡単に」って表現をしてると思った。
712デフォルトの名無しさん:05/03/15 00:20:16
>708 >710

必死だなw
713デフォルトの名無しさん:05/03/15 12:57:13
>>703
漏れはVB使ってる時の方がくだらんことに脳の資源が取られると感じる。強烈に。
714デフォルトの名無しさん:05/03/15 16:39:21
VB6でコントロール配列のインデックスの並び替えが100個とかあると非常に面倒なのですが、
何か良い方法はないでしょうか?
タブインデックスみたいに既に割り当ててある番号を指定しても自動的に並び替えてくれればいいんですけど。
715デフォルトの名無しさん:05/03/15 16:51:43
>>714
100個作るインターフェイスそのものが間違っています
画面仕様から見直してください
716デフォルトの名無しさん:05/03/15 16:56:01
>>715
それもそうですね。見直します。
717デフォルトの名無しさん:05/03/15 18:07:34
100個ってどんなだ。
718デフォルトの名無しさん:05/03/15 19:03:28
>>717
10×10のマスをテキストボックスで表してるとかでしょ。
素直にGridつかえばいいのに(w
719デフォルトの名無しさん:05/03/15 22:56:00
>703 >705
釣りは他所でおながいします
720デフォルトの名無しさん:05/03/15 23:01:18
>>719
あんた、空気読めない人っていわれない?
721デフォルトの名無しさん:05/03/15 23:20:30
(´-`).。oO(釣堀では静かにしてろってこと?)
722デフォルトの名無しさん:05/03/16 07:17:04
>>696
どうやら書けないらしいね。
723デフォルトの名無しさん:05/03/16 12:59:00
(´-`).。oO
724デフォルトの名無しさん:05/03/16 14:31:39
0.1づつ繰り上がるはずなのにずれます。
教えてください。
Private Sub Command1_Click()
level = level + 0.1
Label1.Caption = level
End Sub


725デフォルトの名無しさん:05/03/16 14:40:23
dim n as Integer

Private Sub Command1_Click()
level = n * 0.1
Label1.Caption = level
End Sub
726デフォルトの名無しさん:05/03/16 15:45:18
>>724
予想。
level が Integer になっている。
727デフォルトの名無しさん:05/03/16 15:48:15
>>726
Integerだったらズレる以前の問題だろ
728デフォルトの名無しさん:05/03/16 15:53:10
charポインタ返すDLLが有ったとするじゃないか。
VBではどうやって受け取るの?ポインタ無いよな?

それと、voidポインタをValiantで受け取ったとして、
どうやってキャストするんだ?
729デフォルトの名無しさん:05/03/16 16:07:45
>>724
浮動小数演算になってるからだろ。

Private Sub Command1_Click()
  level = level + 1
  Label1.Caption = level/10
End Sub

levelはLong or Integerで宣言すること。
730デフォルトの名無しさん:05/03/16 16:08:48
その程度なら通貨型使えよって思うがな
731デフォルトの名無しさん:05/03/16 18:20:44
>>728
MSDNにきちんと書いてあるから熟読することを進める。
VBのUnicodeをAnsiに渡すのは、VBたんがいい仕事してくれるので大丈夫。
ただ、DLL側で動的に領域確保は危ないような。
VBでSpaceで連続領域確保したところに突っ込んでもらうのが安全。

Unicodeの文字列をUnicodeで渡す場合はBSTR型だっけ?が必要。
732デフォルトの名無しさん:05/03/16 19:48:30
>>728
charのポインタもvoidのポインタもLongで受け取れ。
733デフォルトの名無しさん:05/03/16 20:52:10
729,730さん ありがトン
734デフォルトの名無しさん:05/03/17 00:13:04
>>729730に期待
735デフォルトの名無しさん:05/03/17 00:44:27
VB6.0です。おながいします。

フォームについて。
「最小化」のみ生かしたまま、フォームのresizeをできなくするようには
どのように記述すれば良いのでしょうか。
Borderstyleは「可変」にし、最大化をFalseにし…。
それからがわかりません。よろしくお願いします。

あと、フォームの中に配置した、例えばtextboxやコマンドボタンを、
フォームのリサイズに比例して移動させたりするには、やはり地道に
それぞれのパーツのwidth・heightを設定していくしかないのでせうか?




736デフォルトの名無しさん:05/03/17 01:11:35
可変じゃなくて固定で、MinimizeBoxをTRUE?

コントロールの移動は地道に設定したりコンテナ使って手抜きしたり。
737デフォルトの名無しさん:05/03/17 01:13:02
>>735
タイトルバーのボタンを使用不可にするにはAPI使わないと出来なかった希ガス
再配置は地道に計算してやってくしかないけど、FrameやPictureBoxなんかで区分けすれば幾分か楽にはなる。
クラスにWithEvents定義してごにょごにょってやればスッキリ書けるけど説明が面倒なので省略。
あと、可変にしたいのか固定にしたいのか分からん質問だな。
738デフォルトの名無しさん:05/03/17 02:01:32
>>731
728じゃ無いけど、そうなんだ。
>VBのUnicodeをAnsiに渡すのは、VBたんがいい仕事してくれるので大丈夫。
これは、渡す時に変換してくれるって事なんだよな?
案外VBって仕事してるのな。
739デフォルトの名無しさん:05/03/17 09:39:07
>>738
でも、結構曲者な動きだけどね。
バイト数が変わることを前提に、文字列を戻す場合は考慮が必要だったと思う。
なんで、どちらかというと、渡すのはStringでいいけど、戻りがあるならByteの配列を渡すのが確かいい感じだったと思う。
740デフォルトの名無しさん:05/03/17 12:57:09
724です。こんな方法もあるようです。
dim level as Double
Private Sub Command1_Click()
level = level + cdec(0.1)
Label1.Caption = level
End Sub
741728:05/03/17 13:32:04
>>731-732
返事が遅くてごめん
DLLで純粋にmallocをラップして、VBでも動的なメモリ確保を出来るように
しようと思ってたんだが、受け取ったポインタをキャストできないから、
全然意味が無いんだよな
何か抜け道無いかと思ってたんだけど、無さそうねぇ
とにかくありがと
742デフォルトの名無しさん:05/03/17 14:18:56
>>741
キャストしなくても、ポインタをハンドルとして扱って「中身いじり関数」をDLLに作ってやったら?
ポインタとバイト値を受け取ってコピーするだけの関数だけどな。
743742:05/03/17 14:29:18
ついでに言えば、
GlobalAlloc()
が、メモリ確保してくれるWinAPI
少し調べないと使えないからな
744デフォルトの名無しさん:05/03/17 14:44:36
そもそも、VBでそういう操作をするのが間違いだな。
もし動的確保が必要ならば、>>742さん言うようにその処理自体をカプセル化する。
745デフォルトの名無しさん:05/03/17 20:54:52
VB6で指定のExcelファイルの指定のセルだけ表示させて
そこのみ編集したいんですが・・・、OLEコンテナでできますでしょうか?
ご存知のかた、よろしくおねがいします。
746714:05/03/17 21:56:27
>>717-718
DBのデータを入力するやつです
本当は、仕様書にそのように書いてあるのでその通りに作ってるだけです
747デフォルトの名無しさん:05/03/17 22:10:11
VBで動的配列を使う場合Redimを使うとあるのですが、
Public変数の場合はどうしたらよいですか?
748デフォルトの名無しさん:05/03/17 22:12:05
>>747
はあ?
749デフォルトの名無しさん:05/03/17 22:17:39
はあとかいわれてもしょうがないのですが
動的メモリ確保の方法がわかりません。
標準モジュールで宣言したPublic配列を書いたら動的に確保できますか?
750デフォルトの名無しさん:05/03/17 22:19:39
>>749
自分で試せばわかるじゃないか。
751デフォルトの名無しさん:05/03/17 22:19:55
1から100までの自然数を素因数に分解して出力しなさい

誰かC言語でプログラム書いてもらえませんか?
752デフォルトの名無しさん:05/03/17 22:20:43
もう何がなんだか。。。
753デフォルトの名無しさん:05/03/17 23:03:02
バトルロワイヤル見てるみたいで逆に面白い
754デフォルトの名無しさん:05/03/17 23:41:45
4=2*2
6=2*3
8=2*2*2
9=3*3
10=2*5
12=2*2*3
14=2*7
15=3*5
16=2*2*2*2
18=2*3*3
20=2*2*5
21=3*7
22=2*11
24=2*2*2*3
25=5*5
26=2*13
27=3*3*3
28=2*2*7
30=2*3*5
755デフォルトの名無しさん:05/03/18 01:15:37
cp dir1/file1 dir2/file2
のようにファイルをコピーする方法を教えてください.
ファイルをopenしてkopi-ファイルに書き込むのならば出来るんですが,
もっとエレガントな方法はないのかなあと。
756755:05/03/18 01:22:44
renameですね。
自己解決しました.すいません。
757755(すんません):05/03/18 01:31:35
あー、コピーじゃないからダメですね。
やっぱりcopy file1 file2 みたくコピーする方法を教えて欲しいです。
それとファイルを削除する方法も教えて欲しいです。
758デフォルトの名無しさん:05/03/18 01:34:49
FileSystemObjectでも使えばええんちゃうん?
759デフォルトの名無しさん:05/03/18 02:03:46
FileSystemObjectなんか使わなくても、
FileCopy関数で十分。
760755:05/03/18 02:20:28
FileSystemObjectで何とかなりました。サンクスです。
今から一応Filecopy関数も調べてみます。
761デフォルトの名無しさん:05/03/18 09:26:47
>>745
CreateObjectからヘルプ見ればサンプルある。

>>747
Redimを使う。なので>>748ははあ?といいたくなるのも当然。
762デフォルトの名無しさん:05/03/18 09:31:37
Do...Loop ステートメントでループさせている中にIF文を入れているのですけど
例えば、10回ループさせている間にIF文がFalseの時に下まで行ってループせずに
5回目から6回目など次のループに移動させたいのですけどどういうやり方があるのでしょうか?
763761:05/03/18 09:32:21
>>745
ごめん、特定のセルですね。
そうだとちょっと無理かな?OLE連携でExcelを出せるけど、それを絞るのって、元のシート次第じゃないのか?
764745:05/03/18 09:43:09
>>763
元のシート次第・・・!ちょっとピピンときました。
やってみます、有難うございました。
765デフォルトの名無しさん:05/03/18 15:05:26
>762
そういう風に書けばよい。
766デフォルトの名無しさん:05/03/18 17:52:40
DDEでバイナリ値を使いたいんですがどうすれば良いのやら途方に暮れてます。
テキストやラベルにバイナリ値を入れられないし・・・
知ってる方いましたら教えてください。

>>762
飛び先書いてGOTOで。
767デフォルトの名無しさん:05/03/18 18:36:44
バイナリがだめならBASE64でエンコードすればいいじゃない
768デフォルトの名無しさん:05/03/18 18:37:19
DDEを使わないというのが最善策
769デフォルトの名無しさん:05/03/18 20:17:01
>>762
あえて言わせてもらえればアルゴリズムかコーディングが不味いと思うので
もう少し詳しくやりたいことを書けばきっちり馬鹿に出来ると思うのだが…
770デフォルトの名無しさん:05/03/18 21:09:40
>>769
恥ずかしい奴。「馬鹿に出来る」対象なのは恐らく君の方。
>>762のような制御構造が欲しいケースはままある。
っていうかCも知らないとしか思えない。
771デフォルトの名無しさん:05/03/18 22:39:53
>>762
EndIfをLoopの前まで持っていくってのでダメ?
それともBoolのフラッグ立ててIfとEndIfで囲むとか…。
772デフォルトの名無しさん:05/03/18 23:21:44
Visual InterDev 6.0をこれから勉強しようと思ってるのでがVisual Basicと違ってあまり参考書がありません。
よい参考書やHPはないでしょうか?
773デフォルトの名無しさん:05/03/18 23:26:14
知るかボケ。
774デフォルトの名無しさん:05/03/19 01:09:20
>762
なんかよく分からんけど再帰的な事がやりたいか、
一時的にLoopから外したいようにも思える。
前者ならよく考えてそのように書くしかないし、
後者の場合、もうちょっと具体的な情報がないと何とも。

一旦具体的な処理部分を関数化するか、
非常に冗長なcodeを書いて整理してけばいいんじゃないかな?
フローチャートを書くのもいいかも。

>772
VBが使えるんだったら要らないっしょ。使えば分かる筈。
それよりIIS等の参考になる資料でも読んだ方がいいよ。
775デフォルトの名無しさん:05/03/19 13:06:23
>>772
ちょっと問題がありまして、、、
Visual InterDev6で新しいWebプロジェクト作成の際に
出てくる「使用するサーバーの指定」の欄に何の名前を入力していいのかわかりません。
IISをインストールし、インターネットインフォーメーションサービスのローカルコンピューターの名前かなと思い、いれてみたのですが、接続できないようで先に進めません。
ご教授お願い致します。
OSはxpのproを使用しております。
776デフォルトの名無しさん:05/03/19 14:10:25
ビットマップの上に文字を書けるようにしたいと思うのですが、
テキストボックスを配置すると、その四方形の部分の絵が隠れてしまいます。
テキストボックスを透明にする方法ってありますか?
777デフォルトの名無しさん:05/03/19 17:41:40
>>776
Call SetWindowLong(RichTextBox1.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT)
何故かRichTextBoxなら一行で透明になるけど(Win2K以降)、直接ビットマップというか
デバイスコンテキストに描画しちゃうようなコードも考慮してみたほうがよいかと
778デフォルトの名無しさん:05/03/20 01:19:51
>775
URLかIPアドレス入れてみ。
779デフォルトの名無しさん:05/03/20 05:42:38
VB5でキーバッファクリアをしたい場合はどうすれば良いでしょうか?
まさか慣性が付いちゃうなんて・・・8Bit機を思い出してしまった
780デフォルトの名無しさん:05/03/20 07:50:31
>>779
PeekMessage
781デフォルトの名無しさん:05/03/20 12:20:39
VB6 XPです。
CSVファイルをソートするのに、ADOでテキストファイルを
データベースとして接続して、SQL文でソートして、その
結果を別ファイルに吐き出すようにしています。
Set mcn = New ADODB.Connection
mcn.ConnectionString = _
"Provider=MSDASQL.1;" & _
"Extended Properties=""" & _
"DRIVER=" & _
"{Microsoft Text Driver (*.txt; *.csv)};" & _
"DBQ=" & App.path & "\" & """"
mcn.Open
Set mrs = New ADODB.Recordset
mrs.CursorType = adOpenDynamic
SQL_STR = "Select * From " & "sort.csv" & " ORDER BY field28 ASC,field35 ASC,field02 ASC"
mrs.Open SQL_STR, mcn

ただこの方法だと元のファイルにあったデータを囲むダブルコーテーションや、
データの前後にある空白が消えてしまいます。
schema.iniの設定はこのような感じです。
[sort.csv]
ColNameHeader=True
Format=CSVDelimited
MaxScanRows=0
textacterSet=OEM
Col1=field01 text
ダブルコーテーションや空白等が消えないようにするのはどうしたらよいでしょうか?
CSVファイルの大きさは170Mです。
データは可変長です。
よろしくお願いします。
782デフォルトの名無しさん:05/03/20 13:05:14
>>778
IPアドレスいれてみたらちょっと進んで今度はユーザー名に対するパスワードを
要求されました。
思いつくパスワード全て入れてみたのですが駄目でした。
どなたかご存知でしょうか?
783デフォルトの名無しさん:05/03/20 13:41:53
>782
サーバ上に接続しようとしている端末にLoginしているユーザのアカウントはadminで作ってあるのかい?
784デフォルトの名無しさん:05/03/20 15:09:48
VB6 XPです

私は現在、ADO2.7でMDBファイルを開き、編集するソフトを作っています。
開く対象はユーザーの任意のファイルですので、ファイル読み込み時に
各テーブルのカラムの設定も取得するようにしています。

カラムのデータ型やDefault値、Nullを許可するかどうかの設定は
プロパティの"Nullable"等で取得出来ることは分かったのですが、
一意(UNIQUE)に設定されているかどうかの項目がウォッチ式や
ネット上でも調べてみましたが、見つかりませんでした。

現在は苦肉の策としてエラーハンドラーを設定し、エラーコードから
『一意に設定されたカラムに重複した値が入力されています』といった
メッセージボックスが表示されるようにしています。

カラムが一意に設定されているかどうかは、どのように取得すれば
良いのでしょうか。
785デフォルトの名無しさん:05/03/20 15:36:46
VisualBasicのサービスパックって何処でダウソできるんですか?
日本語のやつ
786デフォルトの名無しさん:05/03/20 15:56:15
>>784
Index
787デフォルトの名無しさん:05/03/20 16:02:23
                \ │ /
                 / ̄\   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
               ─( ゚ ∀ ゚ )< ぱいそんぱいそん!
                 \_/   \_________
                / │ \
                    ∩ ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< ぱいそんぱいそんぱいそん!
ぱいそん〜〜〜!   >( ゚∀゚ )/ |    / \__________
________/ |    〈 |   |
              / /\_」 / /\」               ̄     / /
788デフォルトの名無しさん:2005/03/21(月) 09:00:36
789デフォルトの名無しさん:2005/03/21(月) 21:47:36
>>785
ms
790デフォルトの名無しさん:2005/03/21(月) 22:09:33
コモンダイアログで例えばShowsaveメソッドなどで名前を付けて保存
ダイアログを真中に出したいんですけど、ダイアログを出す位置指定する事
ってできますかね。
今は、左上のあたりに出てしまいます。
791デフォルトの名無しさん:2005/03/21(月) 23:23:55
>>790
言葉遣いが気に入らないので答えたくありません。
792デフォルトの名無しさん:2005/03/22(火) 19:12:40
ド素人で申し訳ないのですが、質問させてください。
VB6.0を使っています。
form以外(たとえばデスクトップなど)がフォーカスを持っている場合に、
form側でキーイベントを受け取るにはどのようにすればよろしいでしょうか?

具体的に言いますと、
formがフォーカスを持っていない状態の時に
Ctrl+F1などが押されると、処理を実行したいです。
もちろんformがフォーカスを持っている時も同様に処理を行いたいです。
アドバイスを頂けるとうれしいです。よろしくお願いします。
793デフォルトの名無しさん:2005/03/22(火) 19:49:27
ここは随分回答者が偉そうなインターネッツですね(^ー^)
794デフォルトの名無しさん:2005/03/22(火) 19:50:43
>>791 あぽーん推奨
>>793 あぽーん推奨
795デフォルトの名無しさん:2005/03/22(火) 21:27:44
>>792
グローバルフックがしたいと?
796デフォルトの名無しさん:2005/03/22(火) 21:45:11
>>792
フォームがフォーカスを持ってる時ってのは
自アプリのウィンドウがアクティブっていうことかな?
それは下のページでわかるんじゃね?

ttp://nienie.com/~masapico/api_GetActiveWindow.html
ttp://homepage1.nifty.com/MADIA/vb/API/GetActiveWindow.htm

で自分のアプリがアクティブじゃないって判断したら
下のホームページ参考にして何キーが押されたか
判断すればいいと思う。
ttp://www.geocities.co.jp/SiliconValley/7406/tips/mouse/mouse2.html

けっこうめんどくさそうですな。

formがアクティブな状態な時は、
Form_KeyPressなりkeydownなり使えばいいんじゃね?
797デフォルトの名無しさん:2005/03/23(水) 01:51:19
>>783
ユーザーのアカウントadminに直してみましたが、無理でした。
Webアプリケーション
DIRECTSTAR
ユーザー名
パスワード
というようなダイアログが出て先に進めません。。。。
798デフォルトの名無しさん:2005/03/23(水) 02:32:38
>>797
VBと何の関係があるんだ?
799デフォルトの名無しさん:2005/03/23(水) 09:18:05
>>795さん
すいません、初めて聞く単語なのでよくわかりませんが、
グローバルフックでググッてみたところ、なにやら関係ありそうでした。
もう少し調べてみることにします。

>>796さん
おっしゃる通りです。
参考にさせて頂きます。

ありがとうございました。
800デフォルトの名無しさん:2005/03/23(水) 09:36:21
800getですが、何か?
801デフォルトの名無しさん:2005/03/23(水) 13:57:09
>797
なんか根本的に分かってないような希ガス。
「DIRECTSTAR」ってのもよく分からんし。
もちょっと「何をどうして、どうなったか?」って情報を書くべし。

つーかそろそろスレ違い。
どっか適したスレがあるんじゃね?
802デフォルトの名無しさん:2005/03/23(水) 13:59:44
>>801
オマエのように相手をするバカがいるからつけあがるんだ
氏ね
803801:2005/03/23(水) 15:00:24
(T▽T)
804デフォルトの名無しさん:2005/03/23(水) 20:08:47
NECのブロードバンドルータ
805デフォルトの名無しさん:2005/03/24(木) 10:55:46
ポインタ先の文字列取得にRtlMoveMemory使用しています。

MoveMemory ByVal strValue, ByVal lngPointer, Len(strValue)

※Declare定義は、Declare Function Sub MoveMemory Lib "kernel32.dll" Alias "RtlMoveMemory (Destination As Any, Source As Any, ByVal Length As Long)
※strValueは、固定長文字列 * 48。取得した後にNULL文字以降をカットする処理が入る
※lngPointerは、ポインタが入る

この方法だとたまにWindowsNT4.0(SP6a)でアプリケーションエラーになります。しかしWindows2000(SP4)だとなりません
ためしに固定長文字列strValueを可変長文字列に変更して、strValue=String$(48,vbNullChar)を追加したら発生しなくなりました

理由をご存知の方教えてください
806デフォルトの名無しさん:2005/03/24(木) 11:02:21
>>805

ちなみにVB6(SP6)です
ヘルプみると「Declare ステートメントに固定長文字列を指定することはできません。プロシージャに渡される前に可変長文字列に変換あります」とありますが、関係あるんでしょうか?
807デフォルトの名無しさん:2005/03/24(木) 12:59:49
文字列はStringとかSpaceで指定しない限り、連続領域確保の保証はないよね。
あと、文字コードの絡みもあるから、どちらかといえばByte配列を渡すほうが確実と思う。
808デフォルトの名無しさん:2005/03/24(木) 13:15:28
>>805
日本語環境の場合、固定長文字列=バイト数不定
809デフォルトの名無しさん:2005/03/24(木) 17:28:54
2chスレのURLと本文を指定して
コマンドボタンを押したらそのスレに書き込むプログラムを作ってみたいんですが
参考になるソースはありませんか?
810デフォルトの名無しさん:2005/03/24(木) 18:08:01
>>809
そんな質問するレベルの人に教えても、2chのサーバが迷惑なだけだから教えません
811デフォルトの名無しさん:2005/03/24(木) 18:25:06
>>809
アダルト広告業者必死だな
812デフォルトの名無しさん:2005/03/24(木) 18:43:51
今VB6(SP6)でMicrosoft AcceseとアクセスしてデータをTEXTBOXに表示させようとしているのですが、どの様にやったらいいか分かりません。レコードオープンまでは行ったのですが…。ご教授お願いします。
813デフォルトの名無しさん:2005/03/24(木) 18:47:34
Text1.Text = rs(0)
814809:2005/03/24(木) 19:45:47
>>810 >>811
下手に出てたら調子に乗りやがってこの野郎ぶっとばすぞ!

なんつってー、自己解決しました。
815デフォルトの名無しさん:2005/03/24(木) 20:48:55
VB6でMHTファイルをHTMLファイルに変換したいのですが、
どうすればできますか?教えてくださいませ。
816デフォルトの名無しさん:2005/03/24(木) 21:32:23
レスをくれた方ごめんなさい。可変長文字列にしてもアプリケーションエラーは発生しました。
ポインタ先の文字列取得は lstrcpyA と lstrlenA で行うことにします
RtlMovememory だときっちり48文字取得するのですね。つまりポインタ先の文字列長が15文字でも
Lengthに48と指定すればNULLより先の未確定エリアを参照してしまいます。そこでタイミングが悪い
とアクセス違反が起きるのではないかと……いうのが私なりの結論です。これで顧客は納得してくれ
るでしょうか?
817デフォルトの名無しさん:2005/03/24(木) 21:33:22

>>805
818デフォルトの名無しさん:2005/03/24(木) 22:18:36
>>816
オーバーランしたら怒られるわな。
memcpyとstrcpyの違いを理解してないで作るとデバッグが辛いぞ。
オーバーランとアンダーランに起因するバグって原因探るの面倒だから、知ってる人に違いを聞いて
基礎知識をしっかり身につけてから作業進めたほうがいいぞ。
あと、MBCSのポインタがわかってんならSysAllocStringByteLen使ったほうがいいかもしれんね。
819デフォルトの名無しさん:2005/03/24(木) 22:51:09
>>816
もう1つ付け加えると

>RtlMovememory だときっちり48文字取得するのですね。つまりポインタ先の文字列長が15文字でも
>Lengthに48と指定すればNULLより先の未確定エリアを参照してしまいます。そこでタイミングが悪い
>とアクセス違反が起きるのではないかと……いうのが私なりの結論です。これで顧客は納得してくれ
>るでしょうか?

これは正解だけど(タイミングという言葉は気になるが)、そのまま顧客に伝えたら落胆するか
ブチ切れるかのどっちかだぞ。
データを取得する時に領域外参照する場合があったって程度にぼかしとけ。
820デフォルトの名無しさん:2005/03/24(木) 23:03:25
ぞんざいな口調で偉そうなことを言う奴ってたいしたことないのは2chの法則なのかね?
>>819なんて大きなお世話だし。

>>805
なんかやってること根本的におかしい。

●なぜ「文字列をコピー」といいながらlstrcpyではなくRtlMoveMemoryなんて
耳慣れない関数を使うのか?

●なぜ、RtlMoveMemoryの「ソース」のバイト数を指定する引数に「デスティネーション」の
文字列の文字数を渡すのか?
821デフォルトの名無しさん:2005/03/24(木) 23:08:04
>>819
確かにタイミングは気になりますね。ただWindowsNT4.0(SP5,SP6a)だと百数回の確率で発生して、
Windows2000(SP4)だと発生していないのが未だに不明でそれをどう表現すればよいか迷ったのです
ちなみに顧客もプログラマなのです。そこに出向しているだけなのです
822デフォルトの名無しさん:2005/03/24(木) 23:16:51
>>820
偉そうな文書くやつほど無能という法則はその通りだね。
823デフォルトの名無しさん:2005/03/25(金) 10:40:00
vb6の質問です。

vbでC言語のunionのようなことをしたいのですが何か良い方法はありますか?

内容は、INTをBYTE、STRINGをBYTE、DOUBLEをBYTEまたその逆をする方法が
ありましたら教えてください。

 よろしくお願いします。

824デフォルトの名無しさん:2005/03/25(金) 11:32:16
ほしゅ
825デフォルトの名無しさん:2005/03/25(金) 12:14:41
>>823
ない。
826デフォルトの名無しさん:2005/03/25(金) 12:30:16
>>823
共用体はないけど、クラス使えばおなじようなことは実現できるよ。
827デフォルトの名無しさん:2005/03/25(金) 13:46:32
VB6からAというサーバにあるPostgresSQL のデータベースにアクセスしようとしています

ADO(2.8か2.7)+VB6 SP6を使用して接続を行おうとしたのですが

ACCESSからODBCで接続は出来ました
とkろがVBから接続を行おうとしてもダメでした
ダメな理由は

エラー3706 プロバイダが見つかりません
プロバイダが正しくインストールされていない可能性があります
でした

接続文字列は

"provider=odbc;dns=test_server;uid=testuser1;pwd=0"

サーバ名やユーザID、パスワードはACCESSで接続に成功した時と同じものなので間違いありません

ODBCで接続を行いたいのですが、このプロバイダ名では駄目なのでしょうか
もしくはPostgresSQLの専用プロバイダがあるのでそちらでもいいのですが
どちらにしろ、プロバイダ名の設定がわからないのです

下手な文章で申し訳ないのですが、よろしくお願い致します。

828デフォルトの名無しさん:2005/03/25(金) 14:40:02
ピクチャボックスに線を引く際には、Picture1.line (x,y)-(x,y)と言った形で線を書きますよね?
この一度引いた線を、削除する際にはどうすればよろしいでしょうか?
829デフォルトの名無しさん:2005/03/25(金) 14:43:57
内容を全部消してPicture1.line (x,y)-(x,y)を描く直前まで描き直す
830デフォルトの名無しさん:2005/03/25(金) 14:46:31
>>823
ユーザー定義型とLSetの組み合わせで似たようなことが出来ます。

http://www3.plala.or.jp/sardonyx/smart/vb/var/4.html
831デフォルトの名無しさん:2005/03/25(金) 14:47:28
でもそうすると、他の線も全部消えてしまうんですよ。
縦軸の線のみ消して、横軸の線は残したいので、clsを使えず悩んでいるんです。
説明不足ですみません。
832デフォルトの名無しさん:2005/03/25(金) 14:51:00
>>827
「dns=〜」は「dsn=〜」じゃないの?
833デフォルトの名無しさん:2005/03/25(金) 14:53:28
>>831
ざっと思いつくのはこんな感じかな。

1) clsして再描画
2) lineを引く前の画像を取っておいてソレと差し替える
3) xorで書く
834833:2005/03/25(金) 14:56:48
もう一個思いついた。
4)lineコントロールを使う。
835831:2005/03/25(金) 14:58:55
>>833
4)の意味を具体的に教えていただけません?
836デフォルトの名無しさん:2005/03/25(金) 15:06:52
>>835
画像をpictureboxに描画していると仮定して、
・PictureBoxにlineコントロールをvisible=Falseで配置する。
・ラインを引きたくなったらvisibleプロパティをTrueにする。
・要らなくなったらvisibleをFalseにする。

質問が「lineコントロールって何?」と言う意味なら
ヘルプを参照して下さい。
837831:2005/03/25(金) 15:16:57
>>836
配置されたラインを隠したり表示したりさせるということですか。
ただこの場合、あらかじめ決まったパターンの線しか引けなくなりません?
作っているプログラムは、横軸の間隔をスライドバーで変更するものでして、
さらに一定間隔で太い区切り線を入れたり入れなかったりするものなのです。

コードを見ればお分かりいただけるかと思いますが、これだと別な線を引いても、スライドバーを移動させると一行目のpicture1.clsのせいで削除されてしまいます。
また、一行目のpicture1.clsを削除すると、一度引いた線が残ってしまうために、最終的に線だらけになってしまいます.そこで皆様の知恵をお借りしたいわけです。

スライダー部分のコード
Private Sub Slide_scroll()
Picture1.Cls
temp1 = Slide.SelStart
kankaku = temp1 * 120
Picture1.Line (xzahyo, 0)-(xzahyo, 500)
For hr(0) = 1 To 24 Step 1
xzahyo = hr(Index) * kankaku
Picture1.DrawWidth = 3
Picture1.Line (xzahyo, 0)-(xzahyo, 500)
Next
For min(0) = 1 To 1439 Step 1
xzahyo = kankaku / 60 * min(Index)
Picture1.DrawWidth = 1
Picture1.DrawStyle = 2
Picture1.Line (xzahyo, 0)-(xzahyo, 500)
Next
一定間隔の線を引くか否かのスイッチ、ON OFFで表示切替。コードはONにする部分
For minq(0) = 1 To 96 Step 1
xzahyo = kankaku / 4 * minq(Index)
Picture1.DrawWidth = 2
Picture1.Line (xzahyo, 0)-(xzahyo, 500)
Next
838デフォルトの名無しさん:2005/03/25(金) 15:19:26
小出しにするなボケ、知らん
839836:2005/03/25(金) 15:48:15
>>837
まず、もういっこPictureBox(picture2)を用意して、線を引く前の画像をコレに取っておく。
slider_scrollでclsの代わりに、picture2をpaintpictureでpicture1に上書きする。
そして、その上にlineで線を引く。
840831:2005/03/25(金) 16:05:03
>>839
どうもありがとうございました。
無事描画できました!大助かりです。

>>838
すいませんでした・・。
841デフォルトの名無しさん:2005/03/25(金) 19:06:58
>>832

( ; ゚Д゚)
・・・・やらかしてた・・・・・
何故動かなかったのか・・・
謎解けたり・・・

_| ̄|○

とりあえず つなげるようになったっす
ありがとうございました
842デフォルトの名無しさん:2005/03/25(金) 21:14:18
>>815
#vbの話じゃないような気も
webbrowserで開いたらなんとかなるのでは?
843デフォルトの名無しさん:2005/03/25(金) 21:45:23
Document.Body.innerHTML
で一発だな。画像は別だが。
844デフォルトの名無しさん:2005/03/26(土) 10:20:36
スクロールバーの最大値を内容によって変えようしている。
だが、スクロールバーのMaxプロパティが、内容が多くなってくると途中でオーバーフローしていまう。(32657を超えた)
つまり、Maxプロパティの型をlongにすれば解決する問題なのだが・・。
これってなんとかならないでつか。
845844:2005/03/26(土) 10:22:05
訂正
〜内容が多くなってくると途中でオーバーフローしていまう。(32657を超えた)

内容が多くなってくると途中でオーバーフローしていまう。(32767を超えた)

くだらないミススマソ
846デフォルトの名無しさん:2005/03/26(土) 14:07:20
>>844
なんか根本的に考え方が間違ってる気がするね。
スクロールバーってのは全体に対する割合をビジュアルに指定するUIであって
Maxってのはその分母。

分母に画面の解像度以上の値を指定したって意味ないでしょ?
どうせユーザーは[1/スクロールバーの高さ(幅)]より小さい分解能で
割合を指定できないんだから。
847844:2005/03/26(土) 14:44:27
では、内容に合わせてピクチャボックスのスクロールをするのはどうやるんでつか?
848デフォルトの名無しさん:2005/03/26(土) 14:47:54
どうやるって小学校4年生の算数でしょ。。。
849デフォルトの名無しさん:2005/03/26(土) 14:52:19
バーで移動、バーの上下でページ移動、矢印で±移動で十分だな
850デフォルトの名無しさん:2005/03/26(土) 17:11:00
>>844
32767を越えないようにスクロールの幅を変えれば良い
851844:2005/03/26(土) 17:35:38
>>850
トンクス。単純な問題ですた。
お騒がせスマソ...
852デフォルトの名無しさん:2005/03/26(土) 19:33:20
初心者の質問です

VB6(SP6)でform1,form2,form3が表示するようにしてありまして、
それぞれのフォームにcommand1ボタンが一つ、text1ボックスが一つあります。

それぞれのformには、
private sub command1_crick()
Do
text1.text = Now
 Doevents
loop
end sub
とコードがかかれています。

各formのcommandボタンを押すと、
最後に押したformのみ現在の時間が表示されて、
残りの2つは時間がとまったままになってしまいます。

3つのformともリアルタイムで現在時間を表示するようにしたいのです。
どうか、よろしくご教授ください。
853デフォルトの名無しさん:2005/03/26(土) 19:34:53
>>852
何故素直にTimerコントロール使わないんだ?
854852:2005/03/26(土) 19:43:01
>853さん
すばやいレスありがとうございます。

実をいうと、ある時間になったら、イベントを発生させるプログラムを
複数のformで作りたいのです。
Timerでは時間誤差が多すぎて、私には使えなかったもので・・・
855デフォルトの名無しさん:2005/03/26(土) 19:48:39
>>854
誤差はどれくらいの許容?
50ms以下などの世界なら他のやり方だし
大概はTimerコントロールを0.1秒おき(これでも細かすぎるが)に回して
その中で時間を比べる
856852:2005/03/26(土) 20:02:34
>>855
1時間とかのスパンで誤差を1秒以内にしたいのです
857デフォルトの名無しさん:2005/03/26(土) 20:07:19
>>856
なら855の下の方法でOKだな
858852:2005/03/26(土) 20:15:03
もしかしたら、Timer1を貼り付けて、100msで設定して

Dim finaltime as date
finaltime = 日時の設定

private sub command1_crick()
Timer1.Enabled = True
end sub

Private Sub Timer1_Timer()
if finaltime = Now then イベント
end sub

とすれば・・・!
859デフォルトの名無しさん:2005/03/26(土) 20:18:00
>>858
それダケじゃだめだけどな。
860852:2005/03/26(土) 20:44:27
>>859
3つのformにtext2ボックスを追加して、

Dim finaltime As Date

Private Sub Command1_Click()
Timer1.Enabled = True
finaltime = DateAdd("s", 10, Now)
End Sub

Private Sub Timer1_timer()
Text1.Text = Now
If finaltime = Now Then
Text2.Text = "OK"
Timer1.Enabled = False
End If
End Sub

というのを走らせたら、3つのformともリアルタイムで
現在の時間を表示して、10病後にOKの表示がでました。
なんとかなりそうです。
どうもありがとうございました。
861デフォルトの名無しさん:2005/03/27(日) 01:31:18
すみませんが、ただでおしえてください。

MSCommで232Cの受信ソフトを作ってるんですがデータが2進(ビット)です。
これを受信ソフトで10進に変換する方法が知りたいです。
どうやらエクセルには関数があるみたいですが、VBには見当たりません。

InputLenは16ビット指定で

buffer = MSComm1.Input
textbox1.text = buffer

とすると、とうぜん"0110010110001000"等とテキストボックスに表示されます。
これを10進にしたいんです。せめて特定のビットが1か0かを判断する方法
がわかると助かるんですが(ANDではうまくいきませんでした・・)。
862デフォルトの名無しさん:2005/03/27(日) 02:05:57
861です。
すんません、ふつうにできますた・・。
863デフォルトの名無しさん:2005/03/27(日) 08:15:16
>>862
えー、どうやったの?ただで教えて。
864デフォルトの名無しさん:2005/03/27(日) 16:30:43
VB6の質問なんだけど誰か教えて栗!!

エクセルファイルに書きむ処理で途中で改行させたいんだけど、どうすればよい?
例えば、セルAにある程度書き込んだら次にセルBに移るみたいにしたい。
えらい人教えて。
865デフォルトの名無しさん:2005/03/27(日) 18:06:07
>>864
それは改行とは言わない
866デフォルトの名無しさん:2005/03/27(日) 18:27:36
>>864
それってエクセルのブックに直書きってこと?

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

Set xlApp = New Excel.Application
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Sheets(1)

みたいにするってこと?
867デフォルトの名無しさん:2005/03/27(日) 21:07:30
VB固有の問題じゃなくてユーザーインターフェースの問題なんですが、
皆さんどうしているかとお尋ねします。

ユーザーに選択させる場合、チェックボックスとオプション(ラジオ)ボタン
の使い分けはどのような基準で行っていますか?

たとえば配偶者の有無を選択させたいとき、「有」「無」二つのオプション
ボタンを用意するか、それとも「配偶者有り」というチェックボックスを
一つ用意する、の二つの方法があります。どちらが良いと思いますか?皆さんは
どちらをお使いですか?

また、いろんなウェブページを読んでみたのですが、このへんのデザインに
ついて論じられたページを見つけることができませんでした。もし、WIndows
プログラムのユーザーインターフェースについて手短にまとめられたウェブ
ページや書籍がありましたら、お教えいただきたいとも思います。
868デフォルトの名無しさん:2005/03/27(日) 22:23:02
ラジオボタンはどれか一つだけ選択する場合、
チェックボックスは複数選択可の場合に使用
するんじゃないの?
ユーザーインターフェースについてはwindowsをデザインした
人が書いた本があるというのをどっかのホームページで
見た覚えがある。でも、確か絶版だったと思うし、本の題名も
忘れた。
869デフォルトの名無しさん:2005/03/27(日) 22:23:44
VB6でメモリエディタ見たいにメモリのアドレスの値を変えたいのですが
メモリのアドレスにアクセスする関数があったら教えていただきたいです。
870868:2005/03/27(日) 22:26:28
>>867
忘れたと思ったら見つけた。
ttp://www.int21.co.jp/pcdn/vb/howto/vbov.html
871868:2005/03/27(日) 22:37:22
windowsデザインした人じゃなくてvb作った人みたいだな。
嘘ついてスマソ
872867:2005/03/27(日) 23:13:47
>>868さん
その原則ではどうもしっくりこない局面があるんですよ。

たとえば、IE6.0の「インターネットオプション」の「プライバシー」
タブに「ポップアップをブロックする」というチェックボックスが
あります。この選択は「する」か「しない」かですから、上記の原則
にのっとるなら、本来はオプションボタンが妥当なはずです。でも、
Microsoftはチェックボックスを使っていますね。この実装は、なんと
なく了解できるんですよ。

ご紹介の「Windowsユーザーインターフェイスデザインガイド」は昔
読んだことがあるのですが、Microsoftが自分の原則を曲げて実装
するのはよくある話です。ですから、原点に立ち返るというか、
そもそもどのような原則でHCIを考えたらよいのか、というのが私の
疑問でした。

スレ違いだったでしょうかね。
873デフォルトの名無しさん:2005/03/28(月) 00:07:07
GUI規約みたいなスレなかったっけ?
874デフォルトの名無しさん:2005/03/28(月) 00:13:55
原則とそれを実現するためのガイドラインは区別したほうがいいのでは?

原則、というか判断基準は、こういうと身も蓋もないかもしれないが
「ユーザーにとってその方法の方がより直観的に解かり易いかどうか」。

ガイドラインってのは、こういう場合一般的にこうすると原則に沿えますよ、
ってことでしょ。一般論だから当然例外はある。

もちろんガイドラインってフールプルーフ、つまりどちらが原則に沿うか
自分で判断できない人のアンチョコだったり、自己中な俺様UIの乱立を
防ぐものだったりするんだろうけど。
875デフォルトの名無しさん:2005/03/28(月) 00:25:32
流行ってのもあるよな
基地外のようなキモい絵のスプラッシュとか外観色使いとか小さくて押し辛い_□×とか
876デフォルトの名無しさん:2005/03/28(月) 00:46:26
>>867の例ならチェックボックス使うかな。
基本は無で、人によっては有って事で。
877デフォルトの名無しさん:2005/03/28(月) 01:40:24
メッセージボックスでOK押したあとに
スリープさせてその間マウスポインタを砂時計にする処理で
マウスポインタが砂時計になったりならなかったり(ほとんどならない)
するのですが何故でしょうか。
必ず砂時計にする方法はありませんかね。

フォームにCommand1が一個の再現ケース
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Command1_Click()
        MsgBox "foo"
        Me.MousePointer = vbHourglass
        Sleep 3 * 1000
        Me.MousePointer = vbNormal
End Sub
878877:2005/03/28(月) 01:48:00
>>877
マウスでOKクリックしないで
キーボードで操作するときは問題ないみたいです。
879デフォルトの名無しさん:2005/03/28(月) 01:52:18
Sleepする前にDoEventsしたら?
880デフォルトの名無しさん:2005/03/28(月) 01:53:21
>>877
Sleep 3 * 1000
の間にDoEventsをもぐりこませる。ループでまわすしかないかなぁ・・・
881877:2005/03/28(月) 02:20:51
>>879
>>880
ありがとうございます。
これ以外なさそうであれば880さんの方式でいこうかと思います。
本題とはずれますが、このループの間にフォームを閉じると
フォームのマウスポインターを後からいじるので(?)プロセスが残りますよね。
どうすればいいかご存知でしょうか。
882デフォルトの名無しさん:2005/03/28(月) 07:09:40
>>881
残りません。
883デフォルトの名無しさん:2005/03/28(月) 09:09:22
Private Sub Form_Load()
Dim i As Double: AutoRedraw = True: FontSize = 30
ScaleMode = vbPixels: i = Timer: Show
Do While Not Abs(Timer - i) > 0.4: DoEvents: Loop
Print Chr(-32054): i = Timer
Do While Not Abs(Timer - i) > 0.4: DoEvents: Loop
CurrentX = 40: CurrentY = 0: Print Chr(-32023)
i = Timer
Do While Not Abs(Timer - i) > 0.4: DoEvents: Loop
CurrentX = 73: CurrentY = 0: Print Chr(-32037)
End Sub
884デフォルトの名無しさん:2005/03/28(月) 11:48:56
ど忘れしたんで教えてください。
親EXEから子EXEを立ちあげた時、子EXEの画面をモーダルモードで
開く方法、確かAPIであったとおもうんで、思い出させてくれませんか?
885デフォルトの名無しさん:2005/03/28(月) 11:50:32
同期か非同期かの違いのことか?
886デフォルトの名無しさん:2005/03/28(月) 11:54:22
ttp://dobon.net/vb/dotnet/process/openfile.html

'メモ帳を起動して終了まで待機する
Shell("notepad.exe", AppWinStyle.NormalFocus, True)
MsgBox("終了。")

[VB.NET]
System.Diagnostics.Process.Start("C:\test.txt")

[C#]
System.Diagnostics.Process.Start(@"C:\test.txt");

887877:2005/03/28(月) 13:34:03
>>882
>>883
そちらのソースでも試しましたが、
「ぬ」が表示された直後などでフォームを閉じるとフォームが再度ロードされますよね。
さらに、同じ処理をCommand1_Click()内に移して同様に
「ぬ」が表示された直後などでフォームを閉じれば見た目には
終了してプロセスだけが残ります。
いかがにすればよいでしょう。
888 ◆m3eoQIlU/U :2005/03/28(月) 13:48:28
KeyPressイベントで、入力されたのがEnterキーなら
フォーカスを移動するという動作をさせたいのですが
EnterキーはASCIIコードで表せないっぽいのです。
この場合どういう方法を取れば上手くいきましょうや?
889デフォルトの名無しさん:2005/03/28(月) 14:22:24
>>887
Command1_Click()の先頭で細工(実行中かどうかを判定)するしかないのでは?
890877:2005/03/28(月) 15:05:47
>>889
フォームがあるかないかとか判定するイメージですかね。
私にはむずかしそうなので
とりあえずフォームのアンロードで死ぬようにしようと思いますが
なにか問題ありそうでしょうか。

Private Sub Form_Unload(Cancel As Integer)
    End
End Sub
891デフォルトの名無しさん:2005/03/28(月) 15:14:54
>>890
サブクラス化とかDLLのインポートをやってなければ
そう気にすることも無いと思う。
念のためにアプリを終了した後にタスクマネージャで
プロセスが残っていないか確認した方がいいと思うよ。
892877:2005/03/28(月) 15:42:30
>>891
ありがとうございます。その方向でやってみます。

ところで
>>877
の最初の問題は
Me.MousePointer = vbHourglassの処理が
完全に終わる前に制御を戻してくるところにあったように思われますが
なかなか痒いところに手が届かないものですね。
893デフォルトの名無しさん:2005/03/28(月) 16:57:09
>>892
そうだね。
894デフォルトの名無しさん:2005/03/28(月) 19:13:59
>>888
vbKeyReturn
895877:2005/03/28(月) 19:37:36
さて、いまさら大笑いなのですが、
実際にインプリメントしてみて気が付きました。
#いろいろ議論した挙句で申し訳ないですが
DoEventsを入れることで、ユーザーがアプリケーションを操作できるようになってしまい、
スリープを入れた意味が失われてしまいました。

果たして
>>877
に立ち返ってなにか方策はありませんでしょうか。
メッセージボックスでOKをクリックした後に
ユーザがアプリケーションを操作できず、
マウスポインタが砂時計になるような。
896 ◆m3eoQIlU/U :2005/03/28(月) 19:51:05
>>894
上手くいきました、ありがとうございます。
vbKeyReturn でググったらそのものズバリの
ページも見つかりました。
897デフォルトの名無しさん:2005/03/28(月) 20:37:43
898877:2005/03/28(月) 21:01:04
>>897
ありがとうございます。
そちらでの結論としても
DoEventsを入れましょうということのようですが、
>ユーザがアプリケーションを操作できず
というのは無理そうですね。。。

と、ここまで書いていてちょっと思いついて試してみたら次のコードで
うまく動作しました。
しかし端末スペックなど環境に依存するかもしれず心配ですが、
どうでしょうね。手がなければこれで進めようとも思いますが。(心配だ)

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Command1_Click()
        Me.MousePointer = vbHourglass 'ここを一ステップ前に
        MsgBox "foo"
        Sleep 3 * 1000
        Me.MousePointer = vbNormal
End Sub
899877:2005/03/28(月) 21:11:00
>>898
自己レスでごめんなさい。
実験したところ、どうやらメッセージボックスでは必ずマウスポインタは矢印に戻るようです。
つまり、
Me.MousePointer = vbHourglassが早く処理されて
メッセージボックス表示以前に砂時計になってしまっても、
表示上は気が付かない。
Me.MousePointer = vbHourglassが遅く処理されても
メッセージボックスをいじる間には砂時計になっている。
ということで今回の件に限定すれば解決できそうです。

お騒がせしました。 & ありがとうございました。
900デフォルトの名無しさん:2005/03/28(月) 21:14:09
>>884
忘れたのと分からないのを混同しないでください。
901デフォルトの名無しさん:2005/03/28(月) 21:53:53
Private Sub Form_Load()
  Dim i As Double: Show: ScaleMode = vbPixels: FontSize = 30
  Do: DoEvents: ForeColor = QBColor(Rnd * 15)
  CurrentX = 0: CurrentY = 0: i = Timer
  Do While Not Abs(Timer - i) > 0.05: DoEvents: Loop
  Print Chr(-32054): i = Timer: ForeColor = QBColor(Rnd * 15)
  Do While Not Abs(Timer - i) > 0.05: DoEvents: Loop
  CurrentX = 40: CurrentY = 0: Print Chr(-32023)
  i = Timer: ForeColor = QBColor(Rnd * 15)
  Do While Not Abs(Timer - i) > 0.05: DoEvents: Loop
  CurrentX = 73: CurrentY = 0: Print Chr(-32037): Loop
End Sub
902877:2005/03/28(月) 21:55:29
#これで最後。

>>898でもダメパターンありました。
(原因は特定できませんが)
さらに以下のようにおまじないをしてうまくいきました。
 Me.Enabled = False
 Screen.MousePointer = vbHourglass

これで気が付いたこと
>ユーザがアプリケーションを操作できず
→これEnabled = Falseで良かっただけでしたね。

日に日に衰えている気分です。
もう、次につまづいたらUIを変更します。
903デフォルトの名無しさん:2005/03/29(火) 00:33:52
904デフォルトの名無しさん:2005/03/29(火) 13:09:50
複数のテキストボックスを並べた入力フォームを作成しているのですが
フォーカス移動した際に移動先のテキストボックスに表示されている
文字列が選択された状態にするにはどうすれば良いでしょうか?
905デフォルトの名無しさん:2005/03/29(火) 14:00:13
>>904
う〜ん。
ぱっと思いついたもの
移動先のテキストボックスがtxtBoxとして、gotfocusのところに
txtBox.SelStart = 0
txtBox.SelLength = Len(txtBox.Text)
じゃ、駄目かなぁ。
906904:2005/03/29(火) 14:15:38
>>905
出来ました、ありがとうございます。
907デフォルトの名無しさん:2005/03/29(火) 14:39:37
開発環境 Win2K 、VB6.0
UIから入力された文字をVBReportを用いて印刷しています。
帳票には、正方形のマス目があり一文字が1マスに印刷されます。
濁点も一マスに出力する必要があります。

しかし、例えば
UIにて「が」と入力すると帳票には「か」と「゛」
がそれぞれ1マスずつに出力させたいのですが
「が」と1マスに印刷されてしまいます。
「が」を「か」と「゛」に分ける際には
皆さんはどのような方法を用いているのでしょうか?
それとも、上記の文字編集を行うにはUIからの入力の際には
カナキーからに限定となるのでしょうか?
908デフォルトの名無しさん:2005/03/29(火) 15:06:49
if いまの文字=「が」 then
 いまの文字=「か」
 次に文字を追加 「゛」
end if
こんなの?
909デフォルトの名無しさん:2005/03/29(火) 15:20:40
907です。
>>908
ご返答ありがとうございます。

「が」にかかわらず、全ての濁音で文字列編集したいのです。

if 今の文字列 =「濁点ありの文字 (例:ば)」 then
編集後文字列 = 「濁点をとった文字(例:は)] & "゛"
end if

こんな感じのことをしたいです。
910デフォルトの名無しさん:2005/03/29(火) 15:25:36
>>909
同様に全部やれば?
911デフォルトの名無しさん:2005/03/29(火) 15:58:25
>>909
配列使ってやれば?
912デフォルトの名無しさん:2005/03/29(火) 18:19:06
>>909
StrConv関数使ってやれば?
913デフォルトの名無しさん:2005/03/29(火) 18:41:18
質問よろしいでしょうか?

現在、VB6.0で業務アプリを作っているのですが
VBからファイルをCDに焼きたいのです。

XPなら標準で焼き機能がついているので
なんとかできると思うのですが、今回はWINDOWS2000
なのです。

VBで処理することは不可能でしょうか?。。。

回答よろしくお願い致します。m(_ _)m
914デフォルトの名無しさん:2005/03/29(火) 18:42:44
不可能ではありません
915デフォルトの名無しさん:2005/03/29(火) 18:44:10
>>913
OCX買えば?
自作で焼くプログラム組むのはきついぞ
916デフォルトの名無しさん:2005/03/29(火) 19:03:49
そうですよね、、、
明日上司と相談してみることにします。。。
ありがとうございました。
(´・ω・)
917デフォルトの名無しさん:2005/03/29(火) 19:41:50
>>913
cdrecordみたいなコマンドラインで動作するのをshellか何かで呼んでやるのはどう?
918913:2005/03/29(火) 22:10:30
>>917
楽そうでいいですね
お客が焼きソフトが入ってるパソコンを買うなら
可能ですけどどうなんでしょう、

明日聞いてみます
919質問:2005/03/30(水) 12:06:00
あるコントロールにフォーカスがSetされているかを知る
プロパティとかは存在しますでしょうか?
920デフォルトの名無しさん:2005/03/30(水) 12:23:07
おしえてください。VBで作成するEXEをパラメタ式起動する仕組みで
作りたいのですが、どうすればよいですか?
921デフォルトの名無しさん:2005/03/30(水) 13:07:21
>>919
Form.ActiveControl?
922デフォルトの名無しさん:2005/03/30(水) 13:09:16
>>920
Command関数
923デフォルトの名無しさん:2005/03/30(水) 13:12:42
>>919
ないと思う。GotFocusとLostFocusイベントじゃいけないの?

>>920
起動したときのコマンドラインはCommand関数で取得することができます。
924デフォルトの名無しさん:2005/03/30(水) 13:15:02
既出でしたね。923は無視してください。
925920:2005/03/30(水) 14:01:16
助かりました。ありがとうございます。
926919:2005/03/30(水) 15:13:35
>>921
出来ました、ありがとうございます。
927質問:2005/03/30(水) 15:55:31
Form1からForm2.Showした際に
Form1上のText1.Textを
Form2上のLabel2.Captionに
送る方法を教えて下さい。

Form1 [コード]
  Form2.Show
  Label2.Caption = Text1.Text
↑ではエラーが出てしまいます。
928デフォルトの名無しさん:2005/03/30(水) 15:58:01
釣られないぞ
929デフォルトの名無しさん:2005/03/30(水) 16:07:38
>>927
じゃ俺が釣られまする…
form2.label2.caption = Text1.Text
ですよ。

ってかネタだよね?
930927:2005/03/30(水) 16:16:33
>>928,929
すみません、真面目に質問したのです。
参考書にはフォーム間での値のやり取りは
載っていなかったので…それはともかく
上手く動きました、ありがとうございます。
931デフォルトの名無しさん:2005/03/30(水) 18:08:22
Private Sub Text1_GotFocus()
  Text2.SetFocus
End Sub

Private Sub Text2_GotFocus()
  Text1.SetFocus
End Sub

ピコピコピコピコピコピコピコピコピコピ!!
932デフォルトの名無しさん:2005/03/30(水) 18:27:26
(´-`).。oO(春だなぁ…)
933デフォルトの名無しさん:2005/03/30(水) 21:17:06
↑おまえは一生冬www
934質問:2005/03/31(木) 09:05:31
VBプログラムからOutlookExpressを起動したいと考えています
 ・OutlookExpressのメッセージ作成フォームが
 ・宛先のメールアドレスが入力された状態で
 ・アクティブな状態で
起動されるにはどうすれば良いのでしょうか。

Private Sub cmdMail_Click()
Dim FuncRet As Variant
On Error Resume Next
FuncRet = Shell("c:\Program Files\Outlook Express\msimn.exe")
If FuncRet = 0 Then
MsgBox "メールソフトを起動出来ませんでした。"
End If
End Sub

↑をどう変えれば上手く行きますか?
935デフォルトの名無しさん:2005/03/31(木) 09:10:55
>>479
>>934
人にものを尋ねる態度じゃないな。
936デフォルトの名無しさん:2005/03/31(木) 09:12:34
>>934
google shellexecute mailto
937デフォルトの名無しさん:2005/03/31(木) 10:50:03
VB6を使ってアプリケーションの開発を行っているのですが、
作成したアプリケーションの処理速度を向上させるための
チューニングを行おうと思っています。(ソースの改造も含めて)
どのモジュールがどれぐらいの処理時間を費しているかという
プロファイルを取り、それを元にチューニングを行うロジックを
特定しようと思ったのですが、こう言ったプロファイル情報は
どのようにして採取すればよいのでしょうか?
938デフォルトの名無しさん:2005/03/31(木) 10:57:41
>>937
人にものを尋ねる態度じゃないな。
939デフォルトの名無しさん:2005/03/31(木) 11:03:12
>>937
自前でコード化
940デフォルトの名無しさん:2005/03/31(木) 11:20:12
>>938
俺のマネをしたようだが君のは見当違い。
941デフォルトの名無しさん:2005/03/31(木) 11:43:44
質問させて頂いても宜しいでしょうか?
TextBoxから金額の入力を受け付ける処理なんですが
…えーと、お手元にリアル電卓が有ればそれを御覧下さい
その電卓みたいな入力方法を再現したいのです。
標準の関数で用意されていても良さそうなものですが
見当たりません…どうか御助力願います。
なにとぞよろしくおねがいいたします。
942デフォルトの名無しさん:2005/03/31(木) 11:45:52
>>941
TextBoxを使わない方向で作ればいいじゃないか
943941:2005/03/31(木) 12:07:45
>>942
申し訳ありません、TextBoxを使わない方向
というのが分かりません。リアル電卓的な
入力を実現するコントロールが存在するという
ことでしょうか?それとも、Format関数を使って
一括変換するということでしょうか?
後者の方法の場合、操作感が求めるものと全く
違ってしまうので避けたいと考えています。
944デフォルトの名無しさん:2005/03/31(木) 12:16:56
>>943
ピクチャーボックスでもなんでも使って自作すりゃいいでしょ?
945デフォルトの名無しさん:2005/03/31(木) 12:18:26
フォームに「テンキーコントロール」を貼り付けて入力させたいのか?
「電卓InputBox関数」が欲しいのか?

どちらにしろ、自分で作れ。
946941:2005/03/31(木) 12:27:09
ウハ!とんだ書き間違いをしておりました
入力そのものはキーボードで行います
TextBoxのカーソル位置と表示法をリアル電卓
的に再現したいというつもりだったのです。
恐らく>945氏の仰る「電卓InputBox関数」
というモノが求めるものだと思います。
ググって探してみます、本当に申し訳あり
ません…
947デフォルトの名無しさん:2005/03/31(木) 12:40:58
……電卓にカーソルなんてあったっけ?
948デフォルトの名無しさん:2005/03/31(木) 12:43:52
>>939
それは、VBもしくは、Windows上で作ったプログラムのモジュール単位での
実行時間のプロファイルを採取する仕組みが標準では存在しないという事ですか?
Unix系だと、コンパイル、リンク時にプロファイルを採取する為のオプションを付けて
ロードモジュールを作成し、実行すると、結構詳しいデータが取れるんですが。
949941:2005/03/31(木) 12:53:36
>947
入力は常に最下位桁でのみ受け付けて
途中の桁の値を書き換えたり挿入したり
出来無いってのをやりたいのです。


InputBox関数はちょっと違ったようです。
数字の表示はあくまでもTextBox上にされるように
したいので…KeyPressイベントでIf文を使ってやる
しかないようですね。スレ汚し御詫び申し上げます。
950デフォルトの名無しさん:2005/03/31(木) 12:58:21
プロセスAのメモリ領域から、アドレスXの値を変数に格納したいのですが
どのようにすれば実現できるでしょうか?
951デフォルトの名無しさん:2005/03/31(木) 13:03:39
>>950
するな。
952デフォルトの名無しさん:2005/03/31(木) 13:18:55
>>949
常に最後の文字の後ろにカーソルがいくように作る。
TextBox.SelStart
TextBox.SelLength
953デフォルトの名無しさん:2005/03/31(木) 14:55:20
>>937
誰かにレビューしてもらって見当つけて直すのが効率的では?
ループ
ネットワークへの接続
SQL
ファイル操作
描画
そんなところを中心に
954941:2005/03/31(木) 15:12:57
>>952
ありがとうございます
参考にさせて頂きます
955デフォルトの名無しさん:2005/03/31(木) 15:29:33
Fomat関数で、小数点以下の桁がない場合だけ小数点を表示しない書式はありますか?
場合分けするしかないですか?
956デフォルトの名無しさん:2005/03/31(木) 15:30:20
>>953
レスTHXです。
その「誰かにレビューしてもらって見当をつける」と言う部分を、
定量的に計測する方法がVBもしくは、Windowsに備わって
いるのであれば、それを利用してあたりをつけようかなと思った
訳です。
957デフォルトの名無しさん:2005/03/31(木) 18:19:33
vbsでoracleにアクセスするスクリプトを作りたいのですが
こういう場合はどういうミドルウェアを使うのが常套手段ですか?
oo4oですか?
958デフォルトの名無しさん:2005/03/31(木) 19:20:47
>>956
いいたいことがまだ伝わらないようですな
959デフォルトの名無しさん:2005/03/31(木) 19:20:59
VB6SP5です。
クラスモジュールでコンストラクタというか、プロパティをプライベートの状態
で初期値設定するのは、どのようにすればよいのでしょうか?
それと、プロシージャ内でstatic変数を宣言したときの初期化はどのようにする
のでしょうか?
お願いします。
960デフォルトの名無しさん:2005/03/31(木) 19:23:53
>>959
VBにクラスなんてないよ
961デフォルトの名無しさん:2005/03/31(木) 19:40:13
>>958
伝わっていないようです。
あ、もしかして、そういうことが調べたければ
そういうことを調べる仕組みを
自分で作れって言う意味ですか?

962デフォルトの名無しさん:2005/03/31(木) 19:58:21
>>959
Initialize
Static変数を任意の値で初期化したいってのはあきらめろ
963デフォルトの名無しさん:2005/03/31(木) 20:18:45
>>962
ありがとうございます。
staticをintegerで宣言した場合、初期値は0に設定されると言う事は保障され
ているのでしょうか?本当は-1からスタートしたかったのですが…。
964デフォルトの名無しさん:2005/03/31(木) 20:47:07
>>963
MSDNのStatic ステートメントの説明には
変数の初期化時には、数値変数は 0 に、可変長文字列は長さ
0 の文字列 ("") に初期化され、固定長文字列には 0 が埋められます。
と書かれている
965934:2005/03/31(木) 21:08:28
>>936
ググった先にそれらしい記事が有りました、
標準モジュールに記述される内容が難しくて
理解は出来ませんが動かすことは出来ました。
どうもありがとうございます。

>935
ご不快に思われたならお詫びします。                                              ごぬんなさい
後学の為にも、僕の書き込みの何所が
悪かったのかをご指摘下されば幸いです。
966デフォルトの名無しさん:2005/03/31(木) 21:14:42
>>965
随分右だな
967デフォルトの名無しさん:2005/03/31(木) 21:19:08
>>964
ありがとうございました。
クラスの方は、初期処理するメソッドを書こうと思います。
お世話になりました。
968958とは別人:2005/03/31(木) 22:27:56
>>961
自作するんじゃないかな。
でも結局遅い箇所がみつかってもそれが妥当な遅さか改善可能かは
分かる人が見極めるんだろうから、
最初から分かる人にレビューさせるのが手っ取り早い。
969デフォルトの名無しさん:2005/03/31(木) 22:33:00
>>965
スパムを送るのには使わせないよう頼みます。
970デフォルトの名無しさん:2005/03/31(木) 22:54:19
>>968
そうですか。
プログラムの種類にもよるかと思いますが、Unix系のOSで
プログラムの実行速度のチューニングを行う場合は、まず、
プロファイルを取って遅い箇所を探すっていうのがセオリー
なので、VB6やWindowsのプログラムに関してもそう言っ
た仕組みがあるのかなぁと思って質問していました。
こんなの。
ttp://docs.sun.com/app/docs/doc/805-7884/6j7dphvob?l=ja&a=view


971デフォルトの名無しさん:2005/03/31(木) 22:59:21
>>970
速度気にするプログラムはそもそもVB6のみでのプログラムはしない。
972デフォルトの名無しさん:2005/03/31(木) 23:03:03
>>971
学生か・・・

実際PGの仕事に就いたらそう単純でないことにすぐ気付くよ。
973デフォルトの名無しさん:2005/03/31(木) 23:04:40
>>972
給料泥棒は黙ってなさい。
974デフォルトの名無しさん:皇紀2665/04/01(金) 11:10:17
>>971
VBは速度を要求する場面に向かないけど、
だからといって速度をまったく気にしなくていい訳ではないよ。
975デフォルトの名無しさん:皇紀2665/04/01(金) 12:04:25
業務システムならアフォなSQL投げてたりそもそもストアドが糞だったりと
VB以外の部分がボトルネックになってるケースも多々。
ms単位の精度が要件となるなら、Win自体が向いてないような。
976デフォルトの名無しさん:皇紀2665/04/01(金) 12:12:26
>>970
VS 2005 Team System がリリースされるまで我慢するのじゃ。
かなり強力なプロファイラがついてくるよ。
977デフォルトの名無しさん:皇紀2665/04/01(金) 12:16:36
>>975
SQL Server にはプロファイラついてるね。
978デフォルトの名無しさん:皇紀2665/04/01(金) 16:56:29
Mscommを使い、シリアル通信の受信処理でDo Loopで回して規定バイト数受信したら
Do Loopを抜ける処理があるのですが、キャンセルボタンが押されてもDo Loop処理を終わらせたい場合は
どのようにしたら良いですか?
良い知恵をご教授ください。
979デフォルトの名無しさん:皇紀2665/04/01(金) 17:13:57
>>978
こんな感じ。 ほかにもあるかも。
キーが押されたらパブリック変数を変える。Loopの中でその変数をチェックする。
もしくは、APIでリアルタイムキースキャン。
980デフォルトの名無しさん:皇紀2665/04/01(金) 17:56:48
>>979
回答有難うございます。
データ受信処理をしている関数の中の数箇所にパブリック変数をおいて、
変数の値が変ったらexit subで処理を抜ける・・・ってことですよね?
やってみます。
981デフォルトの名無しさん:皇紀2665/04/01(金) 18:49:00
>>979の言うようにやるにはループの中にDoEventsをかます必要がある。

が、それ以前にループで待機する、ってやり方自体がどうかと思うぞ。
そういう処理をしたい場合は、考え方を変えた方がいいと思う。

■条件を満たすまで待機

ではなく、

■一定時間ごとに条件を満たしているかチェックして、満たしていたら
「何かいいこと」をする。あるいはイベントを生成する。
982978:皇紀2665/04/01(金) 19:04:21
>>981
なるほど勉強になります。
自分でも融通が利かない処理だなと反省しております。
これからの参考にさせてもらいます。
983972:int 2ch =05/04/01(金) 23:32:10
ま、俺が言いたいのは、開発言語を自由に選べる場面は
意外に少ないよ、ということでした。
984デフォルトの名無しさん:int 2ch =05/04/01(金) 23:36:41
>>983
低レベルな給料泥棒は黙ってろってば。
985デフォルトの名無しさん:int 2ch =05/04/02(土) 00:38:46
>>984
根拠は?
986デフォルトの名無しさん:int 2ch =05/04/02(土) 00:56:25
楊蓄才なあ。。
987デフォルトの名無しさん:int 2ch =05/04/02(土) 01:02:01
>>986
そういうことは質問に答えられたら書こうね。
988デフォルトの名無しさん:int 2ch =05/04/02(土) 09:36:33
ウチのチームにはVBしか使えないって人が多いです…
リーダーの人ゴメンナサイ、痒い所に手が届かなくてゴメンナサイ。
989デフォルトの名無しさん:int 2ch =05/04/02(土) 10:07:13
VB.NETすごくいいよ
990デフォルトの名無しさん:int 2ch =05/04/02(土) 10:17:59
>>988
しかも、VBしか使えないくせに、VBのスキルがたいしたことなかったりしない?
991デフォルトの名無しさん:int 2ch =05/04/02(土) 11:00:21
>>990
まさにそれ!
リーダーの人が日に日にやつれていく…
992デフォルトの名無しさん:int 2ch =05/04/02(土) 11:46:31
990、991
vbしか知らないとか人の批判してるけど、お前らも社会からみたらたいした事ないからw
管理する人&経営する人の大変さが解るぐらい早く大人になれよw
993デフォルトの名無しさん:int 2ch =05/04/02(土) 12:04:35
>>992
なんで怒られるの?なんでwとか使うの?
VBしか出来ないことは悪く言ってないよ。
VB出来るって言って給料受け取ってるのに
仕事仕上げられない人を批判したら駄目?
同じ給料しか貰ってないのに尻拭いさせられ
てるんだから文句の一つも言いたくなるよ。
自分が完璧じゃなかったら他人の批判も出来ない
というなら、誰も何も言えなくなっちゃうでしょう?
貴方がどれだけ凄い能力をお持ちか知らないけど、
よく知りもし無いくせに上から物を言わないでよ。
994デフォルトの名無しさん:int 2ch =05/04/02(土) 12:17:25
ここは釣堀じゃないんで
ついでに言えば使えないプログラマを非難する場所でもないんで
995デフォルトの名無しさん:int 2ch =05/04/02(土) 12:36:51
スレ違う毎日が過ぎてゆくけど
お互いの気持ちはいつも
そばに居るよ
996デフォルトの名無しさん:int 2ch =05/04/02(土) 12:38:33
>>995
まっ、喧嘩するほど仲がいいというやつですね。
997デフォルトの名無しさん:int 2ch =05/04/02(土) 12:42:45
>>992
根拠がどこにも書かれていないようですが?
998デフォルトの名無しさん:int 2ch =05/04/02(土) 12:48:38
だれか新スレたてれ!!
999:int 2ch =05/04/02(土) 12:55:52
新スレ立てますた。
1000鳥次第移動してください。
http://pc8.2ch.net/test/read.cgi/tech/1112414085/
1000:int 2ch =05/04/02(土) 12:59:21
Form1.Text1.Text = 1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。