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

このエントリーをはてなブックマークに追加
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の話題できるだけひかえる。

前スレ Part38 http://pc5.2ch.net/test/read.cgi/tech/1095673000/
2デフォルトの名無しさん:04/11/06 19:31:47
3デフォルトの名無しさん:04/11/06 19:32:15
4デフォルトの名無しさん:04/11/06 19:35:53
  ∧∧
 ( =゚-゚)< >1-3乙。今度こそ良スレになりますように。。。
5デフォルトの名無しさん:04/11/06 23:16:40
初めての方へ。

このスレは初心者の質問にも満足に答えられないスレです。
ご了承ください。

ただし、質問に対して回答が分からないくせに書き込む行為は
荒らし行為として取り締まられるので、徐々に治安はよくなって
いくと思われます。
6デフォルトの名無しさん:04/11/06 23:27:29
>5
オメデトウ!お前がアラシ第一号だ。

何でそんなに粘着するんだ?彼女をVBに取られたのか?(プ
7デフォルトの名無しさん:04/11/06 23:51:19
>>6

心得
五.荒らしは相手しない。
8デフォルトの名無しさん:04/11/07 03:18:29
質問する場所間違えたかも・・・
ここに質問した方がよかったかな。


シート1のA1〜A100まで値が入っていたとして、その中から
文字列で「AA」が入ったセルだけををシート2のB列にコピーしたいのですが
どうしてもうまくいきません、誰か助けてください
9デフォルトの名無しさん:04/11/07 03:20:38
VBAはVBAスレで。
マルチは氏ね。
10デフォルトの名無しさん:04/11/07 03:23:21
てか、このスレいつまで続けるの?
11デフォルトの名無しさん:04/11/07 03:25:24
VisualBasic6.0 sp6

timeSetEventを使ってタイマーにしているのですが、
コールバック関数内でDLLを呼び出そうとすると、
VB上では問題ないのですが実行ファイルにするとエラーになってしまいます。
DLLのバグかもと考えたのですが、ためしにコールバック関数内でMsgBox使ってみたら
これでもエラーになるようなのでコールバック関数内ではなにか呼び出すようなことはできないのでしょうか?
12デフォルトの名無しさん:04/11/07 03:28:06
次のテンプレに入れてくれよ
エラーが出た時はエラーメッセージをそのまま書く事
と。
13デフォルトの名無しさん:04/11/07 03:33:47
エラーというかOS(WinXP)の強制終了(Microsoftに送信しますか〜云々)がでます。
1411:04/11/07 03:34:53
↑11です。
15デフォルトの名無しさん:04/11/07 05:11:40
>>13
コールバックの中で他の関数呼び出すのはOKだったと思うよ。
他のマルチメディア系のAPIだと、コールバックの中で使えないAPIあったりするから、
もしかしたら、これもあるかもしれんけど。

コールバック関数の定義ミスか、初期化してないバッファへ書き込みに行ったかだとは思うけど、
VB上で正常に動作しているなら前者は無いと思うし、後者は実際のコード見ないとわからないし。

プロジェクトにデバッグシンボルを吐き出せるようにする設定があるから、それをオンにしてから
実行ファイルを作り直して、VCでデバッグ実行して確認したほうがいいかも。
たいがい一発で原因が分かるよ。
16デフォルトの名無しさん:04/11/07 08:15:34
>>11
timeSetEventは内部でスレッドを作成していて、
VBではスレッドを使用するものは無理か難しい。
だからそういうエラーになる。

というのが一般的な答え。
でも俺普通に使っていたような気がするんだけどなぁ。

ちょっと検索したらこんなのが見つかった。
DirectXを使うことで同等のことができる?
http://nothing.sh/diarylog/200101.htm
17デフォルトの名無しさん:04/11/07 08:59:00
DirectXを使うのあった。
http://www.koalanet.ne.jp/~akiya/vbtaste/vbp/

タイトル マルチメディアタイマーを用いたストップウォッチ
ファイル名 StpWch00.lzh
サイズ 9KB
更新日 2002/03/12
今後の予定 ひとまず完成版とさせて頂きます。
分類 VB6で作成したサンプル
機能 マルチメディアタイマーを使ってストップウォッチを組み立てます。
主な内容 API関数timeSetEvent、timeKillEvent、timeGetTimeの使い方。
イベントオブジェクトをDirectXforVBで待ち受ける方法。
注意 DirectX8 for VBを利用しています。
DirectX7 for VBで使用するには、一部修正する必要があります。
1811:04/11/07 12:37:57
DirectXでやってみました。
動くには動くんですが・・・どうもtimeSetEventをコールバックでやるよりも精度が悪いです。
具体的にはメトロノーム作っているのですが。
VBでは限界なんですかね。
19デフォルトの名無しさん:04/11/07 12:52:52
>15
「思う」じゃないだろ、「思う」じゃ。
「かもしれん」じゃないだろ「かもしれん」じゃ。

「わからないし」じゃないだろ「わからないし」じゃ。
20デフォルトの名無しさん:04/11/07 12:55:48
質問者と一緒に悩んでる回答者多すぎ。
分かる場合だけ回答して、分からない場合は静観する。
こんな簡単なルールが守れないか?
21デフォルトの名無しさん:04/11/07 13:01:28
>>20
それは自分で問題を解決した(しようとした)ことがない奴の意見としか思えん。
あるいは、ガッコの宿題的にとにかく問題が解決すればいいと思ってる奴か。

はっきりした回答じゃなくても、ちょっとした情報が問題の解決に
つながる場合だって往々にしてあるんだよ。
22デフォルトの名無しさん:04/11/07 13:02:32
>>21
馬鹿かお前
くだらん無駄情報は相手の時間のロスにしかならない
23デフォルトの名無しさん:04/11/07 13:03:22
無駄足を踏ませるのが目的なのだよ!!!
24デフォルトの名無しさん:04/11/07 13:03:38
だいいいち、グダグダ言ってねえで
ただ答えだけ教えろって何様のつもりだよ。
25デフォルトの名無しさん:04/11/07 13:04:34
>>24
答えだけ書けよ。無能。
26デフォルトの名無しさん:04/11/07 13:06:55
>>22
日曜の昼間からそんな風に面識もない奴煽って楽しいか?
まあ煽りじゃなくて本気かもしれないが。

いずれにしろかわいそうな人ですな。
27デフォルトの名無しさん:04/11/07 13:07:14
会社でも遠まわしで的を射ない中身の無い時間だけすぎてゆく会議が得意なんだろう
あ、餓鬼か無職かな?
28デフォルトの名無しさん:04/11/07 13:08:38
>>21
答えを書く気が無いのなら邪魔だから消えてくれないかな
29デフォルトの名無しさん:04/11/07 13:11:00
30デフォルトの名無しさん:04/11/07 13:11:42
「答え」ねえ。。
言葉の端に出自が現れますな。
31デフォルトの名無しさん:04/11/07 13:14:33
>>29
反論できなくなるとソレですか。
あなた、頭わるいですね。
32デフォルトの名無しさん:04/11/07 13:27:25
なぁ、オマエラ。「答えを書け書け君」よ、お前だ。

そんなにイヤなら会社辞めれば?
「SE」とか「PG」という職業に憧れて入ってみたらVBでさえ分からなくて
会社で叩かれ、恥をかいて捌け口を2ちゃんに求めるなんざ愚の骨頂。

頼むからリアルで勉強会でも開いて学び合うとか前向きになるか、
それでもなければ、他でやってくれ。ハッキリ言ってウザイ
33デフォルトの名無しさん:04/11/07 13:30:39
>>32
あなたは一生無職でいて下さい。
34デフォルトの名無しさん:04/11/07 13:33:10
>>32
雑談したければ、他のスレ行けばいいんじゃない?
質問があり、それに答える。それの何が悪い?
間違っている情報を相手に与える方が迷惑とは思わない?
35デフォルトの名無しさん:04/11/07 13:41:00
無駄足を踏ませるのが目的なのだよ!!!
36デフォルトの名無しさん:04/11/07 13:43:18
関係ない雑談は他所でやれ、と
関係ない雑談をするお馬鹿さん。

クレタ人のパラドクスみたいだな。
37デフォルトの名無しさん:04/11/07 13:50:09
>24
答え以外に低脳人からほしい情報はない。
38デフォルトの名無しさん:04/11/07 13:50:52
>36
いいえ
39デフォルトの名無しさん:04/11/07 13:51:21
>31
その前に反論してもらえるようなことを書けるように
なった方がいいよ。
40デフォルトの名無しさん:04/11/07 13:59:35
ほーら、こんなスレいらねーじゃん。
41デフォルトの名無しさん:04/11/07 14:00:40
>34
>>間違っている情報を相手に与える方が迷惑とは思わない?

オマエ・・・・






何様だ?
42デフォルトの名無しさん:04/11/07 14:02:20
以上>40の自作自演でした。


End Sub
'------------------------------------------------------------------
43デフォルトの名無しさん:04/11/07 15:07:38
次の質問ドゾー
できればマトモなヤツおながいします
44デフォルトの名無しさん:04/11/07 16:06:51
はじめまして。プログラム初心者です。
Cで作成されたAPIを呼び出す時の質問なのですが、
Date型の引数は、VB側ではどのようにすれば値を取得することが
できるのでしょうか?
よろしければ、どなたかご回答お願い致します。
環境:VB6(SP5)
45デフォルトの名無しさん:04/11/07 17:48:39
服の上から裸を見る方法があるなら是非教えてもらいたいですね
46デフォルトの名無しさん:04/11/07 17:58:16
>>44
CにはDate型なんてないよね。構造体かな?
自作DLLがらみの問題の時は、
DLL側の宣言部だけでも掲示してもらわないと
どうしようもないよ。
47デフォルトの名無しさん:04/11/07 18:16:06
>>46
申し訳ございません。私の勘違いでした。よく調べてみると
func_API(ByRef intTime As Long)という感じで、
intTimeにはUTCの時刻が返ってくるようなのですが、
これをVBのDATE型にするにはどのような方法があるのでしょうか?

48デフォルトの名無しさん:04/11/07 18:30:50
DateVaue()
49デフォルトの名無しさん:04/11/07 19:12:47
>>48
APIからは「1087440828」のような「経過秒」が返ってくるのですが、
DateValue()で変換することが可能なのでしょうか?
50デフォルトの名無しさん:04/11/07 19:30:27
>>49
Dim t As Long
t = 1087440828
Text1.Text = DateAdd("s", t, "1970/1/1")
UTFは知らん。
51デフォルトの名無しさん:04/11/07 19:48:29
いかん。UTFじゃなくUTCだよな。書き間違い。
日本国内決め撃ちでよければ、さらに9時間足せばいい。
52デフォルトの名無しさん:04/11/07 20:07:56
>>51
上記の方法でできました!
本当に有難うございます!!
53デフォルトの名無しさん:04/11/07 20:27:59
>>18
> DirectXでやってみました。
> 動くには動くんですが・・・どうもtimeSetEventをコールバックでやるよりも精度が悪いです。
> 具体的にはメトロノーム作っているのですが。
精度悪いんかなぁ。まあtimeSetEventよりも余計な処理が入っている分
少しは悪いとは思うが。メトロノームくらいなら十分な気がするんだけど。
どういうことをやって違いがわかった? もはや人間には違いがわかない世界だと思うんだけど。
タイマー内の処理が長すぎたりしない?ソースコードの修正で精度を改善できそうなきがする。

>>17のサンプルはtimeSetEvent(の別名MMTimeSet)のResolution(分解能)が
5になっているからそのせいじゃない?
あとtimeBeginPeriodで精度をあげることができるのでそれを使うとか。
54デフォルトの名無しさん:04/11/07 22:38:11
またバカしかいない
55デフォルトの名無しさん:04/11/07 22:41:37
クラスが作成できなくなりました。
プロジェクトを右クリック→追加でクラスが現れません。
どうすればいいですか?
56デフォルトの名無しさん:04/11/07 22:55:39
下痢でVBVBVBVBVBVBVB
ってうんこが出る
57デフォルトの名無しさん:04/11/07 23:21:18
数値から漢数字がほしいんですが
Format関数あたりで可能でしょうか?
Ex.
 1→一
 2→二
 3→三
58デフォルトの名無しさん:04/11/07 23:24:16
>>57
漢数字と一言で言われてもな
1〜10まででいいのか
壱千萬
十万
壱〇〇〇〇〇〇〇
様々な書き方あるわけだが。
59デフォルトの名無しさん:04/11/07 23:26:27
>>57
うわw
微妙なことしてんなーw
もちろん。わかんねw
6057:04/11/07 23:28:13
>>58
たしかにそうですね・・ほしいのは一から九までです。
Format関数ってけっこう奥深いというかいろいろできるようなので
もしかしたらと思ったんですが…
61デフォルトの名無しさん:04/11/07 23:34:42
>>60
For i = 1 To 10
Text1.Text = Text1.Text & Mid("一二三四五六七八九十", i, 1)
Next i
こんなもんでいいじゃん。配列でテーブル持ってもいいし。
62デフォルトの名無しさん:04/11/07 23:37:02
念のため
五.荒らしは相手しない。
6357:04/11/07 23:42:43
>>61
あ、それいただきますw
関数作るほどでもないし、どうせループで回してるので
無駄にコードの量増やさずにすみました。
ありがとうございます!
64デフォルトの名無しさん:04/11/07 23:56:39
>>61
横レスだがおまえすげえな!! 感動した
Select case で。。。とか書こうと思ったがやめてよかった
65デフォルトの名無しさん:04/11/07 23:58:50
>>64
おまえ呼ばわりされる覚えは無い。
66デフォルトの名無しさん:04/11/08 00:00:39
>>65
すまん
67デフォルトの名無しさん:04/11/08 00:02:08
だらだら書くけど、速度を考えるとSelect Caseの方が
いいかもしれない。(内部的にテーブルに変換される)
でも配列を使ったほうがもっと良いかな。
最適化の設定にもよりそうだけど。
実際にコンパイルしてやってみないと正確なことはわからんけど。
6857:04/11/08 00:10:15
>>64
何気ないところで(あ、かしこいな)って思う書き方ってありますよね。
すごく勉強になります。

>>67
なるほど・・
コードの見やすさは速度には比例しないんですよね…。
わかってはいるけどけっこうIIfとか多用しちゃってます。。
69デフォルトの名無しさん:04/11/08 00:25:58
おいおい、>>61みたいなアホなコードで感動しちゃだめだろ。
Chooseつかうでしょ、普通は。
70デフォルトの名無しさん:04/11/08 00:34:56
Chooseは結構遅いぞ。だからマイナー感が強い。
>61さんので充分イイと思うが。

マジレスごめん。
71デフォルトの名無しさん:04/11/08 00:36:15
Mid("一二三四五六七八九十", i, 1)
Choose(i, "一", "二", "三", "四", "五", "六", "七", "八", "九", "十")

・・・まあ、好みだな
1文字じゃなかったらChoose使うかもしれない
72デフォルトの名無しさん:04/11/08 00:39:18
Chooseはグリッドコントロールの項目名割り当てくらいしか
使い道が思い浮かばん。初期化には便利な方法だよな
73デフォルトの名無しさん:04/11/08 00:43:38
>>70
いや、確認したわけじゃないが内部の処理を想像すると(Cで実装することを
考えると)Mid$がChooseより遅いとは思えない。

Chooseって内部的には恐らくchar*の配列みたいなもんでしょ?
7473:04/11/08 00:44:56
(誤)遅いとは思えない。

(正)速いとは思えない。
75デフォルトの名無しさん:04/11/08 00:45:19
もう配列でいいじゃん
76sage:04/11/08 00:47:42
正直このような軽いロジックは何使おうが己のセンスでかまわんと思う
ちゃんと動けば
77デフォルトの名無しさん:04/11/08 00:47:48
>>73
内部はそうかもねー
呼び出す時は、Chooseの場合、多ければ多いほどスタック処理が増える事はわかるよね
7811:04/11/08 00:53:09
>>53
普通になんか遅いような・・・って思って計ると遅かったです。あとリズムがよれる。
もちろん1msにしてますが。
タイマー内の処理も簡単です。
timeSetEventだけ(VB上だと問題なく動くので)のときは問題なかったですし。
7973:04/11/08 00:57:38
>>77
スタック処理?
ハードコーディングされてるポインタ配列引くだけでしょ?
80デフォルトの名無しさん:04/11/08 01:01:23
>>79
Mid("一二三四五六七八九十", i, 1)
の場合、3個のデータを渡す

Choose(i, "一", "二", "三", "四", "五", "六", "七", "八", "九", "十")
の場合、11個のデータを渡す

Cがわかるなら作ってみてアセンブルリストを見よう。
8155:04/11/08 06:52:21
Win2000
VB6
SP6
です。分かる人いませんか?
82デフォルトの名無しさん:04/11/08 07:23:09
a = Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九")
Text1.Text = a(n)
83デフォルトの名無しさん:04/11/08 07:39:03
おー、配列ってArrayで作れるんだ。
84デフォルトの名無しさん:04/11/08 09:20:21
>>55
俺も同じ環境でメニューバーから「参照設定」が消えたり
ツールバーの「オブジェクトブラウザ」や「ツールボックス」とかが勝手に消えたりした。
アプリケーションの追加と削除でアプリケーションの修復をやったけど
完全には戻らなかった。
一旦VBをアンインストールしてから再インストールしたら元に戻ったよ。
85デフォルトの名無しさん:04/11/08 09:56:28
まあクラスモジュールを追加したいだけならメニューバーの
「プロジェクト」→「クラスモジュールの追加」でいいな。
86デフォルトの名無しさん:04/11/08 15:43:24
キーボードでピアノが弾けるギターフリークス的な音ゲー作ってるんですけど
落ちてきた文字に合わせてキー押すとGOODとか出したいんですけど
どうしたらいいですか?
87デフォルトの名無しさん:04/11/08 15:45:19
88デフォルトの名無しさん:04/11/08 21:33:30
>>86
これだけの情報で
どんな解答を望んでいるんだい?
89デフォルトの名無しさん:04/11/09 12:23:23
>>86はめるぽ
90デフォルトの名無しさん:04/11/09 15:31:46
VB6のエディタで、マウスのスクロールがなぜか使えません。
マイクロソフト純正だったら使えた記憶があるのですが・・・。
皆さん、どのようなマウスを使ってますか?

プログラム内容の質問でなくてごめんなさい。
91デフォルトの名無しさん:04/11/09 15:39:06
>90
もともと使えない。標準ではホイール対応していない。
お薦めフリーソフトは例えばコレ↓

どこでもホイール
ttp://www2k.biglobe.ne.jp/~araken/qdoko.htm
92デフォルトの名無しさん:04/11/09 17:01:16
ロジクールはスクロールできるよ
93デフォルトの名無しさん:04/11/09 17:06:15
そりゃあロジのマウスドライバ入れたからだべ
9490:04/11/09 18:15:46
>>91
ソフト入れました。
ありがとうございました!

>>92
もしや、記憶にあったのは、ロジクールかもしれませぬ・・・。
95デフォルトの名無しさん:04/11/09 23:49:29
画面をVBで作成し、重い処理をする部分をVCで作ったDLLに
したいのですが、そんなやり方を紹介しているいいサイトは
ありませんか?
96デフォルトの名無しさん:04/11/10 00:04:00
97デフォルトの名無しさん:04/11/10 00:22:36
>96
ありがとうございます。
98デフォルトの名無しさん:04/11/10 10:59:44
Frameの中にあるコントロールから 抜けるときに 発生するイベントってないでしょうか?

つまり、別のFrameに移動する場合とかです。
99デフォルトの名無しさん:04/11/10 11:08:08
>>95
でも、その考えって古くないか?
今それほどCのDLLだから早いって処理は無いと思うが。
ネイティブコンパイルしてる限りは。

>>98
無い。
100デフォルトの名無しさん:04/11/10 11:37:43
ラベルのキャプションや テキストボックスのテキストに ○にaとか使いたいのですが
どうすればいいでしょうか?

???? ← 出るかな?
101デフォルトの名無しさん:04/11/10 11:46:36
>>100
まず出ていない。w
外字だと思うので、外字とVBをキーワードにしてグーグル様にお願いしてみては?
事例は結構あると思いますよ。
102デフォルトの名無しさん:04/11/10 12:15:31
>>100
UNICODEのキャラクタじゃないのか?
それならばWebBrowserに食わせれば出る
103デフォルトの名無しさん:04/11/10 12:19:40
>>98
Form_LostFocus
他のアプリに移る時も出てしまうがな
104デフォルトの名無しさん:04/11/10 12:31:29
>>103
元質問者のはフレームだぞ。
ようは、特定のコンテナに属するコントロールからロストフォーカスしたときに
コンテナからのロスとフォーカスとして一括で扱えるか?って言うことだと思う。
10598:04/11/10 16:14:00
やはり無理そうですね。
106デフォルトの名無しさん:04/11/10 17:53:27
>>99
私もそう思う。
いろんな言語で書くとメンテナンス性が悪い。
107デフォルトの名無しさん:04/11/10 17:57:41
画像処理はDLLに渡すなあ
Cだと参考になるソースも豊富だし、速度が桁違い。
全部Cで作れよとつっこまれたら返す言葉は無いが。
10899:04/11/10 18:00:03
>>107
画像というか、大量のメモリー空間を操作したい処理の場合ですね。
VBだとどうしてもオブジェクト経由でしかメモリーにアクセスできないから。
その点はその通りと思います。

ただ、そういう場合VBでやるなら、コンポーネント買っちまうのが流儀だと思う。
109デフォルトの名無しさん:04/11/10 18:11:48
コード書く以前の問題で申し訳ないんですが
コード書く場所でマウスロール使えないんですか?
設定のところを一通り見てみたんですが、それらしき項目がなかったので皆さんどうしてるのか気になりました。
110デフォルトの名無しさん:04/11/10 18:16:56
MSCommについての質問です。
使用例にある

' 入力文字列用バッファ。
Dim Instring As String
' COM1 を使用します。
MSComm1.CommPort = 1
' 9600bps、パリティなし、データ長 8 ビット、およびストップ ビット長 1。
MSComm1.Settings = "9600,N,8,1"
' Input プロパティ使用時に、バッファ全体を読み取るように設定します。
MSComm1.InputLen = 0
' ポートを開きます。
MSComm1.PortOpen = True
' モデムに AT コマンドを送信します。
MSComm1.Output = "ATV1Q0" & Chr$(13) ' モデムが
' "OK" と応答するのを確認します。
' データがシリアル ポートに戻るのを待ちます。
Do
DoEvents
Buffer$ = Buffer$ & MSComm1.Input
Loop Until InStr(Buffer$, "OK" & vbCRLF)
' シリアル ポートで "OK" 応答データを読み取ります。
' シリアル ポートを閉じます。
MSComm1.PortOpen = False

を使うと、CPU使用率が100%になるのですが、そうならない方法はありますか?
できれば、プロシージャの外に処理を出したくないのですが。
111デフォルトの名無しさん:04/11/10 18:19:34
>>109
どこでもホイールというソフトでも入れたらいい
112デフォルトの名無しさん:04/11/10 18:24:11
>>110
100%がいやならばOnCommイベントで取るしかないが。
'Sleepするのは邪道?
113デフォルトの名無しさん:04/11/10 18:30:22
>>111
うおおお、こんな便利なソフトがあるなんて
助かりました。ありがとうございました。
114デフォルトの名無しさん:04/11/10 18:42:00
>>108
市販のコンポーネントを積極的に取り入れるのは賛成なんだけど、
仕事だと使えない場面も多いね。
〜分析というアプリを作る場合は特に。
115デフォルトの名無しさん:04/11/10 20:43:17
>>112
ありがとうございます
やってみます。
116デフォルトの名無しさん:04/11/10 21:00:00
>>110
ていうか、まずそのサンプルコピペして一丁あがりって根性を直すべきだと思う。
中身理解してないコードを何の恐怖もなく平気で使える感覚が怖い。

結構どこの会社にも>>110みたいな人っているみたいだけど。。
117デフォルトの名無しさん:04/11/10 21:03:09
>>116
うるさい
118デフォルトの名無しさん:04/11/10 21:07:38
>>116
雑談は他のスレでやれ。
プログラマー板のほうがいいんじゃないか?お前が原因で空気悪い。
119デフォルトの名無しさん:04/11/10 21:56:23
Shapeの貼り付けのことで質問なのですが
重なる順序を後から変更することは可能でしょうか
プロパティを見てみたのですが、それらしきものを見つけることが出来ませんでした。
120デフォルトの名無しさん:04/11/10 21:59:32
>>119
ZOrder で前後には動く
121デフォルトの名無しさん:04/11/10 22:09:17
>>120
ありがとうございました。
いろいろ実験してみようと思います。
122デフォルトの名無しさん:04/11/11 11:04:26

在庫管理のメニューから呼び出される「商品保守」のForm_Loadプロシージャの部分
なのですが、
Private Sub Form_Load()
dat商品.DatabaseName = strDbName
dat商品.RecordSource = "SELECT 商品コード,商品名,単価 FROM T_商品"
dbg商品.Columns(0).Caption = "コード"
dbg商品.Columns(1).Caption = "商品名"
dbg商品.Columns(2).Caption = "単価"
dbg商品.Columns(0).DataField = "商品コード"
dbg商品.Columns(1).DataField = "商品名"
dbg商品.Columns(2).DataField = "単価"
dbg商品.Columns(0).Width = 300
dbg商品.Columns(1).Width = 4050
dbg商品.Columns(2).Width = 1000
dbg商品.Columns(0).Alignment = dbgRight
dbg商品.Columns(1).Alignment = dbgLeft
dbg商品.Columns(2).Alignment = dbgRight
dbg商品.Columns(2).NumberFormat = "###,#0"
dat商品.Refresh
End Sub
これを実行すると「インデックスが有効範囲にありません」となってしまいます。
アドバイスをお願いします。
123デフォルトの名無しさん:04/11/11 11:08:01
Columns()は0〜2まで存在している事は確認済みか?
つーかどの行でエラーが出るのかくらい書け。
124122:04/11/11 11:29:46
お返事有難うございます。
エラーは
dbg商品.Columns(2).Caption = "単価"
のあたりから出ます。Columns()が0〜2まで存在する事を確認するにはどうすれば
良いのでしょうか?
T_商品というテーブルには 商品コード、商品名、単価のカラムがあることは
確認しています。
125デフォルトの名無しさん:04/11/11 11:51:47
>>124
123じゃないが、問題はDBのテーブルじゃなく、多分使ってるであろうDBグリッド側です。
そっちのデザイン上、DBグリッドのカラムはどうなっていますか?

あと、実際にDBのカラムが参照されるのは最後のリフレッシュです。
126122:04/11/11 11:57:17
>>125
御返事ありがとうございます。
コントロールを張りつける画面ではDBグリッドカラムが二つしかない状態です。
これが原因なのですね。色々とデザインの画面をさわってみたのですが、
DBグリッドのカラムを増やすにはどうすれば良いのでしょうか。
127デフォルトの名無しさん:04/11/11 12:02:24
>>126
それぐらいはヘルプを読め。それでもわからんかったら、どこがわからんかかいてくり。
128デフォルトの名無しさん:04/11/11 12:39:28
とりあえず
dat商品.Refresh

dat商品.RecordSource
の次に入れてみれ
129122:04/11/11 12:46:36
>>127

ヘルプのディスクが無いみたいなので、WEBで検索して勉強します。
アドバイス有難うございました。

>>128

dat商品.Refreshの位置をかえたらちゃんと表示されるようになりました!
アドバイス有難うございました。
130デフォルトの名無しさん:04/11/12 08:13:40
前スレ終わりそうなのであげ
131デフォルトの名無しさん:04/11/12 11:18:54
一つのプロジェクトファイルの中にFormをどかどか作っていったら
コンパイル後 EXEファイルのサイズが2MB近くになってしまいました。

コンパイルにかかる時間もだんだんと長くなってきましたが
実行時は全く問題なく動作します。

開発、実行環境にもよると思うので一概には言えないと思いますが
最大でどれくらいまで大丈夫なものでしょうか?
又は
最大でどれくらいのファイルサイズのEXEを見たことありますか?

132デフォルトの名無しさん:04/11/12 11:30:40
>>131
見るだけなら10M20Mはざらですが。
100フォームとか。

まあ、自分じゃ絶対やらないけどね。その前にEXEを分割してしまう。
EXE間の連携とかもある程度ノウハウだし。
そもそも画面設計段階でなんとか考慮するし。
133デフォルトの名無しさん:04/11/12 12:08:36
ポップアップメニューについてお聞きします。
TextBoxを右クリックするとポップアップメニューが出るのですが、
この内容を別のものに変更したいのです。

Text1_MouseDownイベントの中で自分で作ったメニューを

if Button = 2 then
  PopupMenu menuOriginal
end if

みたいな形で読んでみたのですが、右クリックすると
やっぱりデフォルトのポップアップメニューが出てしまいます。
デフォルトのものを出さずに自分が作ったメニューを出すには
どうしたらいいのでしょうか?
134133:04/11/12 12:24:19
自己レスです。
デフォルトのメニューを消すにはMouseDownイベントの中で

Text1.Enable = False
Text1.Enable = True

としてやればいいようです。
失礼しました。
135デフォルトの名無しさん:04/11/12 12:28:31
136デフォルトの名無しさん:04/11/12 13:54:40
PictureBoxに描画させた円や線をコピーして別の
PictureBox2にそのまま全体をペーストするにはどうすればいいのですか?
137デフォルトの名無しさん:04/11/12 13:56:05
コマンドボタンの文字の色を変えるには どうしたらいいでしょうか?
138デフォルトの名無しさん:04/11/12 15:24:19
初心者質問ですいませんが、

form上のTEXTBoxに文字列が入力されたら、Checkボタンが自動的にOnになる

としたいのですが、どうしたら良いのでしょうか(VB6)
139デフォルトの名無しさん:04/11/12 15:47:36
>>138
TextBoxのChangeイベントに書くよろし。
140デフォルトの名無しさん:04/11/12 16:11:10
>>136
Picture2.Picture = Picture1.Image
でイケたけど、そういう問題じゃないのかな?
(両方AutoRedrowをTrueに)

>>137
画像として描画するしかない
141デフォルトの名無しさん:04/11/12 17:35:06
>>139
ありがとうございました。
142デフォルトの名無しさん:04/11/12 20:35:55
全く、初めてVBを使い始めるんですが、インストールでいきなり困ってます。

back office っていうのをインストールするかきいてきたんですが、これは、インストールする必要はありますでしょうか?

ちょっと、アホな質問かもしれませんが、さくっと教えて頂けるとありがたいです。
143デフォルトの名無しさん:04/11/12 21:05:53
VB6について分からないので質問します。

typeで構造体を宣言した場合、
この構造体のメンバ変数を一度に初期化するのはどうすればいいでしょう?

あと、上の質問に関連してですが、
グローバルな構造体の配列を宣言したいのですが、
これを実現する方法を教えて頂けないでしょうか?

C言語で関数外に

typedef struct{
int i;
char *str
}S_var;

S_var[]={
1,"しょぼーん",
2,"しゃきーん"
}
といった内容をVBで実現する方法です。
よろしくお願いします。
144デフォルトの名無しさん:04/11/12 21:38:47
>>143
>この構造体のメンバ変数を一度に初期化するのはどうすればいいでしょう?
初期化するコードを書く。
煽りじゃないよ。これ以外に言いようがない。

構造体じゃなくクラスを使うなら、Initializeに初期化処理を書くという手がある。

>グローバルな構造体の配列を宣言したいのですが、
そのすぐ下に書いていることと全然噛み合ってないけど、答えは出来ない。
145デフォルトの名無しさん:04/11/12 22:12:48
>144
お返事ありがとうございます。

言語仕様との事なので、仕方ないですね。
ヒントとして教えていただいた、クラスのInitializeも調べましたが
C++でいう(引数無しの)コンストラクタの様なので
私が探しているのとは、違うようです。

構造体配列初期化関数を作る事で対応したいと思います。
146デフォルトの名無しさん:04/11/12 22:37:21
Win32APIの引数にするのでもなければ、
あえてクラスを否定して構造体に固執する理由は何もないと思うけど。。
頻繁にコピーでもするのかな?それでも自分のクローン作るメソッド書くだけで、
それがそんなに面倒とも思えない。
147デフォルトの名無しさん:04/11/12 23:28:20
VC++で作ったDLLをVBから呼ぶのに、VBでexeを作った後だと
exeとdllを同じ場所に置いておけば読んでくれるのですが、
VBからDebugしているときは読み込んでくれません。
dllをどこに置くのが正しいのでしょうか。
148143:04/11/12 23:50:53
>146
質問の構造体を使う目的が、
画面遷移の画面の情報を渡すという為で
C言語のテクニック(グローバルな構造体配列を定義する)
テーブルを使いたいという物です。

特別、外部プログラムとのやりとりや、コピーするという訳では無いです。

普通は、どの様にして、次画面の情報を画面に渡すのでしょうか?
例となるコード、HP等紹介して頂ければ、幸いです。
149144=146:04/11/13 00:06:58
>>148
いや、グローバルな構造体配列を「作ること」は出来るよ。(標準モジュールで宣言するだけ。)

出来ないのは、Cみたいに宣言と同時に初期化すること。
>>143の質問はそういう意図じゃなかったの?だから>>144
「すぐ下に書いていることと全然噛み合ってない」と書いたんですが。

次画面の情報云々は、それだけじゃ漠然としすぎていて誰も何も言いようが
ないと思いますが。
150デフォルトの名無しさん:04/11/13 00:13:37
>149
嫌な日本語
151デフォルトの名無しさん:04/11/13 00:16:15
>147に追加で質問なのですが、文字列の配列を引数として
渡したい場合、VC側、VB側、それぞれどんな感じで
記述すればよいのでしょうか。
152デフォルトの名無しさん:04/11/13 00:21:27
>151
一応試してダメだったソースです。

[VC側]
LPCTSTR _stdcall TestFunc(LPCTSTR names[], int n)
{
  return names[2];
}

[VB側]
Private Declare Function TestFunc Lib "Hello" _
(ByRef names() As String, ByVal n As Long) As String

Private Sub Command1_Click()
  Dim names(5) As String
  names(0) = "hello"
  names(1) = "world"
  names(2) = "aaaaa"
  names(3) = "bbbbb"
  names(4) = "ccccc"
  MsgBox TestFunc(names, 5)
End Sub

メッセージボックスで aaaaa が出るかなと思ったのですが、
メッセージは空っぽでした。
153デフォルトの名無しさん:04/11/13 00:31:28
>152
今試す環境ないけどいけるんじゃない?
154デフォルトの名無しさん:04/11/13 00:34:18
>>147
DLLのパス検索順はLoadLibrary()APIの
ヘルプに書いてあるのでいいんでないかな。
オイラはVC++のビルド後の処理でWindowsフォルダにコピーしちまう。
ただこの方法だと一度でもDLLを使用したVBが起動してると
コピーに失敗しちまうから、VBとVCを同時に起動せんように
DLLのデバッグセッションでVB.EXEを起動するようにしてデバッグしてるよ。

文字列配列の受け渡しなんて面倒でやりたくないな。
ちゃんとやるならSafeArray系のAPIを使うんじゃなかったかな。
提示したソースのやり方じゃVB側で困るだろうしね。
155デフォルトの名無しさん:04/11/13 00:36:07
>153
VC側をブレークポイントはって覗いてみたのですが、
namesにゴミみたいな値が入っていました。
156デフォルトの名無しさん:04/11/13 00:39:23
>154
>文字列配列の受け渡しなんて面倒でやりたくないな。
そうなんですか。数が決まっていない複数の文字列を
渡したいのですが、一般的な方法だとどうやるのでしょうか。
157デフォルトの名無しさん:04/11/13 01:25:17
>>155
素人で分からんけど、
ヌル文字で終わらせて見たら?
Char(0)
158デフォルトの名無しさん:04/11/13 01:28:31
>>157
どこの終わりですか。
159157:04/11/13 01:29:31
わかんないけど、
names(0) = "hello" & char(0)
160デフォルトの名無しさん:04/11/13 01:35:16
>>159
・・・ネタはいらないです。
161デフォルトの名無しさん:04/11/13 01:44:51
全然?
names(0) = "hello" & Chr(0)
162155:04/11/13 01:57:35
VC側で覗いても変化ないの?
char(0)→chr(0)はいいよね。
163157:04/11/13 01:58:21
>>162
あ、俺157だった
164デフォルトの名無しさん:04/11/13 02:23:36
>>152
想像だけど、たぶん、

(1)文字列の配列ではなく、バイト配列の配列を渡すようにする。ただし、
VBは確か配列の配列はできなかったと思うので、バイト配列をメンバにもつ
構造体の配列にする必要がある。

(2)構造体のメンバのバイト配列には、文字列をStrConvでANSIに変換したものを代入。

(3)TestFunc(names, 5)ではなく、TestFunc(names(0), 5)のように配列の最初の要素を
渡すようにする。

これでいけると思う。ひょっとすると(3)だけでもいけるかも。
165デフォルトの名無しさん:04/11/13 02:56:20
どなたか、レジストリを操作できるActiveXをご存知無いですか?
166デフォルトの名無しさん:04/11/13 07:58:23
ttp://www.microsoft.com/japan/developer/library/VBCon98/vbconpassingarraystodllprocedure.htm
ここには文字列配列でも同様の方法でできますと書いてあるのですが、
先頭の要素は渡るのですが、2番目以降がわたりませんでした。
167デフォルトの名無しさん:04/11/13 08:47:30

[フォーム]
Private Sub Command1_Click()
  Dim lpfn As Long
  lpfn = AddressOf EvtProcess
End Sub

[標準モジュール]
Public Sub EvtProcess()
MsgBox "hello"
End Sub

これでコンパイルエラーになってしまうのはなぜでしょうか。
168デフォルトの名無しさん:04/11/13 09:04:18
>>167
>AddressOf 演算子は、API プロシージャの呼び出しの中にだけ記述できます。

とあるからでしょうね
169デフォルトの名無しさん:04/11/13 09:12:09
蛇足だけど
>Basic プロシージャの間でも AddressOf 演算子を使ってプロシージャのポインタを渡せますが、
なので
Public Function GetPointer(lngAddressOf As Long) As Long
GetPointer = lngAddressOf
End Function
をモジュールに作って
lpfn = GetPointer(AddressOf EvtProcess)
みたいに書けばエラーは出ない
170デフォルトの名無しさん:04/11/13 09:48:08
>>142
BackOfficeとはサーバ類のこと。
詳しくはこちら。 http://e-words.jp/w/BackOffice.html
初めてなら不要なものばかりなのでインストールしなくていいよ。
171デフォルトの名無しさん:04/11/13 09:48:32
>168-169
すいません。ちゃんとドキュメントを読んでませんでした。
ありがとうございました。
172デフォルトの名無しさん:04/11/13 10:16:07
>169の続きで質問させてください。

[VC側]
void _stdcall TestFunc(void (*func)(int n))
{
  (*func)(3);
}

[VB側・標準モジュール]
Public Sub EvtProcess(ByVal lCode As Long)
  MsgBox lCode
End Sub

Public Function GetAddress(lAddressOf As Long) As Long
  GetAddress = lAddressOf
End Function

[VB側・フォーム]
Private Declare Sub TestFunc Lib "Hello" (ByVal lpfn As Long)

Private Sub Command1_Click()
  Dim lpfn As Long
  lpfn = GetAddress(AddressOf EvtProcess)
  TestFunc lpfn
End Sub
173デフォルトの名無しさん:04/11/13 10:16:46
>172

こんな感じでVBからDLLのTestFuncを起動し、DLLからVBのEvtProcess
関数を呼ぼうとしているのですが、一応EvtProcessが呼ばれてメッセージ
ボックスが出るところまでは行ったのですが、OKをクリックした後
The Value of ESP was not properly saved across a function call.
This is usually a result of calling a function declared with
one calling convention with a function pointer declared with
a different calling convention.
というエラーが出ます。見たところfuncの宣言とEvtProcessの宣言が
食い違っているというような内容だと思うのですが、どこが間違っているか
分かる方がおられましたらご教授ください。
174デフォルトの名無しさん:04/11/13 10:41:10
>>173
ESPで怒られてるなら、VBのサブルーチンも__stdcallで呼び出さないとまずそうな。
175デフォルトの名無しさん:04/11/13 10:53:50
>174
手探りでやっているので質問しまくってすいません。
VC側を


void _stdcall TestFunc(void (* __stdcall func)(int n))
{
  (*func)(3);
}

こんな風に変えるということでしょうか。やってはみたのですが、
warning C4229: 旧形式が使用されています : データの修飾子は無視されます。
という警告が出て、状況は変わりませんでした。
176デフォルトの名無しさん:04/11/13 13:34:24
void _stdcall TestFunc(void (__stdcall * func)(int n))
こうじゃないか?
177デフォルトの名無しさん:04/11/13 16:36:38
OS win2k
Ver vb6
サービスパック Pro

フォームのWidthを一定値以下にさせないために

Private Sub Form_Resize()

'Minサイズ指定

If Form1.Width < 1000 Then

Form1.Width = 1000

End IF

End Sub
としてるのですが動作が挙動不審です
もっとエレガントな方法があるなら御教授下さいませ
178デフォルトの名無しさん:04/11/13 16:50:38
>>177
動作が挙動不審とは最小化した時の動作のことかな?
WindowStateを見るかOn Error Resume Nextをプロシージャの
先頭に書けばいいと思う。
179デフォルトの名無しさん:04/11/13 17:59:10
180デフォルトの名無しさん:04/11/13 18:25:24
VB6ですが、
フォーム内でのグローバルな静的変数を定義するには
どうすればいいのでしょうか?
formのgeneralの所で
static i as integer
と書いてもプロシージャの外では無効ですというエラーが返ってきます。
181デフォルトの名無しさん:04/11/13 18:41:44
>>180
Static変数はプロシージャ内でしか使えません。
つまり、>>180のようなことはできません。
詳しくはMSDNの「Static ステートメント」を参照。
代わりにPrivate変数を使いましょう。
182デフォルトの名無しさん:04/11/13 21:13:05
>>180
おいおい、グローバルな静的変数って。。
それは「死なない不死身の人」って言ってるのと同じだよ。

自動変数はスコープの外に出ると死ぬ。
スコープの外に出ても死なないのが静的変数。つまり死なない人。

スコープの外がないのがグローバル変数。つまり不死身の人。
183デフォルトの名無しさん:04/11/13 21:37:31
>>180
やるとしたら
Private Function GetInstance() As Object
  Static obj As Object
  If obj Is Nothing Then
   Set obj = New Collection
  End If
  Set GetInstance = obj
End If

みたいなことで代替は出来る。意味があるかはわからんが。
VBのStaticはC/C++のstaticとは機能が違うので、Singletonパターンやりたい場合は、
標準モジュールにグローバル変数定義するしかない。
184デフォルトの名無しさん:04/11/13 23:00:07
>182
C++だと
クラスのメンバ変数に対して、静的変数があるからね。
VBでもFormはクラスの1つだから
実現できるのではと思った訳です。
185デフォルトの名無しさん:04/11/13 23:14:16
>>184
あなたが言っているのはインスタンス生成しなくても存在する変数のことだよね。

VBでは「静的変数」って言えばStaticで宣言される変数のこと。
>>180の言ってるのはこっちの方だと思うけど。
186デフォルトの名無しさん:04/11/13 23:34:57
>176
それもやってみました。コンパイル時の警告は出なく
なったのですが、>173のエラーが出る状況は変わりませんでした。
187デフォルトの名無しさん:04/11/14 01:34:12
>>186
あれ?ウチではそれで動いたぞ。
188デフォルトの名無しさん:04/11/14 02:04:15
>187
ホントですか?うーん、もう一度やってみます。
189デフォルトの名無しさん:04/11/14 08:40:14
>187
ありがとうございます。一歩前進しました。
コールバック関数に整数を渡すことはできたのですが、文字列を
渡すことができません。今書いているコードは

[VC側]
void _stdcall TestFunc(void (__stdcall *func)(const char *szFileName))
{
  (*func)("tmp.txt");
}

[VB側(フォーム)]
Private Declare Sub TestFunc Lib "Hello" (ByVal lEvtProcess As Long)

Private Sub Command1_Click()
  TestFunc (GetAddressOf(AddressOf EvtProcess))
  MsgBox "hello"
End Sub

[VB側(標準モジュール)]
Public Function GetAddressOf(lAddressOf As Long) As Long
  GetAddressOf = lAddressOf
End Function

Public Sub EvtProcess(ByVal szFileName As String)
  MsgBox szFileName
End Sub

これで実行すると、メモリを読めませんでした、という旨のエラーが
発生し、VB自体が終了してしまいました。一応ヘルプ等見ながら自分
なりに正しいと思われるコードになっていると思うのですが、どこか
おかしいところがあればご教授ください。
190デフォルトの名無しさん:04/11/14 08:49:03
EvtProcessの引数をLongにしてEvtProcess内でStringに変換したらいいと思う。
191デフォルトの名無しさん:04/11/14 09:32:38
>190
Longで受け取ると文字列の先頭のアドレスが渡ってくると
思うのですが、「Stringに変換」というのは具体的には
どういうコードを書けばよいのでしょうか。
何から何まで質問してしまって申し訳ないのですが、もう少し
お願いします。
192デフォルトの名無しさん:04/11/14 10:57:21
VB6.0の初心者の者です。VB6.0において、ボタンコントロールでボタンを作ります。作ったボタンをクリック
することによって、別のフォームモジュールや別のexeファイルを非表示にしてから、別のフォームモジュール
や 別のexeファイルを終了させることが出来るようにするためにはどうしたらよろしい
でしょうか。ご教授を誰かお願いします。
193デフォルトの名無しさん:04/11/14 11:01:54
>192
分かりにくいよ。AAA.exeとかBBB.exeとかで表現した方が
伝わると思う。
194デフォルトの名無しさん:04/11/14 11:39:35
>>191
こうだとどう?
Public Sub EvtProcess(ByRef szFileName() As Byte)
  Dim strFileName = StrConv(szFileName, vbUnicode)
  MsgBox strFileName
End Sub
195デフォルトの名無しさん:04/11/14 22:05:40
>>192
ほら、文章意味不明だから誰もレス不能じゃん。
196デフォルトの名無しさん:04/11/14 22:54:40
SQL実行して得られたレコードセットって戻り値として返せないんですか?
すごく不便なんだけど。。

SQLを実行して結果を返すだけの標準モジュールを作って
SQL実行する関数を作って、戻り値としてレコードセットを返せれば、
と思ったんですが
197デフォルトの名無しさん:04/11/14 22:57:11
普通にできるよ
198デフォルトの名無しさん:04/11/14 22:58:08
>>196
どんなコード書いてんだ?
199196:04/11/14 23:28:59
すんません。書き方悪かった

public function a() as Recordset

  …  
  a = DoCmd.RunSQL(SQL)

end function

こういうことです。
200デフォルトの名無しさん:04/11/14 23:32:02
Set a = DoCmd.RunSQL(SQL)

Set付け忘れて実行時エラー出てるとかそんなオチ?
201Orator:04/11/15 01:15:35
>>199
Access VBAですね。
RunSQLメソッドは、Recordsetを返しません。

ADODB.Recordsetなら、
・CurrentProject.Connection.Execute
・Recordset.Open
・Command.Execute
あたりで。

DAO.Reocrdsetなら、
・CodeDB.OpenRecordset
・CurrentDB.OpenRecordset
・(DAO.QueryDef).OpenRecordset
などで取得できるので、そっちを使いましょう。
202デフォルトの名無しさん:04/11/15 01:21:30
DoCmd って Recordset 返さないだろ。
DAO なら OpenRecordset とか使わんと。
203デフォルトの名無しさん:04/11/15 07:22:42
VC++で作ったDLLからクラスをエクスポートしてVBから
利用するってできますか?

できるとしたら、どんなコードを書けばよいのでしょうか。
204デフォルトの名無しさん:04/11/15 09:33:42
>>203
クラス自体をそのままVBでVCと同じように利用することは不可能です。
(継承とかないから)

VCで作成して機能的に完成しているものであって、それを使用するだけであれば、
COMとかActiveXコントロール化することで可能ではあると思います。

ただ、上記の実装があなたが多分求めてるちょこっと利用するには複雑すぎると思います。
(ちょっと気合入れた学習をしないと、きちんとしたものがつくれないです。)
205デフォルトの名無しさん:04/11/15 10:14:30
>>203
関数を使いたいって話ではないよね。
オブジェクトつくりたいって話だよね。

>>204
ActiveXで普通にいいんじゃない?そんな複雑ではないでしょう。
206デフォルトの名無しさん:04/11/15 10:40:22
VB6.0の質問です。
CommonDialog Controlを使って入力情報をエクセルに保存した後、
自動的にそのエクセルファイルを開いて入力情報を表示させるには
どうしたら良いですか?
207デフォルトの名無しさん:04/11/15 10:45:28
>>206
エクセル立ち上がっちゃっていいの?

それとも、エクセルたちあげずに、フォームかなにかで、内容だけ確認できればいいの?
208デフォルトの名無しさん:04/11/15 10:55:06
皆さんがメインで使ってるバージョンっていくつですか?
今から6.0で勉強し始めようと思うんですが。
209デフォルトの名無しさん:04/11/15 10:59:48
自分は6.0

Netはごちゃごちゃ感がすきになれないと…食わず嫌いをいいつづけて、触ってない。
210デフォルトの名無しさん:04/11/15 11:01:37
>>206
つうか、仕様が判りにくい。

VBの画面入力をExcelファイルに保存して、それをExcelで表示(帳票?)でいいのかな?
普通にExcelオブジェクトを起こして操作すればOK。
起こし方はネットに幾らでも転がってる。
Excelでのセルの操作は、やりたいことをマクロ記録させて、そのソースを自分で解析して書けばいける。

Excelを使用せずにExcelファイルの作成は、市販コンポーネントを使えば可能。
あとSYLK形式とかXMLっていう手もある。
ただ、一般的に表示するにはExcelは必要。(細かくはオープンオフィスとかあるけど・・・)

211デフォルトの名無しさん:04/11/15 11:03:38
>>208
勉強なら.netにしとけば。
わざわざVB6を覚える必要はなし、使う必要が出たらやればいいだけ。
言語勉強ならば、あたらしめのもの、普遍的なものがいい。
212デフォルトの名無しさん:04/11/15 11:08:03
>>210
本人いないのに話てもいみないっちゃ意味ないんだが。

データの種類によっちゃ
リストボックスにもっかいもどして確認なんて用途でもいいかもしれんないから、
一般的に表示する…が、質問した本人のやりたいことによってちゃうかもしんない。

つか、もちっとわかりやすく質問してほしいものだ。
213206:04/11/15 14:25:59
返事遅れてすいません。
VBの画面入力をExcelファイルに保存して、それをExcelで表示したいです。
214206:04/11/15 14:30:47
CommonDialog ControlでDialogを出してエクセルファイルを収める場所とエクセルファイルの名前を
設定してDialogを閉じた後にそのセーブしたエクセルファイルを自動的に表示したのです。
よろしくお願いします。
215206:04/11/15 14:33:15
分からないのはDialogを閉じた後の処理です。
よろしくお願いします。
216デフォルトの名無しさん:04/11/15 14:33:49
>>214
だから、210に書いたことはスルーですか?
何かそれに関して試したなら話のしようがあるけれど。

それともソースそのものが欲しいっていう類なら、質問じゃなく、ソースくれって書けば?
217デフォルトの名無しさん:04/11/15 14:34:22
>>213-214
じゃぁ、>>210が書いてくれてるので、それで。
218デフォルトの名無しさん:04/11/15 14:36:39
>>215
Excelオブジェクトってのは理解してる?それを使えばっていうのが理解できないレベルですか?
それによって回答が全然違うんだけど。

219デフォルトの名無しさん:04/11/15 14:42:08
206さん、まずMSDNのCreateObject関数の解説と例を見て、それで判らなければ再度にしてほしい。
そこにもろExcelの起こし方が書いてあるから。
220206:04/11/15 14:55:41
調べ方も分からないレベルなんで申し訳ありません。
MSDNでCreateObjectを検索ですね。了解しました。
221デフォルトの名無しさん:04/11/15 15:22:06
>>220
うおぉぉぉぉぉぃ。

調べ方もわからないやつは、
>>214みたいなことやろうとしないでくれ、マジで。
というか>>214の前にいくらでも調べなきゃいけないことあったと思うが、
その時々ずーーーーーーと、人に聞いてきたわけだね。

だめだこりゃ。
222デフォルトの名無しさん:04/11/15 15:31:33
一応注意書きを。
アプリ−ブック−シート−セル、と階層的になるんだけど、親が死んでも子は死なないから注意を。

Set oBook = oApp.WorkBooks(0) ・・・適当だけど

したとき、oAppをNothingしてもoBookは心中せずに残り、多分お約束のミスとしてExcelプロセスが残るということをやるから。

生成・破棄が対にできるように、関数化などきちんとしていけばOKですけど。
まあ、調べ方も判らないというレベルじゃ、多分失敗しますよ。
223デフォルトの名無しさん:04/11/15 15:46:15
206みたいなのが知り合いにいる。。。orz
224盗る猫 ◆SCRKIYBNrs :04/11/15 15:50:48
225デフォルトの名無しさん:04/11/16 00:29:20
フレームというとオプションボタンを入れるフレームしか思いつかないんですが
最近、そうではないプログラムのメインとなるような? フレームがあるそうですが
どんなんですか?
また、良いサイトがあったら教えてください。お願いします。
226デフォルトの名無しさん:04/11/16 00:30:13
フレームワーク
227デフォルトの名無しさん:04/11/16 00:36:06
便乗でもうしわけないが、

スケールモードをすべてピクセルでやりたいのだが、
コンテナになれるがスケールモードプロパティをもたないオブジェクト(つまりフレーム)の中では、
twipから変更ができません。
これは仕様でしょうがないことなんでしょうか?
228デフォルトの名無しさん:04/11/16 00:36:55
そうだ
229デフォルトの名無しさん:04/11/16 00:41:03
そうか。。残念だ。。
では、自前で座標変換functionかましていたのは正解なのか。

ありがとう。
230デフォルトの名無しさん:04/11/16 08:13:40
ていうか、なんでそんな面倒なことわざわざするのかな。
システムのdpi変えても頑なにデザイン変えない意地の悪いプログラムが書きたいとか(w
231デフォルトの名無しさん:04/11/16 09:10:08
>分からないのはDialogを閉じた後の処理です。
って書いてあるんだからファイルの書き出しじゃなくて
Excel の実行の仕方が分からないんだろうと
232デフォルトの名無しさん:04/11/16 09:28:01
>>230
それすごいなwでも無駄だなw

単純にマウス直下のコントロールを取得する関数書きたかっただけですよ。
イベントドリブンから逆行する操作だけどね。
233デフォルトの名無しさん:04/11/16 09:42:10
>>231
だからCreateObjectの項を紹介したじゃん。
あそこにそのままが書いてあるんですよ。

MSDNの検索でExcelを検索すれば、VBリファレンス内では10個程度ひっかかる。
その中にあるんだから、最初の彼の調べ不足。
234デフォルトの名無しさん:04/11/16 17:40:46
間違えてAPIスレに誤爆してしました。
質問させてください。
Susieのプラグインで

HLOCAL *pHBm : ビットマップデータ本体のメモリハンドルが返される

とあるんですが、メモリの内容を見るにはどうすればいいですか?
235:04/11/16 18:32:55
ちょっと待って
236デフォルトの名無しさん:04/11/16 19:27:26
お疲れ様です お願いします

 チェックボックスにプログラムからチェックを入れるにはどうしたらいいでしょうか?
237デフォルトの名無しさん:04/11/16 19:43:50
>>236
Value
238デフォルトの名無しさん:04/11/16 21:31:34
すいません、こういわれたんですけど、ポインタの中身を読むにはどうすればいいんですか?

685 デフォルトの名無しさん sage New! 04/11/16 21:02:05
>>678
戻り値がメモリへのポインタなんだから、それを取得して好きに読めばよい。
取得したポインタの中身を読む方法が分からないんだとしたら、スレ違い。
239デフォルトの名無しさん:04/11/16 21:46:23
オレ様の第六感が、お前を相手にしてはいけないと警告している
240デフォルトの名無しさん:04/11/16 21:46:52
>>238
CopyMemory APIでVBの変数へコピーする。
241デフォルトの名無しさん:04/11/16 22:21:12
>>240
そう言われてわかる人なら最初から聞いてないと思う。

>>238みたいな人はなんか勘違いしてると思うんだよな。
掲示板で人に聞けることなんて、所詮小手先のことだろう。
根本からわかってない奴に手取り足取り一から教えてくれるお人よしはいない。
あるいはプログラミングなめてるのか。
242デフォルトの名無しさん:04/11/17 09:29:51
>>238
VBから入って、VBのみなら、ポインタってなんだかわからんのではないかい?
C言語の入門書(入門HP)見てきてごらん。たぶんわかるとおもうよ。
それで分からなかったらあきらめたほうがいい。
たぶん、おまいさんがやろうとしてることは、今のおまいさんの実力にみあってないんだよ。
243デフォルトの名無しさん:04/11/17 09:39:23
お願いします

VBでDBの中にテーブルがあるかを確認するにはどんな方法がありますか?
244デフォルトの名無しさん:04/11/17 09:54:11
接続先のDBと、接続につかう方式は、何を予定してるのか教えれ。
245デフォルトの名無しさん:04/11/17 10:07:05
>>244さん
 早速ありがとう、ございます
DBはAccessです 接続に使う方式?って感じの初心者ですみません。
246デフォルトの名無しさん:04/11/17 10:12:02
普通に起動して、普通にでてくる、左のツールボックスから、
DATAコンポネートつかって、DataBaseNameプロパティ指定してつかってるのん?
247デフォルトの名無しさん:04/11/17 10:35:41
>>246さん
 またまた、無知なモノにありがとうございます
 テキストでフィールドの値をSQL文でとるように書いていますが?って
感じですが?
248デフォルトの名無しさん:04/11/17 10:59:43
およ?
SQL文渡して書いてるなら、SQL文で一覧の取得を書いたらいいのでは?
SQLの書き方については、んー、範囲外誰かにパス。
249247:04/11/17 11:08:16
>>248
 とりあえず、レスありがとうございました!
がんばってみます
250デフォルトの名無しさん:04/11/17 21:07:03
VB6対応のMSDNライブラリの最新版って、いつのですか?
251デフォルトの名無しさん:04/11/17 23:26:57
あれー?もしかして Common Control 5.0 のリストビューって
チェックボックス付けられない?あとグリッド線とか1行選択
とかもできないのかな。
252デフォルトの名無しさん:04/11/18 00:11:48
>251
プロパティでは変えられないみたいだけど、なんか
方法ないのかな。
253デフォルトの名無しさん:04/11/18 01:54:46
>>251-252
LVS_EX_GRIDLINESとかLVS_EX_FULLROWSELECTとかを
SendMessageで投げたらできたよ。
254デフォルトの名無しさん:04/11/18 07:18:59
>253
ありがとうございます。ちなみにチェックボックスもいけますか?
255デフォルトの名無しさん:04/11/18 08:49:24
VBでコマンドボタンを押すと
あらかじめ作ってあるエクセルのあるシートの
印刷プレビュー画面を出す事ができるそうなのですが
具体的にどうやるのでしょうか?
256デフォルトの名無しさん:04/11/18 09:08:34
>>255
過去ログ。>>206くらいから読んでみし。
257デフォルトの名無しさん:04/11/18 10:54:06
ググったほうがよっぽど速いと思うが
258デフォルトの名無しさん:04/11/18 11:45:57
ググるにしても、キーワードがわからんでしょう。
…まあ、そのくらいわかれって気もするけど。
259デフォルトの名無しさん:04/11/18 12:01:45
>>258
「vb excel プレビュー」
これだけあれば十分
260デフォルトの名無しさん:04/11/18 12:06:42
>>258
まあそれも勉強だと思うけど。
言語的な知識は、特定言語に依存しない一般論を知っていれば十分だと思う。
(基本はCなりをやっぱり軽く覚えて、それプラス今風の言語)

個別技術に関しては、今の開発に必要なものなんて全部覚えられっこないよな。
だから、まずグーグル様の活用方法と、あてになるフォーラムなりリンク集を確保することが、技術者に求められる姿勢。

なもんで、質問する前にまず>>1は最低でも読むと。
グーグル様にお尋ねするキーワードは試行錯誤で覚えるしかないよな。
Excel VB なんて入れたら論外なのは馬鹿でもわかるだろうから、何を足すかは自分で試せと。
261デフォルトの名無しさん:04/11/18 12:08:52
>>260
Excel VBは誰でも一回は通る道だな(笑
VBAまみれになりまする。
262デフォルトの名無しさん:04/11/18 12:15:46
VB6.0(SP6)使ってます。MSCommを使って、ポート通信するプログラムを作っているのですが、
接続するハードが、送信のみしか対応しておらず、受信要求を受け取ってくれません。
そこで、データが送信されるまで、アイドリングしたいのですが、時間でWaitをしてると、あんまり上手く
動きません。なので、1.通信ポート開ける。2.通信データが送信されるまで待つ。3.ポート閉じる。
の2番をどうコーディングすれば良いのか、教えて下さい。MSCommのプロパティにも良さそうなのが、見当たらないので・・・
263デフォルトの名無しさん:04/11/18 12:17:23
受け取るデータの、型とか、サイズとかいつも一定か、規則性があるんかい?
264デフォルトの名無しさん:04/11/18 12:30:13
>>262
OnCommイベントでさばく。
1バイト受信して溜めていけばいい。
265デフォルトの名無しさん:04/11/18 13:02:31
>>263 あります。毎回50バイト長のデータが送られてきます。

>>264 1バイトずつ受信して、それを50回繰り返すと言う事でつか?(毎回50バイト長なので)
266デフォルトの名無しさん:04/11/18 13:16:28
>>265
それなら50バイトいっぺんによめばいいだけ。
データ受信したイベント内で、バッファに溜まっているバイト数を数えればいい。
ただ、通信異常などでのズレを考慮するなら、終端文字(があれば)まで1バイト読みのほうが安全だとは思うが。
(ずれたときに50バイト溜まらない可能性と、ずれっぱなしの可能性が出てくる。)
267デフォルトの名無しさん:04/11/18 14:07:07
多角形を描画したいのですが、思った通りの座標に配置できなくて困っています。

Public Type POINTAPI
X As Long
Y As Long
End Type

Public Declare Function Polygon Lib "gdi32" (ByVal hDC As Long, lpPoints As POINTAPI, ByVal nCount As Long) As Long

Public numPoints As Long
Public XY(10) As POINTAPI

上記のようにして、座標を指定して、フォーム上に表示しようとしても異なった位置に
配置されてしまいます。

座標の単位?が違うと思うのですが、どうにもうまくいかず困っています。
アドバイスお願いします。
268デフォルトの名無しさん:04/11/18 14:12:13
>>267
hDCは正しく設定してる?
269デフォルトの名無しさん:04/11/18 14:18:26
>>267
twipとかピクセルをMSDNなどで調べて学習。

VBのフォームのモードが何になってるかとか、APIが何を求めてるかとか、変換はきちんと知っておいたほうがいい。
270デフォルトの名無しさん:04/11/18 14:19:45
>>268 >>269
アドバイスありがとうございます。
そのあたり詳しく調べてみます。
271デフォルトの名無しさん:04/11/18 14:23:32
>>265
まあ、単純に時間でくるくるまわして、毎回50バイトたまってるかどうか調べてもいいきがするけどねん。
たまってないなら、まだ受信完了してないってことだと思うし。
272デフォルトの名無しさん:04/11/18 14:24:50
>>271 補足。

ただ、どっちにしろ「タイムアウト」の処理加えとかないと、
よきせぬトラブルがあって、50バイト以下のデータが送られたりした時、
あるいは、コネクションは持続したまま、データ転送のみとぎれた時に、フリーズしまっせ。
いつまでも待ち続けるプログラムちゃん。けなげです。
273デフォルトの名無しさん:04/11/18 16:24:30
スレ違いかもしれんが教えください。

ttp://www.geocities.jp/activex_treeview/

↑OS2000 Vbはインストールされていない端末で
ActiveXを使ったツリービューが見れないだよね。
xp や NTでは見ることが出来たんだが・・・?

どの端末もVbが入っていれば見れます。
Vbなしで見る方法ありますか?
Vbランタイムでは×

ASPスレにも書き込むけど、だれか教えて。何が必要なんだ〜??
274デフォルトの名無しさん:04/11/18 17:23:42
凄まじく初心者な質問だと思いますが
テキストボックスにある変数を常に最新に表示するということはできないのでしょうか?

たとえばx1+x2+x3の結果をtextbox4に表示したいときは
どうすればいいのでしょうか
x1、x2、x3の値が変わるアクション全てにtextbox4=x1+x2+x3の一文を加えなければならないのでしょうか?
275デフォルトの名無しさん:04/11/18 17:28:32
>>274
イベントドリブンなプログラムの作法にしたがうなら、そう。
全部に書くのが筋かと。

あるいは、Timerか、Do-Loopでまわすかなんかで、時々再計算してあげるって手法で、
見た目十分に常にという最新という状態にできるかと。

どっちをとるかは場合による。
私は、後記の方法が好き。あんまよくないとおもうけどねぇぃ。
276デフォルトの名無しさん:04/11/18 17:41:35
計算自体をクラス化。
コンストラクタで表示先のTextBoxの参照を持っておく。
あとは計算とかあるたびにそれを表示するだけで、ある程度は汎用化できると思うが。
値をクラスのプロパティにしてしまえば、値の代入を捕らえられるから一発だと思うけど。

(クラスにしなくても、一連の関数とグローバル変数でもできるけど、おしゃれじゃない)
277デフォルトの名無しさん:04/11/18 17:44:32
ああ、x1,x2,x3は、テキストボックスじゃなくてもいいのか。
なら、クラスでもいいかも。
278de:04/11/18 17:44:53
電卓を作っているのですが、桁数を設定するにはどうしたらいいですか?
無限に入力できてしまい見えなくなってしまうのですが・・・。
279デフォルトの名無しさん:04/11/18 17:45:54
onchangeかなんかで、入力監視してなんとかしる。
280デフォルトの名無しさん:04/11/18 17:46:45
ごめん違うことばと混じった。
changeイベントでした、onchangeってなんだよ。
281デフォルトの名無しさん:04/11/18 17:59:36
276だけど、VBのクラスってコンストラクタは引数とれなかったかも(Cいげた勉強中なもんで・・・)
だとしたら初期化専用メンバー関数つくって、そこでTextBoxの参照を渡す。
あとはプロパティーのセットで各変数格納時に計算関数(内部メンバー関数)を呼んで、そこで計算して、
結果をTextBox(の参照)に渡してあげれば。

>>278
単純には、TextBoxのMaxLengthプロパティあたり。
細かくやるなら、ChangeイベントでStaticなりグローバルで入力を確保してLenチェック。
282デフォルトの名無しさん:04/11/18 18:05:28
アクセサリに入ってる電卓で二進数の計算をするとき
小数の計算が出来ないのですがどうしてでしょう?
283デフォルトの名無しさん:04/11/18 18:12:06
>>282
その前に言ってることのおかしさに気づけ。

さておき、どうしてもそのようなことがしたいなら、桁キャストして整数(?)にしてから計算すればいいじゃんぬ。
284de:04/11/18 18:21:41
281>>
すみません、TextBoxが見つからないのですが・・・。
285デフォルトの名無しさん:04/11/18 18:48:00
>>284
オォォォィィィィッッッ
286デフォルトの名無しさん:04/11/18 18:58:17
Toolbarコントロールについてお聞きします。

私のソフトではToolbarに登録できるようにしたい機能が最大70種類ほどありまして、
それぞれの機能に相当するアイコンをデザインする余裕がありません。
そこでアイコンなしでキャプション文字だけをToolbarに表示したいのですが、
アイコンのImageListの項目を<なし>に設定すると、
アイコンの部分(16x16?)が空白となって表示されてしまいます。
この空白を消すためにToolbar自体の高さを設定しても反映されません。
文字だけのToolbarというのはどうやったらできるのでしょうか?

最悪、テキストを画像化したアイコンを作成することも考えていますが、
いい方法があれば教えていただけないでしょうか?
287デフォルトの名無しさん:04/11/18 19:02:19
>>286
そういうのは質問の前に手動かしたほうが早いよ。
ぶっちゃけ無理だと思うし。
288デフォルトの名無しさん:04/11/18 19:24:27
どうしてもツールバーのボタンじゃなきゃだめってのでなければ、
ツールバーの中にコマンドボタンやオプションボタンを配置するって手もあると思うけどどうかな。
289286:04/11/18 19:37:54
コメントありがとうございます。

>>287
無理なんですか。割と需要はあると思うんですけど。。
アイコン作るのはセンスと時間が要りますから。

>>288
コマンドボタンをツールバーに入れることができるんですか!
それができれば十分です。その方向でトライしてみます。
290デフォルトの名無しさん:04/11/18 23:42:49
教えてください。現在、Win2000+VB6(SP6)で開発中ですが・・・、

VB6のコードで『ディレクトリ+ファイル』のパス名を設定する際、
完成したアプリが98,Meで使用される場合を考慮し
関数で得たディレクトリ名の最後尾に"\"が存在するかどうか、その都度チェックしながら
先頭に"\"の無いファイル名を設定しなければならないのですか?

最もスマートな手段を教えて頂きたいです。
よろしくお願いします。
291290:04/11/18 23:46:22
すいません追加です。

>関数で得たディレクトリ名の最後尾に"\"が存在するかどうか
なければ最後尾に"\"をつけて
>先頭に"\"の無いファイル名を設定しなければならないのですか?
292デフォルトの名無しさん:04/11/18 23:51:44
>>290
9Xだと最後尾の\があるとなんか問題あるっけ?
それはともかくPathRemoveBackslash APIなんかどうだ。
293290:04/11/18 23:57:30
私は9xの環境下で開発したことがないので分かりませんが
9x系は"\"付き、NT系は"\"付かないらしいです。

なので最後尾の"\"がダブっても問題がないのか悩んでおりまして・・・。
294デフォルトの名無しさん:04/11/19 00:57:19
>>290
それってApp.Pathなんかで取得したパスが、たまたまドライブのルートだと
  C:\

みたいに最後に"\"が付くって話と混同してない?
OSの種類と関係ないと思うが。。
295デフォルトの名無しさん:04/11/19 02:22:46
自然数同士の除算を減算の繰り返しで計算するプログラムのコードだれかわかりますか?
余りも考慮して。
296デフォルトの名無しさん:04/11/19 02:34:48
297デフォルトの名無しさん:04/11/19 07:22:47
>254
すいません。自分で試したらうまくいきました。
チェック状態を取得するにはまた別のメッセージを
投げないとダメなんですね。
298デフォルトの名無しさん:04/11/19 08:01:44
>>255
これに似ているのですが
VBからEXCVELのプレビュー画面出そうとすると
「コンポーネントが使用できません」ってエラーがでます。
何がわるいのでしょうか?

WINDOWSXP-SP2
OFFICE2003pro
VB6.0SP6
299デフォルトの名無しさん:04/11/19 09:03:01
EXCVEL
300デフォルトの名無しさん:04/11/19 09:23:29
>>298
プレビューの前にエクセルのVisibleをTrueにすれ
301デフォルトの名無しさん:04/11/19 09:27:04
>>298
おまえはサポセンに電話する素人か?
それとも細木数子に相談しに行く阿呆か?
それで何がわかるんだよ。

プログラマならば、せめてもう少し状況をきちんと説明しろ。
ExcelをCreateなりGetなりでObjectとして生成できているのか?
その上でPreviewを行うコマンドだけが駄目なのか?
302デフォルトの名無しさん:04/11/19 09:50:09
ここがサポセンだと思ってる奴は結構いる
303デフォルトの名無しさん:04/11/19 09:54:05
いっぱいいるな。
304デフォルトの名無しさん:04/11/19 09:58:04
まあ、そういうやつは、>>301のような洗礼を受けるのが常なので、
ダメプログラマーにならないように、もっとイッテヤレ>>301

誰しも一回は、けちょんけちょんにされて恐れおののいて学習していきますの。
現場を目撃してあういう風になっちゃいけないなとわかる人もいますが。

あたしゃは前者。ちょー初心者の時に
「初心者なんですが〜」から始まって「うごかないんです」「どうでしょう?」という
最悪な質問しましたよ、ええはい。
305デフォルトの名無しさん:04/11/19 10:36:26
>>304
まあ、PC○Nに逝って鍛えてもらうのが一番かと。
そういう人に限って、タイトル入力有りの場合の掲示板で。

Title:助けてください。
VB初めて数日の初心者です。
・・・・
よろしくお願いします。

って書くんだよね。

でP○DNだと、皆様から教育的指導が飛ぶと。


306デフォルトの名無しさん:04/11/19 10:43:03
>>305
あっこはマジで洗礼ですな。
手厚い教育がほどこされて、半年もすれば、教える側になれますな。
307デフォルトの名無しさん:04/11/19 10:56:16
俺が始めた頃はネットといえば草の根BBSの時代だったけど、
こればっかりは昔から構図がかわらんよな。
言われた方は「さっさと答えだけ教えろ」って思うんだろうけど
言う側になると「ふざけてんのか?」って思うもん。

状況/問題点/要望を「他人に」わかるように説明するっていうことが
どれだけ大事なのかってことに早く気が付いてほしいな。

なんかえらそうでスマソ。
308デフォルトの名無しさん:04/11/19 11:00:41
>>307
えらそうかどうかはさておき…

でも、(※1)そこは質問する時だけじゃなくて、プログラマーとして最低限必要なことだよな。
一般的にも重要だとおもうけど。

一人でつくって、コメントをつけないですむプログラムならいざしらず、
チームでつくりはじめたら、そのあたり正確に人に伝えられない人はやってけないもんな。

---------------------------
状況/問題点/要望を「他人に」わかるように説明するっていうことが  ←※1「ソコ」


以下余談

しかし、めぐまれてますな、今からプログラム始める人は。(よいことだと思います)
インターネットない時代は、コミュニティーに紹介で所属するか、
近くに詳しい人がいるか、あとは、本にのってる内容をスクラップしたりetcetc
今日ぶちあたった壁に今日質問できることはまれ、ましてや今日回答をいただけるなんて奇跡に近かったもんな。
309307:04/11/19 11:15:04
>>308
そうなんだよな。
プログラミングだとかプログラマーって狭い範囲のことじゃなくて
「他人」というものを意識できるようになって
初めて自分の行動の幼稚さや浅はかさってものに気づいて恥ずかしくなったよ。

なんかホント今日は朝から飲み屋の終わりみたいな雰囲気になってるな・・
310デフォルトの名無しさん:04/11/19 11:17:28
まあ2chの匿名性により、質問に対して敷居が低いことは良いことでもあり、悪いことでもあり。
普通に会社とかで質問するときに、前もってまとめるべきことはまとめて欲しいよね。

何を試行して、どのような結果が出ている。それは最低でも必要。

あと、何がわからないか、自分で判らない状態で書き込むのは如何なものかと。w
それこそ細木先生に相談して改名なりしてもらってきたほうが。
311デフォルトの名無しさん:04/11/19 12:21:12
VB6を使って,dallasのeepromにデータを送受信したいのですが、どうやればいいのでしょうか?
312デフォルトの名無しさん:04/11/19 12:23:22
>>311
範囲でかすぎ。
とりあえず、googleで同じことやってる人がいないかどうか調べてこい。
これをやってるんですが、この部分でつまってます。
これが分かれば先にすすめるのですが、どなたか情報ないでしょうか?
この形でやりなおせ。
313デフォルトの名無しさん:04/11/19 12:24:22
つか、よく、310までの流れの直後にそういう質問できるな・・。
314デフォルトの名無しさん:04/11/19 12:35:53
メール欄にageなんて書いてネタであることをどこかにほのめかさずにはいられない
>>310ってかわいい奴だなw

いやこれ肯定的に言ってるのよ。
こういうのをベタにやってなにか小さな勝利感みたいなのに浸る奴は
むしろ精神病んでると思う。
315デフォルトの名無しさん:04/11/19 12:45:03
>>314
311だよな、310が精神的に病んでると言われてしまうと少し傷ついてしまう・・・鬱だ。
316デフォルトの名無しさん:04/11/19 13:00:43
dallasのeepromの送受信の媒体はなんだろう。。。。
317困ったくん:04/11/19 18:43:36
>>295
ひょっとして、あなたは北●大の学生?
もれもそうなんだけど・・・
318デフォルトの名無しさん:04/11/19 18:47:11
教えてください
VBに三項演算子
またはその代わりになるものってないでしょうか?
319デフォルトの名無しさん:04/11/19 18:53:14
>>318
IIF
320デフォルトの名無しさん:04/11/19 18:57:55
ワロタ
321318:04/11/19 19:07:42
>>319
サンクスコ!
322デフォルトの名無しさん:04/11/19 20:24:41
教えてください
VBに細木数子
またはその代わりになるものってないでしょうか?
323デフォルトの名無しさん:04/11/19 20:28:05
>>322
何だそれは
それが面白いつもりか?氏ねよ
324デフォルトの名無しさん:04/11/19 21:11:22
325デフォルトの名無しさん:04/11/19 21:14:33
細木数子キボンってんだから氏ねじゃなくて地獄に落とすって返さないと
326デフォルトの名無しさん:04/11/19 22:59:35
>>325

HELL:
  GoTo HELL

こうか?w
327デフォルトの名無しさん:04/11/19 23:00:25
>301
答えられない質問に反応するお前がおかしい。
328デフォルトの名無しさん:04/11/19 23:01:01
>302
いや、お前らのレベルじゃそんな使い方はできないから
安心しろ。
329デフォルトの名無しさん:04/11/19 23:02:04
>312
このスレ一番のアホはこいつだな。存在不要人間。
330デフォルトの名無しさん:04/11/19 23:06:39
最近VB.NETのスレでは>>327みたいな奴ばかりで苦笑する。
331デフォルトの名無しさん:04/11/19 23:29:42
>330
でもお前も苦笑の意味を調べた方がいいぞ。
332デフォルトの名無しさん:04/11/19 23:39:25
>>331
そのこころは?
>>330の用法が間違っている、と?
333デフォルトの名無しさん:04/11/20 00:36:09
>332
どう見ても。それも訂正しようがないほど間違っている。
ただ、こんな書き込みをしてしまっているお前の立場からは
一生かかっても理解不能かもしれない。しばらく
国語辞典とにらめっこしてごらん。
334デフォルトの名無しさん:04/11/20 00:52:42
>>333
言語感覚腐ってるのは君のほうだと思うがね。
ま、こういうのはわからない奴は何をいってもわからないだろうけど。
335デフォルトの名無しさん:04/11/20 01:40:41
>>333
>>331の質問に答えられないんじゃんw
336デフォルトの名無しさん:04/11/20 02:27:36
( ・∀・) ニヤニヤ
337デフォルトの名無しさん:04/11/20 07:09:56
>335
338デフォルトの名無しさん:04/11/20 09:30:36
答えだけくれ厨だろ。
多分デスマなんだが無能で出番がなくて、徹夜でいるだけの奴なんだよ。
339デフォルトの名無しさん:04/11/20 10:52:15
textboxにフォーカスを移した時、カーソルが点滅しない(非表示)にすることは
可能でしょうか?textboxの上にLabelを重ねて、textboxのchangeプロシージャ
で随時labelのcaptionに上書きしようと考えたのですが、別でもっとシンプル
なやり方があるかと思い教えてください
340デフォルトの名無しさん:04/11/20 11:02:52
>>339
それって、入力できないコントロールにしてると思うが、
フォーカスを移動する意味があるのか?
341340:04/11/20 11:04:11
340 訂正 よく考えたら入力はできるんでしたね スマン
342デフォルトの名無しさん:04/11/20 11:05:41
>>340
違います、やりたい事の説明ができていませんでした。
やりたい事はtextboxにフォーカスが来てる状態で点滅をなくしたいというこ
とです。点滅が無い状態のtextboxに文字を入力したいと思っています。
343デフォルトの名無しさん:04/11/20 12:01:08
>>342
無理にテキストボックスのキャレットを消そうなんて考えるより(やってやれないことはないと思うが)
表示にはラベルを使ってフォームのKeyPressイベントあたりでCaptionプロパティいじるほうが
簡単じゃないだろうか。
344デフォルトの名無しさん:04/11/20 12:29:30
>>342
糞UIだな( ´,_ゝ`)プッ
345デフォルトの名無しさん:04/11/20 13:20:24
ラベルってフォーカス取れないんじゃないの?
346デフォルトの名無しさん:04/11/20 13:33:03
フォーカスが取れるかどうかなんてのは重要ではないでしょ。
(必要なら)例えば背景色を変えるとかして入力がアクティブになっているように
ユーザーに見せかけることは可能なのだから、それで必要十分だと思うが。
347デフォルトの名無しさん:04/11/20 14:36:13
そもそもなぜカーソルを非表示にしたいという話になったのだろう。
それが問題だ。
348デフォルトの名無しさん:04/11/20 14:57:23
>>347
頭が固いなあ。
敢えてGUIというかOSのコントロールっぽい雰囲気を殺したい場合だって
想像に難くないと思うけど。

ビジュアルにこだわりたいアプリってのがわからないかな。
別にビジュアルに特段こだわりなくても、Win標準の電卓みたいなUIだって
考えられる。
349デフォルトの名無しさん:04/11/20 17:04:10
>>348
そうかなぁ。
VBなんだから凝ったUIってのは二の次に考えてもいいんじゃない?

確かにVBでやるって所に意義を求めるもアリだと思うけど
それなら中途半端はクソUIになりがちだから
「用意されているコントロールの使用」ってのは捨てるべきじゃない?
そういう意味でカーソル非表示の目的を聞いてもいいような気がするけど、
おいらも頭固いのかなぁ。(ちなみに347じゃないよ)
350デフォルトの名無しさん:04/11/20 17:57:32
>>350
アタマワルイネー
351デフォルトの名無しさん:04/11/20 18:01:12
だな
352デフォルトの名無しさん:04/11/20 20:02:09
>350
おお、自分で頭の悪さに気付いてるのか。えらいぞ、お前。
353デフォルトの名無しさん:04/11/20 21:42:40
>348
別にUIとしておかしいなんて一言も言ってないぞ。
その状況次第ではもっといい方法が出るかもしれないし、って事。
たとえばゲームを作りたいってシーンでそういうのが出たなら、ふつう
TextBoxなんか使わず別の方法取るでそ。
354デフォルトの名無しさん:04/11/20 22:36:57
ですね。
TextBoxは所詮TextBoxだから、そこから逸脱する仕様を実現するなら、
自分でもどきを作るしかない。

で、VBは正直そういうことには向かない、コントロールを派生できないから。
VCとか.netとか、デルファイとかなら今のTextBoxをベースに派生できる。

あと、確か点滅をなくすことはAPIで可能なはずです。
ただ、仕事場じゃないんで調べようがない。
355デフォルトの名無しさん:04/11/20 22:45:46
ActiveXだったら派生できるんじゃないの?
InputManみたいに。
356デフォルトの名無しさん:04/11/21 14:11:50
windows2000 VB4.0

テキストボックスに例えば「5」と入力した後ボタンを押すと
入力した5個分テキストボックスを作るようにしたいのですが
その場合初めから非表示で用意してあるのを非表示を解除して表示するしかないのでしょうか?
出来れば入力した個数分をその場で作りたいんです。
それが出来るのかどうかも分かりません。
357デフォルトの名無しさん:04/11/21 14:43:04
>>356
1個をコントロール配列にしておいて、Load。
358デフォルトの名無しさん:04/11/21 14:46:54
>>357
ありがとうございます
今からやってみます
359デフォルトの名無しさん:04/11/21 18:48:09
キャレットを消すならHideCaretでそ?
360デフォルトの名無しさん:04/11/21 19:12:03
>359
ん?これはどれへの回答?
361デフォルトの名無しさん:04/11/21 20:11:48
>>360
TextBoxのカーソルの話でしょ?
362デフォルトの名無しさん:04/11/21 23:50:45
入力した文字列と同じ名前のPublic変数の値を拾いたいのですが
どう処理すれば良いのか分かりませぬ。助けて、ママン。

Public msg As String
Private Sub Form_Load()
msg = "やらないか?"
End Sub
Private Sub Command1_Click()
MsgBox Text1.Text
End Sub

こんなんでは勿論ダメでした。力技で

If Text1.Text = "msg" Then
MsgBox msg
elseif Text1.Te....(略)

延々とこんな処理書くのも何か変だと思うです。
何かしら素敵な解決策は無いでしょうか。
363デフォルトの名無しさん:04/11/21 23:53:27
>362
ハッシュにすれば?
364デフォルトの名無しさん:04/11/22 03:54:34
BitmapファイルをPictureBox等を使わずに、直接扱うにはどうしたら良いんですか?
365デフォルトの名無しさん:04/11/22 04:20:30
>>364
やりたい事を具体的に説明しましょう
366デフォルトの名無しさん:04/11/22 04:52:41
例えば、Bitmapファイルを読み込んで、その画像の中から●の位置を検出したいとします。
ただ、この画像全体は大きいので、Formには入りきらないのです。
一方、縮小表示では、●が小さくなりすぎます。
こういった処理の場合、どのようにするものなのでしょうか?
367デフォルトの名無しさん:04/11/22 05:07:20
>>366
BMPファイルのフォーマットはご存知か?
自力でOPENして画像情報を処理するもよし、非表示にしたPictureBoxを使うもよし、
方法は色々だが、Formに入らないという理由で検出ができないと言うのは理解できない
●とはどんな物で大きさや検出方法はどうやりたいのかyふじこlp
俺は寝るからあとは誰か頼む。
368デフォルトの名無しさん:04/11/22 08:40:04
>367
逃げやがった
369デフォルトの名無しさん:04/11/22 08:44:34
>>368
いや、十分だろ。
つか、むしろ逃げたのは、>>366のような。
370デフォルトの名無しさん:04/11/22 09:17:16
>369
え?
371デフォルトの名無しさん:04/11/22 09:29:22
>362
名前でアクセスする事の是非はともかくとして、お手軽にやりたいなら
Collectionを使うのがよいかと。
372デフォルトの名無しさん:04/11/22 09:46:59
373デフォルトの名無しさん:04/11/22 14:09:21
VB6.0の質問です。
dlgSaveFile.ShowOpenで既存のエクセルファイルを開きたいのですが、
ダイアログでファイルを指定して開くボタンを押すとダイアログが閉じて
その後何も起きません。何が原因でしょう?
374デフォルトの名無しさん:04/11/22 14:10:15
>373
これはネタか?
375デフォルトの名無しさん:04/11/22 14:10:52
>373
dlgSaveFileってのは何の変数かぐらい書けよ。
376デフォルトの名無しさん:04/11/22 14:11:44
>373
そのダイアログは選択したファイルのファイル名を取得できるだけで
開く機能はないの。

仮に開く機能が付いちゃってたとしたら、開く以外に使えなく
なっちゃうだろうが。ちょっとは頭動かせよ。
377デフォルトの名無しさん:04/11/22 14:12:48
>>375
CommonDialogControlの変数です。
378デフォルトの名無しさん:04/11/22 14:16:05
>>376
名を取得したファイルを開く方法を教えていただけたら幸いです。
379デフォルトの名無しさん:04/11/22 14:26:32
>>378
Shell ShellExecute ShellExecuteEx
380デフォルトの名無しさん:04/11/22 16:01:43
VB6を入手したいんだけどどうしたらいいのかな?
納品用なのでオクとか無しで…
381デフォルトの名無しさん:04/11/22 16:22:15
>>380
普通にMSのサイトいけばいんじゃないかと。

それか、たとえば、自分の会社にコンピューター納品してる業者はいないのかい?
そっちに相談するのも手ですよ。
382デフォルトの名無しさん:04/11/22 16:33:10
>380
納品用の物を2ちゃんで相談か。
お客さんもかわいそうになぁ
383デフォルトの名無しさん:04/11/22 16:37:01
すげーな。ほんと、すげーな。
384デフォルトの名無しさん:04/11/22 16:59:54
MSからライセンスだけ買うとかって聞いたことがあるけどな
385デフォルトの名無しさん:04/11/22 17:04:46
メディアがあって、ライセンスの追加の場合は、上位を購入でOKなはず。
(現状では特にオフィス97とかでよくある)

メディアの入手は正直難しいかもね。大手メーカーの営業とかに知り合いいればなんとかなりそうだけど。
386デフォルトの名無しさん:04/11/22 17:10:15
387デフォルトの名無しさん:04/11/22 17:11:26
出入りの営業に聞きゃ一発だな。
自分とこでも、ソフト買ってんだろ。客の立場で同じことやってもらってるだけだよ。
388380:04/11/22 17:19:47
みなさんいろいろありがとー
ちっちゃな会社なんでMSDN入ってないのよね

まずは出入りの営業さんに聞いてみます
389デフォルトの名無しさん:04/11/22 17:26:43
>388
なんて会社?
390デフォルトの名無しさん:04/11/22 17:50:16
MSDN入ってないってなんだろ。。
391デフォルトの名無しさん:04/11/22 17:51:22
>390
それは分かってやれよ。てか、お前は勝手にコピーして
インストールしてる口か?
392デフォルトの名無しさん:04/11/22 17:54:47
>>391はヘルプのMSDNと、開発サポート契約としてのMSDNを混同していないか?
393デフォルトの名無しさん:04/11/22 17:57:19
>392
そういうわけじゃないんだけど、普段からソフトを手軽に
コピーしちゃってるから、そういうの疎くなっちゃってんじゃないの?
って感じで。
394デフォルトの名無しさん:04/11/22 18:01:23
>>393
意味がわからない。説明してくれないか?
395デフォルトの名無しさん:04/11/22 18:01:35
別にMSDN未加入=違法コピーじゃないだろうが。
MS系の開発が主体なら必須に近いしコストパフォーマンスいいけど、
それ以外の業務とかと半々なら、別に入らないでも個別にコンパイラ買えばいいし。
そもそも入って得られる情報っていっても・・・。
396デフォルトの名無しさん:04/11/22 18:06:21
>394
ごめん。俺の書き込みに関しては俺も意味が分からなくなってきた。
言いたいことはあったのだが、書いていることは言いたいこととは
全然違ってしまった。
397デフォルトの名無しさん:04/11/22 18:06:40
ああ、そういうことか。なっとく、失礼した。(MSDN)
398デフォルトの名無しさん:04/11/22 18:10:02
>396
うけるなw まーそういうこともあるか。
399デフォルトの名無しさん:04/11/22 18:10:09
なんだったんだ
400デフォルトの名無しさん:04/11/22 19:05:45
きっと >>396 が日常的に(ry
401デフォルトの名無しさん:04/11/22 19:09:45
(ryって何?
402デフォルトの名無しさん:04/11/22 19:42:25
real yard
403デフォルトの名無しさん:04/11/22 19:44:04
>402
ウソついてんじゃねーよ、このタゴ作が!
404402:04/11/23 17:13:31
なんで俺の名前を知ってるんだよ。おまえはスパーハカーか?
405デフォルトの名無しさん:04/11/23 17:16:10
>404
not found
406デフォルトの名無しさん:04/11/24 13:41:00
VB6
Win XP

で開発しています
コモンダイアログでEXCELファイルを選択させるのですが
このEXCELファイルにあるすべてのシート名を取得したいと考えています
どのようにすればよいでしょうか?
407デフォルトの名無しさん:04/11/24 14:10:23
>>406
えーと、このスレ内で何度も同じようなネタが上がってるので釣りでしょうか?
まず、ファイル名の取得とか、それを元にExcelでファイルを開けていることを前提とします。

その状態でWorkBookオブジェクトからWorkSheetsコレクションを舐めて、それぞれのWorkSheetのNameをみればいいだけ。

前提部分の技術はこのスレにあるからそれを参照。
408デフォルトの名無しさん:04/11/24 14:11:44
オプションボタン・チェックボックスをプログラムの中から追加したいのですが
どのようにすればよいでしょうか?
409デフォルトの名無しさん:04/11/24 14:17:45
>>408
最近同じ質問があったはず、400程度のスレは読んでみてくれ。
410デフォルトの名無しさん:04/11/24 14:24:53
>409
うそつけ。ねーよ。
411デフォルトの名無しさん:04/11/24 14:31:12
配列で検索。
それで理解できないんじゃ、作れないよ。
412デフォルトの名無しさん:04/11/24 15:24:14
VB6(SP6)
でプログレスバーの出し方がわかりません。過去ログより
>ツールバーのコントロールの選択→MicroSoft Progress Bar
にて、出すことができると書かれていたのですが、
コントロールの中にMicroSoft Progress Barがありませんでした。
どうすれば良いでしょうか?

マイク音量をプログレスバーに出したいと思っています。
413デフォルトの名無しさん:04/11/24 16:48:19
>411
根拠は?
414デフォルトの名無しさん:04/11/24 16:51:46
>>413
400程度のスレで、>>409->>410間の5分程度しか見ないで無いよといっている人です。
配列で検索すればこのスレに答え書いてありますから、それ見て判らなければプログラマとして論外でしょ。
415デフォルトの名無しさん:04/11/24 16:57:24
416デフォルトの名無しさん:04/11/24 17:06:30
>414-415
それはオプションボタン・チェックボックスを動的に作る話ではない。
>357を見ても同種の話題だと気付かずに質問しているのだから
お前らはレベルを合わせて回答する必要がある。
それができないのであれば回答すべきでない。
プログラマとして論外かどうかはお前らには関係ない。
417デフォルトの名無しさん:04/11/24 17:06:54
結論:>414はアホ。
418デフォルトの名無しさん:04/11/24 17:07:40
>417
それは違うな。


結論:>414はとてつもなくアホ。救いようがない。
419デフォルトの名無しさん:04/11/24 17:11:50
dare ka >>412 ni kotaete yareyo.
420デフォルトの名無しさん:04/11/24 17:11:52
>>416からまた同一人物の連書き野郎の荒しですか。
で?
>>357みて判らなければ再度質問すればいいだけ。
いつものように、回答だけ書けってまた暴れるんですか?w
421デフォルトの名無しさん:04/11/24 17:15:05
>>412>>419
|-`).。oO(Microsoft Windows Common Controls 5.0…)
422412:04/11/24 17:16:26
なんとか自力でプログレスバーを出すことができました。
ただいまマイク入力音量を取得するのに苦戦してます。

>419さん
ありがとうございます。
423デフォルトの名無しさん:04/11/24 17:22:13
>420
質問スレだからな。お前らは回答だけ書けばいいの。
424412:04/11/24 17:27:49
>>421さん
カキコ気づきませんでした。ご返答ありがとうございます。
425412:04/11/24 18:13:43
ライン入力された音(マイク)の大きさを数値として取り込みたいのですが、
音量の取り込み方がさっぱりわかりません。
詳しい方がいましたらご教授願います。
426デフォルトの名無しさん:04/11/24 19:17:11
VBは長島茂雄であるといえよう。
427デフォルトの名無しさん:04/11/24 19:23:49
>426
字が違います。
428デフォルトの名無しさん:04/11/24 19:54:12
>>425
適度な短い録音して、最大の値をとればいい
429デフォルトの名無しさん:04/11/24 20:07:12
>>423
へぼい自演なんかして恥ずかしい奴だな
430デフォルトの名無しさん:04/11/24 20:12:00
>>428
いや、そもそも音量の数値化の仕方がわからないんじゃまいかと。
俺もわからんが。つか、やったことない。
431412:04/11/24 20:22:23
>>428
わかりづらくてすみません。
最大音量の値というよりも、音量値の取得の方法がわからず困っています
>>430
コンポーネント等を用いて簡単にできるようなことではなさそうな感じが
してきました。
432デフォルトの名無しさん:04/11/24 20:27:13
>>431
逆にコンポネートになってないと、めんどくさそうだけどね。
あとは、MMCとか、APIであっさり該当なものがありそうな気がす。
てゆうか、そうなってないとVBからでは難しいではないかと。(=なんらかのインターフェイスが用意されてると思う)

まあ、せっかくなので調べ見よう。見つけたら書き込みますわ。
回答じゃなくてごめんね。
433412:04/11/24 20:29:21
>>432さん
どうもお手数かけましてすみません。
私もわかり次第、書き込みします。
434432:04/11/24 20:36:31
MMCじゃなぃ、MCIだ失礼しましすた。
435429:04/11/24 20:48:54
すいません。訂正します。
へぼい自演なんかしてしまって恥ずかしいです。
精神科に通院中なので許してください。
436デフォルトの名無しさん:04/11/24 20:49:25
>434
MMR?
437432:04/11/24 20:50:05
ちょうどよいのがありました。
MCIではなくて、API使うみたいですね。

ttp://tk.no-ip.info/

このサイトの方が、VBでレベルメータ作ってます。
ばっちりVBのソースがついてるので、参考にしてみては?
私はまだ詳しく読んでませんが、winmmのAPI宣言して、そちらをのみを利用して作ってますね。
DirectXとか、MCIとかはなくてもできそうですよ。
438デフォルトの名無しさん:04/11/24 20:54:43
>>435
平然と嘘ついてりゃ社会から弾かれるよな
かわいそうに
439デフォルトの名無しさん:04/11/24 20:58:21
>438
自覚があるからまだましじゃん?
440デフォルトの名無しさん:04/11/24 21:01:03
>>435の騙り、哀れだ
ほんとに人間終わってる
441デフォルトの名無しさん:04/11/24 21:05:44
>>439
自分から病院かよってるから〜なんて言う奴は、
自覚ないよ。
自覚ないっいうか、病院勘違いしてるでしょ、確実に。

ほんとうは、「俺様特殊な病気にかかってることにしたい病」なんだけど、
鬱病ですとか言いたくなっちゃう人んですよ。たぶん。
442デフォルトの名無しさん:04/11/24 21:10:38
>435
429になりすましたり自作自演したり、廃人ってほんとにいるんだね。
443デフォルトの名無しさん:04/11/24 21:13:29
>441
なるほど
444デフォルトの名無しさん:04/11/24 21:18:55
>435
廃人の自作自演って初めて見た
どこまでやれるか見てやろう
445デフォルトの名無しさん:04/11/24 21:31:48
ばれても自演を黙々と続けるのが廃人の特徴か
明らかに普通のひととは違う
446デフォルトの名無しさん:04/11/24 21:34:16
>435
もう稚拙な自作自演はやめたのか
447デフォルトの名無しさん:04/11/24 21:37:04
>>435
騙り屋のチキンっぷりをもっと発揮してみ
448デフォルトの名無しさん:04/11/24 21:38:06
つうか、釣られすぎですよ。みなさん。
449デフォルトの名無しさん:04/11/24 21:40:06
>435
どうせ人間終わってんだから多少インチキしたって構わねーだろ
もっと下劣なことやってみな
450412:04/11/24 21:43:02
>>432さん
どうもありがとうございます。
まだVBをはじめて3日(C/JAVAの経験はあります)なので、
解読に時間がかかってますが、ありがとうございます。
参考になります。
451デフォルトの名無しさん:04/11/24 22:09:29
>449
今槍玉にあげられてるのお前だよ?
452デフォルトの名無しさん:04/11/24 22:12:20
せめて「>>449」と書け。
453デフォルトの名無しさん:04/11/24 22:17:01
>452
なんで?
454デフォルトの名無しさん:04/11/24 22:22:47
>>453
クリックできないから
455デフォルトの名無しさん:04/11/24 22:31:49
>>453
すぐにピンとこないところが廃人らしいな
456デフォルトの名無しさん:04/11/24 22:35:02
>>451なんかほんと廃人らしいね。
嘘ばれても槍玉とか抜かしてるし、最後疑問形だし。
おもしれーからもっとやれよ
457デフォルトの名無しさん:04/11/24 22:38:20
>454-455
アホ。そりゃお前がIEで見てるからだろ。
ちなみに「>」と「>>」の違いは理解してる?
458デフォルトの名無しさん:04/11/24 22:38:54
>456
最後が疑問形の理由も分からないんだ。
459456:04/11/24 22:39:26
>457
え?違いあるんですか?
460デフォルトの名無しさん:04/11/24 22:39:40
>>457
自演してもうんこ臭いんだよ、廃人
461456:04/11/24 22:39:59
>458
すいません。今分かりました。
462デフォルトの名無しさん:04/11/24 22:40:21
>460
どれとどれが自演なの?そしてその証拠は?
463デフォルトの名無しさん:04/11/24 22:40:52
>>458
廃人の理屈はわかんねーな
464デフォルトの名無しさん:04/11/24 22:41:59
>>458
もっとインチキやれよ、下劣廃人
465デフォルトの名無しさん:04/11/24 22:42:23
>>457
なんでもh抜きしちゃう人ですか?
466デフォルトの名無しさん:04/11/24 22:43:20
>463-464
もうネタ切れなのね。ご苦労さん。
467465:04/11/24 22:44:11
>465の補足です。

質問に質問で返すのは回答できないからです。
468デフォルトの名無しさん:04/11/24 22:44:46
>467
あーそう、誰も君の能力の限界以上のことを要求しないよ。
俺が悪かった。
469デフォルトの名無しさん:04/11/24 22:45:30
今すげー勢いで書き込み→あと○○秒待ってを繰り返してるんだろうなぁ。
470デフォルトの名無しさん:04/11/24 22:45:58
>>466
>釣り(反応したらバカ)
まだ終わんねーよ、もっと廃人らしい卑しいとこ見せつけてみな
471デフォルトの名無しさん:04/11/24 22:47:12
>470
え?俺が相手してあげないとダメなの?
君一人じゃできないの?
ん?ボクちゃんは病気だから一人じゃ何にもできないのかな?
472デフォルトの名無しさん:04/11/24 22:47:27
>>466
>釣り(反応したらバカ)

自作自演と騙り屋のおまいをもっと晒してやるよ
473470:04/11/24 22:47:53
>471
うっせーな。友だちいねんだよ。寂しいんだよ。
相手しろや。
474デフォルトの名無しさん:04/11/24 22:48:18
>472
どれとどれが自作自演なのかな?俺は答えを知ってるけど。
475デフォルトの名無しさん:04/11/24 22:48:58
>>466
おまいの生き恥もっと晒してやるよ、廃人さんよ
またレス番騙ったら?
476472:04/11/24 22:49:26
>474
>420-474が俺の書き込みだ。文句あるか。
477デフォルトの名無しさん:04/11/24 22:50:32
>475
どの辺が生き恥になるんだ?
478デフォルトの名無しさん:04/11/24 22:50:35
>>466
自作自演してインチキもっとしろよ
生き恥晒せ
479デフォルトの名無しさん:04/11/24 22:50:56
>477
あー、そうか。お前の相手してるってことが生き恥になるな。
うわー、こりゃ参ったわー。
480デフォルトの名無しさん:04/11/24 22:52:14
>>466
>釣り(反応したらバカ)

廃人のおまいは散々粘着してそのザマか
インチキ野郎、もっとやれ
481デフォルトの名無しさん:04/11/24 22:52:24
このスレももう終わりだな。次スレ必要な奴いる?
482デフォルトの名無しさん:04/11/24 22:53:36
>>466
>釣り(反応したらバカ)

ぐずぐずしてねーでもっと卑しいことやれよ
483デフォルトの名無しさん:04/11/24 22:55:08
>>466
>釣り(反応したらバカ)

もう終わりか、精神崩壊野郎が
484デフォルトの名無しさん:04/11/24 22:57:46
>466
廃人独特の屁理屈と嫌味が足りねーよ
485デフォルトの名無しさん:04/11/24 22:57:58
おい、どうした。もう終わりか。
相手してくれないと泣くぞ。泣くもん。
486デフォルトの名無しさん:04/11/24 23:01:15
>485
ごめんな。オジサンもそんなに暇じゃないんだよ。
メンヘル板ってとこに行ってみたらどう?
487デフォルトの名無しさん:04/11/24 23:02:30
>>466
自分に都合のいい自作自演もっとやれよ
この卑怯者が
488デフォルトの名無しさん:04/11/24 23:03:44
>>485-486
さっきとパターン同じじゃねーかよ
もっと臭い自演しろよ、廃人
489デフォルトの名無しさん:04/11/24 23:04:49
>>485-486
お前の本当の卑しいとこみんなに見てもらえよ
さっさと続きやれ
490デフォルトの名無しさん:04/11/24 23:07:58
>>485-486
もっと卑屈になれよ。お前の穢れはこんなもんじゃねーだろ
491デフォルトの名無しさん:04/11/24 23:11:25
>>485-486
お得意の猿芝居どうしたんだよ、待たせないでさっさやれ
492デフォルトの名無しさん:04/11/24 23:13:40
RELOAD連打して待ってんだよ、さっさとやれ
493デフォルトの名無しさん:04/11/24 23:21:15
>>485-486
未熟な思考と精神の壊れっぷりを見てもらってよかったな、廃人さんよ
494デフォルトの名無しさん:04/11/24 23:22:24
>493
なんで自分の書き込みにずっとレスしてるの?
自分の中の小さい人と会話してるのかな?
495デフォルトの名無しさん:04/11/24 23:23:24
>493
とりあえず気の済むまで一人で続けてて。
1時頃もう1回様子見に来てあげるから。
496デフォルトの名無しさん:04/11/24 23:24:29
Dim a, b
b = String(20, ChrW(12288))
a = ChrW(12288) & ChrW(9675) & ChrW(32) & ChrW(44) & b & ChrW(9675) & ChrW(62) & vbCrLf & ChrW(12288) & ChrW(47) & ChrW(-29) & ChrW(39) & ChrW(9734) & b & ChrW(-247) & vbCrLf & ChrW(-241) & ChrW(32) & ChrW(62) & b & ChrW(-241)
msgbox a
a = Replace(a, ChrW(9734) & b, String(15, ChrW(9632))) & vbCrLf & vbCrLf & ChrW(12363) & ChrW(12288) & ChrW(12417) & ChrW(12288) & ChrW(12399) & ChrW(12288) & ChrW(12417) & ChrW(12288) & ChrW(27874)
msgbox a
497デフォルトの名無しさん:04/11/24 23:25:36
スマソ誤爆
498デフォルトの名無しさん:04/11/24 23:26:51
八行無能
499デフォルトの名無しさん:04/11/24 23:31:52
>>494
ひとに擦りつけるのうまいな
自演ばれても平然と続けるあたりが廃人ぽくていい
もっとインチキやれよ
500デフォルトの名無しさん:04/11/24 23:35:35
>>494
人間の体をなしてないおまいの廃人っぷりを発揮しろよ
501デフォルトの名無しさん:04/11/25 09:21:52
日付も変わった事ですし、気を取り直して次の質問ドゾー
502デフォルトの名無しさん:04/11/25 10:09:04
TextBoxに長文を表示するプログラムを作成しています。Timerを使って1文字ずつ
順番に表示する事まではできたのですが、文章が枠内に収まりきらない場合、画面
上で見えていない部分にどんどん文字が追加されていきます。文章が全て表示しきれ
ばスクロールを使って全文読む事はできるのですが、これを表示の最中枠内に収ま
りきらない場合はスクロールを自動的に1段ずらすという事は可能でしょうか?
vb6.0を使用しています。
503デフォルトの名無しさん:04/11/25 10:28:12
TextBoxならばマルチラインとかを調べる。

そもそもで、リッチテキストボックスにする。
またはPictureBoxに文字を描画するほうが自分で全て制御できそう。
504デフォルトの名無しさん:04/11/25 11:13:27
>>503
マルチラインはTrueに設定しています。
TextBoxでは難しいでしょうか?
505デフォルトの名無しさん:04/11/25 11:18:05
>>504
テキストボックスでも、たぶん制御できるけど(前やったことがあるので)
はっきり言うと計算式つくるのめんどいよ。
…というより、テキストボックスってそのあたりシステムにお任せできるのがいいところであって、
あえて、そこを、制御していくなら、>>503の言うように、PictureBoxのがよいと思う。
アドベンチャーゲームの台詞のところみたいなのつくりたいんだよね?
506デフォルトの名無しさん:04/11/25 11:27:37
>>505
>アドベンチャーゲームの台詞のところみたいなのつくりたいんだよね
はい、その通りです。以前作成した時はどのような計算式をたてたのですか?
507デフォルトの名無しさん:04/11/25 11:30:48
>>506
ピクチャーボックスでやったほうがいいよ。
スクロールはピクチャーボックスを親コンテナにして描画用ピクチャボックスを子にするイメージで。
(見せれば一発なんだが、文章で伝わるか・・・)

文字の縦横はMSDNとかでフォント周りを調べないと駄目。
文字幅とか文字間とかの説明があったはず。
508デフォルトの名無しさん:04/11/25 11:55:23
>>502
Text1.SelStart = Len(Text1.Text)
のような処理じゃだめなん?
509デフォルトの名無しさん:04/11/25 12:02:44
>>506

Text_LogWindow.SelLength = 0
Text_LogWindow.SelStart = なんちゃら

で、どの部分見せるかっていうのはコントロールできるんだけど、
アドベンチャー的なアレでそれを使おうとすると、まあ、色々あるです。
チャレンジするならやってみて。
510デフォルトの名無しさん:04/11/25 12:03:05
>>508
あら、かぶったわ。
単純に最後をつねに、表示しつづけるなら、それでおけだね。
511502:04/11/25 12:05:53
みなさんレスありがとうございます。早速チャレンジしてみます。
512初心者:04/11/25 12:29:23
あるINTEGR型の変数の値が、1から100までの中に入っているかどうか知りたいです。
if i=1 or i=2 or 1=3 or 1=4 or・・・
と書く以外に、方法はないのでしょうか
513デフォルトの名無しさん:04/11/25 12:36:50
>>512
if ( ( i>=1 ) and ( i<=100 ) ) then
  MsgBox "範囲内です。", vbOkOnly, "サンプルプログラム"
end if
514初心者:04/11/25 12:38:06
>>513
ありがとうございます。早速試してみます
515502:04/11/25 12:41:31
Timerを使って順に文字を表示していく手法をとっているせいで教えてもらった
.SelStartを上手く使えませんでした。スクロールは上手く下にいってくれてい
るのですが画面がずっと点滅してスクロールも上下に動き続けているいるような
状態です。恐らくTimerで1文字ずつ順番に表示してしまっているからだと思いま
す。
516デフォルトの名無しさん:04/11/25 12:47:52
>>515
もう、文字単体ではなく絵と割り切ってピクチャーボックスの実装に移ったほうがいいと思うよ。
TextBoxやLabelはあくまで単体の文字や文字列を入出力する為のコントロール。
見え方より入力しやすさを前提に構成されてるから。
517502:04/11/25 14:34:35
動作成功しました。
今まではTextBoxに[すでに表示してある文章]+[追加する1文字]を代入していた
のですが、教えてもらった.SelStartと.SelTextを使用することで解決しました

1文字追加する前に.SelStartで最後の個所に移動し、そこで.SelTextに追加す
る文字を代入すると点滅もせずスムーズに文章が表示する事ができました。
TextBoxはあきらめてPictureBoxの手法を探そうと考えていたのですが、なんと
かTextBoxのままで済みました。アドバイスを下さったみなさんありがとうござ
いました。
518デフォルトの名無しさん:04/11/25 16:56:50
dim Rs as new adors.recordset

do until Rs.eof

'リストボックスに代入
lstList.AddItem Rs.Fields("項目")

loop

リストボックスに値を代入する過程で、MoveNextを書き忘れました。
PauseやBreakが利きません。
タスクマネージャでは応答なしとなっていますが、
プログラム自体は実行されているようです。
大量にリストボックスに行が追加されていますが
このリストボックスって制限行というものは持っているのでしょうか?

OSはXPでVB6 SP5です。
519デフォルトの名無しさん:04/11/25 17:05:37
気にする部分が違うような・・・。
EXE実行ならタスクマネージャから殺す。
デバッカなら、コントロール+ブレークで止まるはず。
520デフォルトの名無しさん:04/11/25 17:09:18
>>517
色々あるでしょ?

それはさておき、.SelStartってのは微妙に今回のような使い方のためのプロパティではないので、
本来の意味も勉強しといたほうがいいよん。と添えてみる。
521デフォルトの名無しさん:04/11/25 17:15:04
>>519
VBは使って5年目になる者ですが、
とめることができません・・。
コントロール+ブレークやファンクション+ポーズでも止まりません。
タスクからキックするとおそらくVBごと落ちてしまいます。
522デフォルトの名無しさん:04/11/25 17:25:08
VB 6.0 sp6
Win XP Sp1
です

CSVファイルをLine Inputで1行づつ読み込み、Split関数で配列に分割しようとしています
読込んだデータが
AAA,BBB,CCC
という場合は
 配列(0):AAA
 配列(1):BBB
 配列(2):CCC
とうまくいくのですが

AAA,"BBB,bbb",CCC
という場合次のようになってしまいます
 配列(0):AAA
 配列(1):BBB
 配列(2):bbb
 配列(3):CCC

これを
 配列(0):AAA
 配列(1):BBB,bbb
 配列(2):CCC

というふうに、""で囲まれている場合は無視するようなはできるでしょうか?
よろしくお願いします
523デフォルトの名無しさん:04/11/25 17:26:27
VB 6.0 sp6
Win XP Sp1
です

CSVファイルをLine Inputで1行づつ読み込み、Split関数で配列に分割しようとしています
読込んだデータが
AAA,BBB,CCC
という場合は
 配列(0):AAA
 配列(1):BBB
 配列(2):CCC
とうまくいくのですが

AAA,"BBB,bbb",CCC
という場合次のようになってしまいます
 配列(0):AAA
 配列(1):BBB
 配列(2):bbb
 配列(3):CCC

これを
 配列(0):AAA
 配列(1):BBB,bbb
 配列(2):CCC

というふうに、""で囲まれている場合は無視するようなはできるでしょうか?
よろしくお願いします
524デフォルトの名無しさん:04/11/25 17:27:12
Split関数をつかわない。
まじめに、一文字ずつよみこんで手動で分割してみし。それで解決。

逆だとめんどくさかったんだけどね。
525デフォルトの名無しさん:04/11/25 17:27:20
>>521
Alt+ブレークだったかな・・・。
まあ、デバック時に自動西武していないなら、自分の愚かさを呪うしかない。

ちなみに、Listの限界はヘルプみたいほうがいいとおもう。
多分IntegerかLongの限界値かなんかだと思うが、それ以前にリソース使い果たして落ちるとは思う。
526デフォルトの名無しさん:04/11/25 17:38:37
どっちにしろ、その落ち方では、デバッカーにもどってくることはないな。
527デフォルトの名無しさん:04/11/25 17:43:26
いや、デバッカ上なら無限ループしてもブレーク+なんかで止まったはず。
最近やらんからすっかり忘れてるけど。
なんで元の人、ブレークとなんかを叩きまくれ・・・もう死んでるかな?w
528デフォルトの名無しさん:04/11/25 17:48:42
ちゃうちゃう。リソース
使い果たして落ちた場合ねん。
その落ち方じゃ、デバッカにはもどらんだろうな。
529デフォルトの名無しさん:04/11/25 17:55:34
それはその通り。
だから、今頃はよっぽど運良く下手で時間の掛かる処理を書いていなければ、なんまんだ。
530デフォルトの名無しさん:04/11/25 18:05:37
なむなむなむ、のんのなーもあみんなーも(うろ覚え)
531デフォルトの名無しさん:04/11/25 20:02:33
>523
「"」を長さゼロの文字列にReplaceした後にSplitするとか。

532デフォルトの名無しさん:04/11/25 21:51:18
VBってオブジェクト名に日本語使えるんだね。
使ってるソース見てちょっとびびったのでカキコ。
533デフォルトの名無しさん:04/11/25 21:54:26
>>523
ADOとかSQLが使えるなら、CSVファイルをODBC接続で読み取ると
””を自動的に消してくれるよ。
534デフォルトの名無しさん:04/11/25 22:45:51
いや、””を消したいのではなく、””間を1つの文字列として分割したくないんでしょ?

自分でロジック実装、前から順番に
Interで ” と ,を両方調べて、 ,が先ならそこまで分割、”が先なら次の”までで分割でいいんじゃないの?
535デフォルトの名無しさん:04/11/25 23:06:13
変数一個用意して、1を代入
"がでてきたら、その変数に-1をかける。
て処理を作る。

   → "がでてくるたびに、1と-1を繰り返すことになる。

で、
それとは別に
,がでてきたら、その前とその後で分割するって仕組みを作る。

ただし、先に用意した変数が-1の時は、分割せず無視する。

そんな感じではいかが?
536デフォルトの名無しさん:04/11/25 23:17:22
>>535
Boolean型使ってもよさそうだな。
537>>534:04/11/25 23:18:05
InStrです、はい。すみません。
1文字づつ取るなら>>535さんのやり方でOKだと思います。

538デフォルトの名無しさん:04/11/26 00:42:35
>>534
ADOでCSVに接続すると、""間にカンマや改行があっても分割せずに認識しますよ。
検証の為にサンプルを作ってみました。
ただし、手元にVBがないのでVBSで作りました。

set rs = CreateObject("ADODB.Recordset")
sql = "SELECT * FROM nullpo.csv"
con = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=C:\hoge"
rs.Open sql, con, 0
WScript.Echo ( "[" & rs.Fields(0).Value & "]")
rs.Close

このサンプルだとCSVの1行目を強制的に見出しとして認識するので、
1行目もデータとしてみるために接続文字列を下のように変えてもよいです。

con = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\hoge;" & _
"Extended Properties=""text;HDR=No;FMT=Delimited;"";"
539デフォルトの名無しさん:04/11/26 07:17:55
リストビューのカラムヘッダを押せなくすることは可能でしょうか。
立体的なまま押せなくなるのでも、フラットになるのでもどちらでも
構いません。

Common Control のバージョンは5.0です。
リストビューコントロールへのメッセージの投げ方くらいは
分かるので、「このメッセージを調べろ」的な情報を頂ければ
後はなんとか調べてみます。

よろしくお願いします。
540デフォルトの名無しさん:04/11/26 10:04:21
専用用紙で印刷できる範囲が予め決まっている場合のTextBox等の印刷方法につ
いての質問です。今まではLen()を使って文字数を調べて一定の文字数以上だった
らLeft()とMid()を使って文章を2つに区切って2段に分けて印刷するという方法
でした。しかしこの方法だと全角半角が混ざっていると何だかバランスの悪い状
態で印刷されてしまいます。バランス重視にして2段に分ける場合は文章を半分ず
つにしてみたのですが、今度は端に空白ができてしまい文字数をもっと増やして
も良いのではという話になってしまいました。
2段に分けて印刷する時はどういうやり方でやっていますか?Left()Mid()を使う
以外でもっと効率の良い方法もあるのでしょうか?
541523:04/11/26 10:27:21
昨日は連続カキコミすみませんでした

皆様
いろいろなアイデアをありがとうございます
ADOで接続し参照すると望んでたとおりの結果がでました
ありがとうございました
542540:04/11/26 14:05:21
お願いします。
543デフォルトの名無しさん:04/11/26 14:17:14
教えてください〜〜

HTML HELPをつくってまして
VB6から状況にあったHELPページを開こうとしてるのですが
コンテキストIDの設定方法がわかりません
どこでIDを設定するのでしょう?

HELP側でAliasは設定しました。
これとIDとの定義付けがどこかで必要なんですよね。
ご存知の方よろしくお願いします。
544デフォルトの名無しさん:04/11/26 16:11:08
string型の配列内にデータが存在するかを判定したいのですが
やはり配列の先頭から検索するしかないのですか?

環境は
VB 6.0 SP6
Windows XP Home Edition SP1
です
545浴寳:04/11/26 16:18:19
浴恊
546欲恊:04/11/26 16:18:56
欲恊
547デフォルトの名無しさん:04/11/26 17:42:13
VBAから VBを呼び出すには?
548デフォルトの名無しさん:04/11/26 17:47:47
Shell "C:\Program Files\Microsoft Visual Studio\VB98\VB6.EXE"
549デフォルトの名無しさん:04/11/26 17:47:58
>>547
Shell("VB6.exe")

まあ、VBの何を呼びたいの?モジュール内の関数?フォーム?EXE?
550デフォルトの名無しさん:04/11/26 18:00:20
>548-549
ちょっとワラタ
551デフォルトの名無しさん:04/11/26 19:00:30
>>540
全角半角を考慮して、1段目をMaxで印刷するやり方が知りたいの?
552デフォルトの名無しさん:04/11/26 20:01:33
どなたか>539をお願いします。
553デフォルトの名無しさん:04/11/26 22:32:50
>>543
こっちで聞いたほうがいいんじゃない?
http://pc5.2ch.net/test/read.cgi/tech/1083001859/
554デフォルトの名無しさん:04/11/26 23:31:47
興味半分でvbいじりはじめたんだけどvb6コモンダイアログで
ファイルセーブのデフォルトのファイルネームって
CommonDialog1.FileName = "hogehoge"みたく直接格納していいの?

コード内でファイルネームをつけるとダイアログ側でファイルネームを
変更した時に反映されずにそのままデフォルト名が渡されて保存されてしまうんだが・・・
File_Saveに渡した時にファイル名を改めて取り直すとばっかり思ってたんだけど
そうじゃないのね?
555デフォルトの名無しさん:04/11/27 00:14:35
>>554

>ダイアログ側でファイルネームを変更した時に反映されず

んなこたぁない。ちゃんと反映されるよ。
556デフォルトの名無しさん:04/11/27 05:43:24
もの凄く初心者な質問なのですが宜しいでしょうか?

次のようなテキストファイルがあると仮定します。
左の数字は行番号です。

  1| 2ch
  2| 3ch
  3| 8ch

このファイルを1行ずつ 「X」 「Y」 「Z」 に代入したい場合には、
下のようなソースを書けば良いですよね。

  |    Open "data.ini" For Input As #1
  |    Line Input #1, X, Y, Z
  |    Close #1

ところが、逆に書き込む場合にはどうすれば良いのでしょうか?
「Print」 を使うと、スペースで区切られてしまいますし、
「Weite」 を使うと、カンマで区切られてしまいます。
改行で区切って書き込むコマンドがあれば教えて下さい。

お願い致します。
557デフォルトの名無しさん:04/11/27 08:18:37
配列を返す関数って作れるの?
配列のサイズとかは関数内部で確保すれば
いいのかな。
558デフォルトの名無しさん:04/11/27 08:45:04
>>556
Print #1, X & vbNewLine & Y & vbNewLine & Z

または

Print #1, X
Print #1, Y
Print #1, Z

お好きな方ドゾー
559デフォルトの名無しさん:04/11/27 09:34:13
vbnewlineとvbcrlf、どっち使えばいいの?
560デフォルトの名無しさん:04/11/27 09:59:31
>>557
簡単に作れるからヘルプ嫁。
561デフォルトの名無しさん:04/11/27 12:47:25
ListVIeewの背景画像を指定すると右上に来ますよね?
あれを右下に表示したいんですが、どうすればいいんですか?
562561:04/11/27 16:50:21
×右上
○左上
563デフォルトの名無しさん:04/11/27 18:55:04
>>559
どっちでもいい。
564デフォルトの名無しさん:04/11/27 21:47:17
>>559
vbCrLfは文字コードCRとLFの組み合わせ、vbNewLineはOSに依存した改行コード。
Office for MacのVBAではvbNewLineとvbCrLfではコードが違うはず。
改行という意味ならvbNewLineの方がふさわしい気がするが
多くの場合vbCrLfが改行として使われている。
565デフォルトの名無しさん:04/11/27 22:34:17
>>561
ListViewにピクチャーなんとかっていうそれっぽいプロパティがあるから適当にいじる。
詳しくはヘルプを。
566デフォルトの名無しさん:04/11/28 00:10:09
間違えて.NETの方に投稿してしまいました・・・

リストビューのレポートスタイルで、カラムをクリックしてソート
したときに▼とか▲をヘッダに出したいのですが、あれはやっぱり
オーナードローとかいうものをしないとダメなのでしょうか。
VBでも可能なんでしょうか。

567デフォルトの名無しさん:04/11/28 07:38:26
「Command1」 は、「終了」 というボタンです。

「Command1」 をクリックした時に、「Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)」 と
全く同じ処理をしたいのですが、どうすれば良いでしょうか?

同じ内容をコピペして合計2回書くことも出来るんですが、
複雑化した際に同じものを2つ書くことが非効率な気がして・・・。

お願いします。

  --------------------------------------------------------------------------
  Private Sub Command1_Click()

  〜ここから、下の Sub Form_QueryUnload を呼び出したい。 
  
  End Sub
  --------------------------------------------------------------------------
  
  Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

    〜 ここに終了時の処理が書かれている 〜

  End Sub
568556:04/11/28 07:39:10
>>558
丁寧な回答ありがとうございます。

Print #1, X 
Print #1, Y 
Print #1, Z 

を使わせて頂きました。
これは便利ですね・・・。
569デフォルトの名無しさん:04/11/28 07:53:18
>>567
call Form_QueryUnload
570デフォルトの名無しさん:04/11/28 09:03:00
普通に「Unload Me」すれば、QueryUnloadも呼ばれないか?
571569:04/11/28 09:15:22
>>570
確かにそのとおりですね。
572567:04/11/28 11:15:42
>>569
本当にありがとうございます。
そのコマンドを知るためにどれだけ苦労したかと思うと 。・゚・(*ノД`*)・゚・

友人が.NETに移行するとかで貰ったVB6なんですけど、インストール時にMSDNのCD要求されて
そんなCD貰ってないから無視したら、ヘルプも見れないんですよね
やっぱり、VB6を購入すると、MSDNのCDが付いているんでしょうか・・・

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

>>570-571
試してみたら、Unload Me でも QueryUnload が呼ばれていました。

今まで下のように書いていたのですが、
そう考えると無限ループになりそうですね。

QueryUnload で Unload Me → QueryUnload を呼び出し → また、Unload Me があって
 →QueryUnload を呼び出して・・・・・。

  --------------------------------------------------------------------
  Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) 

  〜ここに終了時の処理〜

  Unload Me
  End Sub 
  --------------------------------------------------------------------

でも、何故か無限ループにはなりませんでしたが・・・。
VB君って賢いのかな。

本当にありがとうございました。
573デフォルトの名無しさん:04/11/28 19:47:25
既出だったらマジですいません。
分かれば教えてください。
VB4.0で、特定のフォルダに置かれているVBAが記述されているExcel2000を開きます。
このときマクロの「有効・無効」のポップアップが出てしまうのですが、これを出さないようにVBで制御できますか。

ちなみに、セキュリティーレベルは「中」以上の設定にしておくという条件あり。
574デフォルトの名無しさん:04/11/28 19:51:26
>573
>既出だったらマジですいません。
そこまで謝るならなぜ事前に過去ログを調べないんだ?
575デフォルトの名無しさん:04/11/28 19:51:59
どなたか>566をお願いしますorz
576デフォルトの名無しさん:04/11/28 20:21:49
>>573
そんなことするのはウィルスっぽくてどうかと思うけど。

VBだけで可能か知らないけど、
新しいスレッドを作成してダイアログを定期的に監視させ、
ダイアログが開いたらすかさず閉じさせるっちゅうのはどう?
577デフォルトの名無しさん:04/11/28 20:50:09
>573
http://office.microsoft.com/ja-jp/assistance/HP052012011041.aspx
 これでも読んで良く考えよう。
 Excelのマクロにデジタル書名をつければ済む事なんだがな。
578デフォルトの名無しさん:04/11/28 20:53:21
>>577
573ではないが、おもしろそうな資料をありがとう。
実は私もマクロにデジタル署名をつける実際をしりませんですた。
使わないしなぁ・・・個人でやってる分には。
579デフォルトの名無しさん:04/11/28 22:45:59
色々とレスありがとうございます。

今までEXCEL95を呼び出していたんですけど、今度EXCEL2000を呼び出すことになり、
使用者に「ポップアップが出てそそままEnter押すとマクロ動かないよ!」と言われてしまったため、
先ほど記述の作業が必要になってしまった次第です。

現在、他のVBでの作業に追われて過去ログ調べずに書き込みしちゃいました。
落ち着いたら過去ログ調査します。

>576
>577
ありがとうございます。参考にして挑戦してみます。
580デフォルトの名無しさん:04/11/28 23:15:05
>579
http://office.microsoft.com/ja-jp/assistance/HA010550371041.aspx
 577出だしたのは良く見たら、Excel 2003だったので、
Excel2000はこちら。
書庫内のMP3ファイルのヘッダーを取得する方法を知っている人いない?
582デフォルトの名無しさん:04/11/29 01:02:09
>>581
書庫ってなんやねん。ZIPやLHAで圧縮されているファイルのヘッダか?
ファイルを展開するのがいやなら自前で展開ルーチン書くしかなかんべ。
583デフォルトの名無しさん:04/11/29 03:00:55
教えてください。
次のようなアプリケーションを作ろうとしています。
「スタートアップをsub mainにして、sub main内でformを明示的にインスタンス生成し、
 formがuserによって閉じられたらアプリケーションも終了させる。」
このときインスタンス破棄をどのタイミングでして良いのか分かりません。
生成は次のように行っています。

Sub Main()
Set gForm = New frmMain
gForm.Show
End Sub

WM_DESTROYを待って
Set gForm = Nothing
すべきなんでしょうか?
584デフォルトの名無しさん:04/11/29 05:45:11
>583
ネタか?これは。
やれるもんならやってみな。
585デフォルトの名無しさん:04/11/29 06:53:02
>>583
まったくわかってない。最初っからやり直し。
586デフォルトの名無しさん:04/11/29 09:30:33
>585
このスレは何のスレだ?







あほ
587デフォルトの名無しさん:04/11/29 10:54:52
なんつーかすげーな。
何語使いなんだ君は。
588デフォルトの名無しさん:04/11/29 11:03:15
WinAPIだけで画面作っていた、VC以前のC使いだろうか・・・。
Mainが無いと落ち着かない。メッセージループは理解してる。なのにVBを全く勉強していない。
589デフォルトの名無しさん:04/11/29 11:07:13
それにしても、Main関数からスタートさせられるように、
プロジェクトのプロパティ変更できるなら、
…つーか、そもそも、フォーム作成の段階で気づきそうなもんだが。
590583:04/11/29 11:30:10
ご指摘のとおりC&SDKでしか開発していない化石PGです。
form一つで良いならスタートアップをformにしとけば良いと思うのですが、
複数のformを開いて(つまりソース中のgFormをcollectionもしくは配列にして)、
全てのformが閉じられたらアプリケーションの終了としたいのです。
591デフォルトの名無しさん:04/11/29 11:57:16
あなたの流儀・知識と、VBでの流儀・VBの振る舞いは違うのですから、
まず、VBのそれらをきちんと覚えることが先決だと思いますが。

付け焼刃で自分の流儀でVBの動作を捻じ曲げると、メンテする人が参ります。
Winアプリの基本線が判ってるんだから、それほど苦労せずにVBを理解できると思いますが。
基本的にVBはクローズされた箱庭ツールと認識してかからないと駄目。
592デフォルトの名無しさん:04/11/29 12:10:43
>>590
暗黙のなんちゃらとか、暗黙のインスタンスとか、
そんなものが色々できまくるので、それらを、把握するところまででいいと思われますよ。
VBは、その暗黙のなんとか生成させないようにしようとすると泥沼にはまりますので。

Formで言うと、普通にFormから起動したりloadで呼ぶと、
Form名と同じ名前のインスタンスが暗黙に生成されますねん。
消滅するのは、参照してるものが全部なくなった時。

後は、参照を格納してる変数の寿命がどこで消滅するか把握しとけば、
set ○○=nothing発行必要有無、ENDの発行タイミングはわかると思いますが。
593583:04/11/29 12:27:31
一応MSDNは目を通したんですが、
いまいち参照変数の寿命の部分がよくわからんかったのです。
VBでは「作動中の関数が無く、全てのformがunloadされた段階でアプリケーションのが終了する」
と捕らえているのですが、
>>592さんの意見からの自分の解釈では
全formがUnloadされる → アプリ終了=変数寿命キター
 → formインスタンス消滅 = set ○○=nothing必要ない
というわけですね?
594デフォルトの名無しさん:04/11/29 12:43:16
>>593
VBはいい加減なもんだから、
細かな事気にする必要は無い。

終了は、「end」 これだけ。
フォームも全部一気に閉じて最強。

ファイルをクローズする必要もフォームを閉じる必要もない訳だ。
595デフォルトの名無しさん:04/11/29 12:43:23
なんか、
アプローチの仕方が根本的に違う気がするが・・。

作動中の関数が無くて、すべてのFormがUnloadされた状態で、
どうやってset **=nothingするんですかい?
自分で書いたレスよく読んでみると、なんか変なこといってるのが分かると思いますよ。

コードありきじゃないんですよVBは、オブジェクトありきなんですよ。
596デフォルトの名無しさん:04/11/29 12:44:04
オブジェクトありきっつうか、暗黙で生成されるインスタントありき・・ですな。
でも、なんか自分で書いててひねくれた言い方だなって思う。
597デフォルトの名無しさん:04/11/29 12:45:13
>>594
いやまあ、それだとたまにプロセスのこるプログラムになっちゃうけどねん。
598デフォルトの名無しさん:04/11/29 12:47:07
>>594
元質問者の質問を汲んでないぞ。

複数の同格のフォームを全て表示して、それらが全て終了したらアプリ終了。
ってことをやりたいんだと思う。

私なら設計時点で仮でもいいから、メニューのみのフォームでも作って親をきめるけど。w
599デフォルトの名無しさん:04/11/29 12:50:29
>>598
俺もそうするなw
いっそのこと、生成された瞬間にHideでもいいしなw

ぶっちゃけ、そんなもんよVBって。
600デフォルトの名無しさん:04/11/29 13:02:42
元質問者の考えで、もし実現するなら以下の方法かな?

隠れた仮メインフォームを作成。
仮メインがロード時に他のフォームを起動、そのインスタンス管理は仮メイン。
各フォームはアンロードイベントで、仮フォームの自分のインスタンスフラグかなんかを落とす。
仮メインはタイマーで回っていて、全てのインスタンスが無くなったら終了。

タイマー云々と仮ー他フォーム連携部分はWindowsメッセージで置き換えも可能。
その場合はサブクラス化で検索。
601583:04/11/29 13:13:43
さすが昼時は人が多いすね。感謝。

>>595
>作動中の関数が無くて、すべてのFormがUnloadされた状態で、
>どうやってset **=nothingするんですかい?
なもんでメッセージループ組んでWM_DESTROY待つんかなと最初は思ったわけです。

やりたいことは>>598さんのおっしゃるとおりのことです。
dummy親を作っとくわけですか。。。なんとも効率の(ry
タイマーやVBでのサブクラスがあまり好きでないので
form管理用にスレッドを一つ作って、セマフォとかで管理ってのもありですかね?
602デフォルトの名無しさん:04/11/29 13:22:17
>>601
あのさ、VBのやり方って言ってる意味理解してる?
APIごりごり、スレッド使いたい云々だったら、それ用の言語でやればいいだけ。
DelだってVCだってBCCだって何でもあるよ。

VBでやりにくいことをワザワザVBでやるのは無意味。
603デフォルトの名無しさん:04/11/29 13:25:55
>>601
いや、なんちゅーか、VBつかわないほうがいいよ。本気の話で。
向いてないと思う。やりたいことと、あなたの気質に。
別に、馬鹿にしてるわけでもなくて、素でいっとるのよ。

>>601
ちゃうちゃう。だから、その発想がそもそもの間違いなんだって。
JavaでもCでも、

メイン関数  → オブジェクトとしてのフォーム管理
  ↓
多種制御

で、メイン関数ありきでしょ。

VBは。
             己の管理
               ↑
メインフォーム + 他フォーム + 他フォーム
    ↓                   ↓
メインフォームの管理のみ       己の管理

という形か

(つづきます)
604デフォルトの名無しさん:04/11/29 13:26:09
続き

>>598>>599で提案しているように。

メインフォーム → 他子フォーム
   ↓
各種制御

という形で、

コードはあくまでメインフォームに付属するものなんですよ。
(自動で生成される暗黙のインスタンスをもった)オブジェクトありきなんですな。

そのあたりを勘違いしてるのかと。
605デフォルトの名無しさん:04/11/29 13:31:14
もし、マルチで動く監視コンソールみたいのを作りたいなら。
VBで作るなら1本のEXEでマルチスレッドは考えないほうがいい。
複数のEXEでそれそれ別プロレスにしてしまえ。
606デフォルトの名無しさん:04/11/29 13:32:34
それかOCXにするかだな。つかいずらいと思うが。
EXE複数に一票。
607583:04/11/29 15:28:19
そもそもVBっつーもんはランタイムの隠し制御は気にせず、
かつ、DLL等はあまり使わずに標準機能で楽しろと。
なるほど。勉強になりました。
&納得できました。有難うございました。
608デフォルトの名無しさん:04/11/29 15:45:10
なんかまだ勘違いしてる気がするが、その解釈で問題あるかというと、ない。
609デフォルトの名無しさん:04/11/29 16:30:02
教えてください。

TextBoxに入力することが出来ない文字があります。

IME標準では変換せず、IMEバッドの手書きで、
入力させるような文字です。
旧字体というやつだと思います。

入力させる方法はあるのでしょうか?


610デフォルトの名無しさん:04/11/29 16:33:52
windows2000以上で、
VBにきっちりサービスパックをあてて、
かつ、テキストボックスのフォントを、該当フォントにしてみたらだめかね?

とゆうか、その文字ってのが、何語の何なのかはっきりわかれば、
もうちょっと違うアドバイスができる気がす。
611609:04/11/29 16:41:13
読みは「リュウ」という文字です。

この字「隆」に草冠をつけ、「生」の上に
横棒が追加している文字になります。

SPは3まで当ててあります。


612デフォルトの名無しさん:04/11/29 16:42:14
IMEパッドではCJKお構いなしに表示されるからUnicodeに収録されているCK由来の漢字だろう。
613デフォルトの名無しさん:04/11/29 16:51:38


614609:04/11/29 16:52:35

>>613

どうやって入れたの?
615デフォルトの名無しさん:04/11/29 16:55:15
>614
アホ
616609:04/11/29 16:55:59
?
617609:04/11/29 16:56:49
618デフォルトの名無しさん:04/11/29 16:58:29
蕯蕯蕯蕯蕯
619デフォルトの名無しさん:04/11/29 17:00:49
文字コードは興味なかった人はほんとわからんよ。
そういぢめてやるな。

まあとりあえず、SP6まで当てることと<実際は、5,6あてるだけ。4までは5に含まれるから。
テキストボックスの表示フォントをUNICODE対応のフォントにかえてみるとか。
それで出たら問題解決。
620デフォルトの名無しさん:04/11/29 17:16:09
>>583-608のあたり、レベル低いやり取りみたいな進行だが
本当はレベル高い話だな。これがVBか、、、
621デフォルトの名無しさん:04/11/29 17:18:11
>>619
TextBox自体はUnicodeでの入出力ではなかったような・・・。
プログラム側から取れるのはUnicodeなんだけど、外(=人)とのやり取りはANSIだったような・・・。
622デフォルトの名無しさん:04/11/29 17:31:27
>620
は?
623609:04/11/29 17:56:23
外字登録することにしました。

色々とありがとうございました。
624デフォルトの名無しさん:04/11/29 18:39:11
お前さんがそれでいいってんならそれでいいや。
人様のPCの外字をいじくるようなことをしなければ。
625デフォルトの名無しさん:04/11/29 19:03:06
>624
人様のPCの外字をいじろうが、お前には関係ない。
626デフォルトの名無しさん:04/11/29 19:26:34
>>583に触発されていろいろ調べてたんだけど
ttp://www.surveytec.com/prog/vb/kouza/chap3.html
でSub Mian内でUnload Form1をする必要あるのか?
627デフォルトの名無しさん:04/11/29 19:39:07
>>626
Form1という変数で示される、実行と同時に暗黙的に作成されたForm1型のインスタンスを消滅させてるんでないかい?
FormX()っていう変数でForm1型のインスタンス(群)を管理するために。

別にそのままの残しておいてもかまわないっちゃかまわないような気もす。
無駄だけどね。
628デフォルトの名無しさん:04/11/29 19:44:02
どうでもいいけど Main 内でモーダルで開くってのはなしなの?
629デフォルトの名無しさん:04/11/29 20:22:02
Excelのなかに入っているVisual Basic EditorでVBの勉強を始めたのですが、
ここで作ったものを動かすには、やはりVBのソフトが必要でしょうか?
630デフォルトの名無しさん:04/11/29 20:29:34
VBじゃなくて、Excelが必要。
631デフォルトの名無しさん:04/11/29 23:00:58
>>583
つーかさ、何がしたいわけ?
変数ってのはグローバルな物以外は関数を抜けたとき寿命がくる。
VBってのはガベージコレクションを持っているのだから
アプリケーションが終了したらグローバルな物も勝手に消える。

通常ガベージコレクションをもっている言語ってのはC/C++でいう
deleteなんてインスタンスを削除する命令は無い。
あるのはインスタンスを参照している変数をクリアする命令(VBでいえばNothingの代入)
インスタンスはどこからも参照されなくなった時点で勝手に削除される。(というかこれがガベコレなんだが)

Mainから起動したとしても、何もせずともフォームが
すべてUnload(フォームを閉じても同じ)された時点でアプリが終了するようになっている。
(どこからも参照されなくなった時点ではない)
Main関数を抜けてもフォームがLoadされているのならアプリは終了しない。
暗黙に作成された変数がアプリ終了時点で(Unloadされた)フォームを参照していても
ガベコレの動作の設計どおりにアプリ終了時点でクリアされるから問題ない。
これはオブジェクト指向らしいきちんと設計された動き。
632デフォルトの名無しさん:04/11/29 23:05:26
まあ要するにゴチャゴチャ言わず
For Each frm In Forms
 Unload frm
Next
にしとけってこったw
633デフォルトの名無しさん:04/11/29 23:21:13
VBよくわかってない奴が変なイメージを植え付けようと
変なことばっかり言っているね。>>632とか。
634デフォルトの名無しさん:04/11/29 23:35:30
>>633
そんなこといったら>>627>>628もじゃんよ。
635632:04/11/29 23:39:18
おれは確信犯だってば。
wから読み取ってくれよ。
確信犯という言葉は・・・って指摘は勘弁な。
636583:04/11/29 23:47:18
まだやってるこの話題、、、なんか申し訳ない

>>631
VBてガーベージコレクションがついているのですか。
結構高級言語なんですね。勉強になりました。
637デフォルトの名無しさん:04/11/29 23:49:28
ついてません。
638デフォルトの名無しさん:04/11/29 23:53:09
>>636
そりゃ、昔のBASICの時代からついてるじゃん。
639デフォルトの名無しさん:04/11/29 23:55:11
要するにガベージコレクションがついていないと思って
Nothingの代入がインスタンス削除命令(C/C++のdelete)だと勘違いして
自分で削除しなくてはならない。いつどうやってやるのかと悩んだってことでFA?
640583:04/11/30 01:50:03
>>639
FA
641デフォルトの名無しさん:04/11/30 02:24:01
なんつーか、やっぱりすげぇな。
642デフォルトの名無しさん:04/11/30 05:46:32
というより、今VB6手に入れるの難しいって知ってた?
販売とっくに中止していてプレミアが付いているからね。

でも、VB.NET は使い物にならないじゃん。
Microsoft .NET Framework がインスコされているパソコンじゃないと、
VB.NET で作ったアプリは動かないんだろ?

だったら、Windows 2000 や XP のデフォルトの状態じゃあ使えないからね。

VB.NET で作ったソフトをフリーソフトとして配布したとしても、
.NET Framework 入れるのが面倒という理由で使ってもらえないんじゃね?

ということで、VB6は必須だな
643デフォルトの名無しさん:04/11/30 06:51:36
「VB6」 の 「Timer」 の 「Interval」 に、
65536ミリ秒以上の値を指定したのですが、
どうすれば良いでしょうか?

約1分ちょっとの時間しか指定できないのならば、
ラーメンタイマーすら作れませんよね。

原始的に、Timerを2つ設置して、
1個が限界になったら、もう1個が作動するみたいな
仕掛けを作るしかないんですか?

教えて下さい。
644デフォルトの名無しさん:04/11/30 06:52:22
つり?
645デフォルトの名無しさん:04/11/30 06:55:34
>>643
別にTimerを二つおかなくても1分を2回待てば2分。
1000回待てば1000分だろ。
646643:04/11/30 07:24:54
>>645
ユーザーが入力した時間毎に作業をさせたいんですよ。
例えば、「5」分「31」秒と入力したら、その時間毎に・・・。

5分の時点で1分を5回待って、31秒を1回待つようにすれば良いんですよね。
教えていただきありがとうございました。

というか、タイマーに時間制限を設けるなんて不便でしょうがないですよね
65537ミリ秒ごときでオーバーフローなんて20年前のPCじゃないんですから!
647デフォルトの名無しさん:04/11/30 07:45:19
そのアプリだけを起動しているのならともかく、
5分も待てば相当誤差が発生するだろうけどな。

俺なら数秒単位のIntervalにして
残り時間が少なくなったときに目標時間までの残り時間をセットする。

たとえば5分31秒なら、10秒ごとに残り時間をチェックして10秒以上
残り時間があれば10秒。10秒を切っていれば残りの秒数とか。
648643:04/11/30 08:50:44
>>647
ありがとうございます。
参考にして一定期間ごとに分割する事にします。
649デフォルトの名無しさん:04/11/30 09:33:08
グローバル変数に起動時間を記録。
1秒毎タイマーで起動時間と現在時刻の差を計算。
それだけじゃないの?
650デフォルトの名無しさん:04/11/30 09:51:57
>649
解雇
651デフォルトの名無しさん:04/11/30 09:56:47
>>649
割り込みの回数的に、>>647がスマートかと。
普通のアプローチならそれでいい。
652デフォルトの名無しさん:04/11/30 10:11:42
>>647の取り方にもよるけど、残り時間の管理をタイマーのインターバル値でやったら駄目だよ。
タイマーはあくまで指定時間”以上”の間隔の保証。
だから、25秒を10秒×2+5秒とした場合、その3回のイベント毎に誤差が生じる。

毎秒っていう負荷を気にするならば、残り10分あれば1分毎、それ以下1分まで10秒毎、1分切ったら毎秒(かそれ以下)
っていう間隔で、起動時間との差を取ればいいじゃないですか。
起動時間との差は絶対値だから誤差はほとんど生じない。
653デフォルトの名無しさん:04/11/30 11:34:13
ID , Name
100,佐藤
200,田中
ABC , 木村

という形式のCSV(M_NAME.csv)をADOで読込もうと思ってます
SQLに
SELECT Name FROM M_NAME.csv WHERE ID = 100
とやると「佐藤」を取得できるのですが

ABCのようなコードの場合エラーとなってしまいます
数値型と文字型が混在いているからでしょうか?
どんな型でも読込めるような方法はあるでしょうか?
よろしくお願いします

VBは6.0 SP6
OSはXP HOME SP1です
654デフォルトの名無しさん:04/11/30 11:55:07
クオートしたら解決とかそんなオチだったりしない?
かなり骨髄レスしてるが。
655デフォルトの名無しさん:04/11/30 12:23:20
WEHRE ID='100' じゃないの?
656デフォルトの名無しさん:04/11/30 12:32:08
俺もそうだと思う。
それ、100の場合は「例外的に」なぜか「うまくいっちゃってるだけ」だよ。たぶん。
657デフォルトの名無しさん:04/11/30 23:28:44
質問お願いします。
VBでうまく文字列のポインタ渡しをする方法はないでしょうか?
状況説明ですが、VBでテキストエディタ作ってます。そのときテキストを
一行ずつ文字列型変数にして、動的配列に持たせています。
ここで、例えば改行等をすると、文字列のコピーを下のループのようにさせています。

  'モジュールレベル宣言
  Dim m_Buf() as String
  Dim BufCnt as Long    'BufCntは行数で常にReDim m_Buf(BufCnt)してある

  '改行されたら
  ReDim m_Buf(BufCnt)
  For i = BufCnt to NowIdx + 1 Step - 1
    m_Buf(i) = m_Buf(i - 1)   '(A)
  Next i
  BufCnt = BufCnt + 1

としています。ただこれだと行数が6万行ほどからかなり時間がかかるようになります。
原因は(A)の部分で文字をメモリを再割り当てしているからであるようなので
そこで「VBでのString型変数はStrPtr関数の戻り値と同じ値を格納している、
つまり文字列のポインタ」ということを利用して(A)を
  Call CopyMemory(ByVal VarPtr(m_Buf(i)), ByVal VarPtr(m_Buf(i-1)), 4)
もしくわループ自体を
  Call CopyMemory(ByVal VarPtr(m_Buf(NowIdx + 1)), ByVal VarPtr(m_Buf(NowIdx)), 4 * (BufCnt - NowIdx))
としました。Cでいうポインタ渡しです。結果として文字はコピーされ、速度も高速なのですが、
しかしここで問題発生で、この後m_Buf()の要素にアクセスしようとすると何度目かでメモリエラーになります。
VBで文字のポインタ渡しをうまくできないでしょうか?よろしくおねがいします
658デフォルトの名無しさん:04/11/30 23:40:56
>>657
後者の場合、コピーするメモリ領域が重なっているのでCopyMemoryがうまく動かない可能性がある。MoveMemoryにしろ。
但し、それだけで解決するとは思えないがな。
659デフォルトの名無しさん:04/12/01 00:29:34
>>657
前の添え字
文字列
次の添え字

なんて構造体?にして
先頭から順に並べるなんてどうなんだろう。
#僕はプログラム書きではないから当てにならんけど。
660659:04/12/01 00:47:31
雰囲気でいうと双方向連結リスト
ttp://www-ise2.ise.eng.osaka-u.ac.jp/~iwanaga/programming/stl/list.html
661デフォルトの名無しさん:04/12/01 09:48:12
双方向リストで管理でOKでしょうね。
VBでメモリー操作をやるという発想がまず間違いな訳で。

でも、そもそもリッチテキストボックスとかで、文字列をプログラムが管理して改行とかしてるのか?
その辺りって適当にコントロール標準でやってくれるんじゃないの?
662657:04/12/01 11:02:03
>>659
双方向リストやってみます。

>>661
いろいろ特殊機能付けたかったので標準コントロールは使わずに
TextOutで描画してます。
663デフォルトの名無しさん:04/12/01 13:39:14
Visual Basic 6.0で開発して、そのプログラムをインストール用にEXE作りました
で、そのEXE起動させてみてもインストール出来ません

オリジナルのVBじゃないからインストール出来ないんでしょうか?
664デフォルトの名無しさん:04/12/01 13:55:46
ディストリビューションウィザードを使う。
又は、このあたりを参考に
ttp://dobon.net/vb/installer/index.html
665デフォルトの名無しさん:04/12/02 00:31:08
>>663
インスコ用のソースを見せてもらわんとなんともいえね
666デフォルトの名無しさん:04/12/02 11:38:01
とゆうか、オリジナルのVBってなんじゃら?
なんとなくわかるようなわからないような。
667デフォルトの名無しさん:04/12/02 11:56:15
まさか割れ(ry
668デフォルトの名無しさん:04/12/02 12:01:22
商品売上の明細部分を作成する場合VBでは何を使うとやりやすいでしょうか?
Access出身でSubFormが使えない事が分かって、どういうやり方でやるか困っ
ています。
参考になるサイト等もあるのでしょうか?
669デフォルトの名無しさん:04/12/02 12:45:25
>>668
もすこし詳細キボンヌ
670668:04/12/02 13:01:48
>>669
レスありがとうございます。
無理矢理文章での説明になってしまうのですが、今回販売購買のソフトを作成する
ことになりました。私が担当になったのは売上プログラムです。
売上プログラムは顧客名を入力し、何の商品をいくつ購入したかを保存します。
Accessで作業をしていた時は顧客データを入力する所を親Formとし、明細部分には
[オートフォーム:単票形式]で作成したFormをSubFormとして親Formに組み込んで
いました。VBでも同じやり方ができればと考えていたのですが、SubFormは使用で
きないと知り、何とかこれに近い方法を探しています。
私の会社では今まで、FormにTextBoxを並べていました。明細の数が多くなる場合
にはScrolBarを使って、下にずれていっているように見せる方法をとっていました

ただもっとシンプルに作成できるのではないかと思い質問しました。
VB6.0使用者です。よろしくお願いします。
説明不十分のところがあれば教えてください。
671デフォルトの名無しさん:04/12/02 13:06:25
>670
伝票入力系のOCXを使うがよろし。
うちはDenpyoMan使ってた。
672デフォルトの名無しさん:04/12/02 13:26:29
VB6でCSVを読込んで処理をするプログラムを組んでいます

ID,NAME,NO
1,佐藤,100
2,鈴木,A100
3,木村,"100,200"

というCSVに対してADOで接続しているのですが
2レコード目以降の「NO」の項目がNULLになってしまいます
いろいろ調べたのですが
1レコード目の「NO」の値が数値だからのようです
1レコード目の「NO」を"B111"に変更すると
すべて読むことができます
データの型に関係なく読み取るような処理はできますでしょうか?
673デフォルトの名無しさん:04/12/02 13:30:52
ADOを使用せずに、普通にファイル読み込みを行う。
ADOはDBアクセスを前提にしてるんだから、データに型があることは前提です。
674668:04/12/02 13:49:46
>>671
情報ありがとうございました。早速上司と話してみたのですが、購入予定は無い
そうです。
VaSpredとMSFlexGridというコントロールはあるのですが、使い方が理解できて
いない状況です。このどちらかを使えば>>670のような方法も可能になるのでし
ょうか?
675デフォルトの名無しさん:04/12/02 14:42:21
どちらを使用しても可能じゃない。

SpreadはExcelのスプレッドの粗悪品、FrexGridはDataControlとあわせればAccessの一覧表部分だけ再現可能。
AccessはあくまでAccessで、VBで標準のみでUI作るなら、その範囲内で要件を再検討するほうが良いと思うが。
676669:04/12/02 16:35:01
>>670
さて・・・サブフォームというと
いわゆる一枚の明細に沢山商品名が書いてあることを
メインとサブと考えていいのかな?一般的に

もしそうだとしたら・・・グリッドがどうとか言う前に滅茶苦茶簡単だと思うんだが・・・

なんか勘違いしてたらスマソ
677669:04/12/02 16:38:40
ゴバ━━━━(゚∀゚)━━━━ク!!!!

一般的なサブフォームの考えっぽ orz

____________________________
| | | 例えばこんな感じで左で顧客データ
| | | 右に明細 とかって・・・アカン?(´・ω・`)ショボーン
| | |
| | |
|_____|_____________________|
678デフォルトの名無しさん:04/12/02 17:41:56
Denpyomanって6万くらいだべ?せいぜい2〜3人日。
作るアプリの規模がどれくらいかわかんないけど、普通に考えて元は取れるでそ。
679デフォルトの名無しさん:04/12/02 17:49:36
>>678
横レスだが、値段の問題じゃなく、こういう市販を嫌う人って多いのよ。
なんでも自分でやるって考えみたいな。
680デフォルトの名無しさん:04/12/02 18:41:12
>>679
俺が昔勤めてた会社も自社専用ライブラリとか作ってやってたよ。
小さな会社だったけど。
681デフォルトの名無しさん:04/12/02 18:47:57
そんなもんか。
俺的には外部OCX使って楽してこそのVBだろって思うんだが・・・
データアクセス部分を自前で書いてライブラリにする、とかならともかく、
正直UIには手間掛けたくないなぁ。
682デフォルトの名無しさん:04/12/02 18:54:44
まあ考え方は色々だからねえ
後々買ってきたライブラリでは処理できない事にぶつかったり
OSのバージョンアップでそのライブラリが使えなくなったり
そのライブラリ作った会社がつぶれたりサポートがetc.
した場合を言い出したらきりがないが。
俺はあるのなら買ってくる派だが、自社ライブラリは悪いとは思わないな
683デフォルトの名無しさん:04/12/02 21:40:58
 VB6.0に標準で入っているコンポーネントの中で、AccessのSubFormに
一番近い雰囲気を持たせられるコンポーネントは他にあるんだね。
 DataRepeaterコントロールと言うのがそれで、後は下記リンク参照。

http://www.microsoft.com/japan/developer/library/VBCon98/vbconusingdatarepeatercontrol.htm
684デフォルトの名無しさん:04/12/02 23:24:18
>>672
set rs = CreateObject("ADODB.Recordset")
sql = "SELECT * FROM kuma.csv "
con = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=C:\hoge"
rs.Open sql, con, 0
rs.MoveFirst
Do Until rs.EOF
WScript.Echo ( "[" & rs.Fields("NO").Value & "]")
rs.MoveNext
loop
rs.Close

おかしいなー。VBSだけどこれで問題なく動くよ。
どんなコードを書いてるの?
あと環境は?
当方WinXPSP1、MDAC2.7。

con = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\hoge;" & _
"Extended Properties=""text;HDR=Yes;FMT=Delimited;"";"
もしかしたらこれで正しく動くかも。
685668:04/12/03 10:56:02
みなさんたくさんのレスありがとうございました。OCXは今までに何個か購入して
使っているのですが、新しく「Denpyoman」を買うつもりはないみたいです。
>>678さんのいう通り、事務処理系のソフトを作っている自分の会社なら6万円で
も十分に元がとれると思ったのですが、値段が高いそうです。
>>683さんの教えてくれた「DataRepeater」は興味があるのですが、誰も使った
ことがないので、時間をゆっくりかけて調べて行きたいと思います。
今回の作業に関してはSpreadを使う事になりました。そこでSpreadについて質問
させてください。Spread内でのGotFocusプロシージャとはないのでしょうか?
列が移動する度にステータスバーに何を入力するかを表示したいと考えています。
686デフォルトの名無しさん:04/12/03 11:34:45
2重起動防止の処理としては下記のコードが有効ですよね。

If App.PrepInstance Then
End
End If

でも、先に起動していたほうを(強制)終了することを試みたのですが上手くいきません。
ちなみに次の操作を行いました。

クラス名を"ThunderRT6Main"、キャプションを"App.Title"としてFindWindowでハンドルの取得を試みたのですが、
そこで得たハンドルに"WM_QUIT"を送りつけた。
結果、上手く終了しませんでした。

有効な方法をご存知の方はみえませんか?
687デフォルトの名無しさん:04/12/03 11:38:04
ごめんなさい。上の文章では自分でも何を言ってるのかわかりません。

2重起動防止の処理として、先に起動していたほうを(強制)終了したいのですが上手くいきません。
試した処理は下記のとおりです。

・クラス名を"ThunderRT6Main"、キャプションを"App.Title"としてFindWindowでハンドルの取得
・取得したハンドルに"WM_QUIT"を送る

有効な方法をご存知の方はみえませんか?
688デフォルトの名無しさん:04/12/03 11:43:32
OSは?
この手の話は95系とNT系で若干異なる。

まあ、二重起動ってことは、殺される側も自分なんだから、死に易いようにきちんと作ればいいんじゃないのか?
689デフォルトの名無しさん:04/12/03 11:49:04
あと、一応 ExitProcessとTerminateProcess が該当するけど、きちんとヘルプ読んで慎重に使用しましょう。
690デフォルトの名無しさん:04/12/03 11:55:23
>>688
OSは、2000/XPです。
>殺される側も自分なんだから、死に易いようにきちんと作ればいいんじゃないのか?
ごもっともです。勉強します。

>>689
プロセスIDを取得するとき、ウィンドウハンドルが必要になりますよね。
上記のハンドル取得方法には問題ないのでしょうか?
691デフォルトの名無しさん:04/12/03 12:06:13
ベタだけど、アプリ正常起動時にプロセスIDをどっかに出力しておく。
後起動側はインスタンスを確認し、存在したらそのプロセスIDを殺しに行く。
692デフォルトの名無しさん:04/12/03 12:22:23
LeaveCell イベント
693デフォルトの名無しさん:04/12/03 12:23:07
>>692>>685 へのレス。
694668:04/12/03 12:58:02
>>692
ありがとうございます。成功しました。
Spredでもいろいろできるんですね、まだまだ勉強が必要ですが。
695687:04/12/03 13:24:46
>・クラス名を"ThunderRT6Main"、キャプションを"App.Title"としてFindWindowでハンドルの取得
ハンドルを取得してから、プロセスIDの確認してみます。
とりあえずもう少し悩んでみようと思います。
皆さん、ありがとうございました。
696668:04/12/03 16:00:04
連続質問で申し訳ないのですが、調べてもわからなかったので教えてください。
SpreadSeetで行ヘッダを選択し、行全体を指定している時に[Delete]キーを
押すと、その行を削除するという動作をさせたいです。
行の削除方法はすぐに見つかったのですが、行全体をしていしているという判
断をどのプロシージャで行えばいいのかわかりません。
ご存知の方がいましたら是非お願いします。
697デフォルトの名無しさん:04/12/03 16:50:48
>696
SpreadのOperationModeが「単一選択モード」になってるのなら
SelModeIndexプロパティから行番号を得られます。

そうでないのなら、Clickイベントでヘッダがクリックされるたびに
その行番号をどっかに保持しておく、ぐらいしか思いつきません。
ごめんなさいね。
698デフォルトの名無しさん:04/12/03 22:40:05
>>696
"ActiveRow"っていうプロパティがあったと思ったが…
699デフォルトの名無しさん:04/12/04 03:27:54
VB.NETの質問はここでしていいのですか?
昨日購入し、まだ条件分岐を覚えたレベルです。
binフォルダにあるexeはVBがインストールされているPCでしか使えない。
という事ですが、配布されている方はどうやってexeを作っているのですか?
アプリケーションをうまく初期化できませんでした?見たいに表示されるみたいです。
自PCじゃないので詳細なエラーメッセージがわからないのですが、宜しくお願いします。。
700デフォルトの名無しさん:04/12/04 03:47:16
>>699
良くない。>>1に書いてあるだろ…

相手のPCに.NET Frameworkが入ってないとか…
701668:04/12/04 09:38:27
>>698
はい、ActiveRowというプロパティは調べました。実際にDelete処理を行う時に
使うつもりです。今自分ができないところは行ヘッダを選択しているのをどうや
って知るかです。行ヘッダを選択してもActiveColは列の1番目を認識していて
、この状態でDelete処理を入れると、単に列の1番目でDeleteキーを押しても行
を削除してしまうのです。
702デフォルトの名無しさん:04/12/04 18:32:11
よろしくお願いします。
@Timerの時間は、最長何分位まで設定可能なのでしょうか?
 60数秒に設定したらダメで、60秒(60000)はOKでした。

703デフォルトの名無しさん:04/12/04 18:45:44
MaskEdBoxで、日付型変数(dat)を表示したいのですがうまくいきません
MaskEdBox1.Format = "ggge年m月d日"
MaskEdBox1.Mask = "&##年##月##日"
MaskEdBox1.Text = dat

MaskEdBox1にdate型変数(dat)を入れようとすると
「実行エラー380 プロパティの値が不正です」と出ます。
.textの位置を.maskの上に持っていくと.textに代入したdate変数の値は失
われます。
1週間悩んでます誰か助けて下さい(涙
704デフォルトの名無しさん:04/12/04 18:48:50
>>702
2^16-1 = 65535(ms)
65秒とちょっと。
705702:04/12/04 19:01:11
>>704
ありがとうございます。
では、65秒以上のタイマーイベントは使えないのでしょうか?
更に長い時間のタイマーを使える方法等ありましたら、
教えていただきたいです。

よろしくお願いします。
706デフォルトの名無しさん:04/12/04 19:07:09
シーケンシャルアクセスファイルについて

ただ今、

Dim strbuff As String

Open "C:\a.txt" For Input As #1

Line Input #1, strbuff
MsgBox strbuff

T1.Text = strbuff

Close #1

↑このようにし、テキストボックスをファイルに書き出す事をしています。
この場合、"C:\a.txt"にしておりますが、
ゆくゆくは、実行ファイルと同じディレクトリ内にファイルを作成したい
と思っております。
このディレクトリは、あちこちのドライブ&ディレクトリに動かします。

こんな場合でも、ファイル(設定ファイル)を読み書きするにはどのような
記述をすればよろしいのでしょうか?

よろしくお願いしますm(__)m

707デフォルトの名無しさん:04/12/04 19:11:23
>>705
タイマーイベントの中に static な変数を宣言して数える。
708デフォルトの名無しさん:04/12/04 19:11:46
>>705
0.5秒とか0.1秒ごとにtimerで監視して行う
Windowsのタイマーイベントは精度があまりよろしくないので
どのみちこんなやり方しないと誤差がひどくなる
709デフォルトの名無しさん:04/12/04 19:13:52
>>706
App.Path & ”\a.txt”
レジストリやDocuments and Settings\usrname のほうがよくない?
710デフォルトの名無しさん:04/12/04 20:55:35
>707
解雇
711デフォルトの名無しさん:04/12/04 21:54:44
Longで宣言した変数の下位1バイトだけをとりだして、Byteの変数の移したいのですが、どのようにすればいいのでしょうか?
712デフォルトの名無しさん:04/12/04 22:16:04
>711
ネタ?
713711:04/12/04 22:21:40
>>712
ごめんなさい。ネタじゃないんです。
何かすごく基本的なことを忘れてるような気はするんですが…
714デフォルトの名無しさん:04/12/04 22:24:35
>713
マスクかけるだけ
715デフォルトの名無しさん:04/12/04 22:26:51
>>714
マスク、ですか…?
やってみます。
716711:04/12/04 22:34:57
>>714
すいません。マスクってANDとかORのことですよね?
それならもうやってるんですが、どういう風にマスクをかければいいんでしょうか?
717デフォルトの名無しさん:04/12/04 22:40:31
OR 255
718デフォルトの名無しさん:04/12/04 22:41:02
>717
ごめん。ウソ。AND 255
719デフォルトの名無しさん:04/12/04 22:41:43
AND 255
720デフォルトの名無しさん:04/12/04 22:43:11
下位1バイトを取り出すってことは 2進で
00000000 00000000 00000000 11111111
ってやつとAND計算すれば、上位3バイトは0になって下位1バイトだけ残る。
といわけで>718が合ってる。
721711:04/12/04 22:50:34
>>717-720
。・゚・(ノД`)・゚・。 ありがとうございます。できました。
なぜかOR 255 にしてました。
散々悩んでたのが氷解しました。
本当に感謝です。
722デフォルトの名無しさん:04/12/05 04:18:53
>>706
>このようにし、テキストボックスをファイルに書き出す事をしています。
チミのソースコードに”ファイルに書き出す”処理は見当たりません。

もう少し日本語勉強してから質問してね(はぁと
723デフォルトの名無しさん:04/12/05 04:31:03
はじめまして。
あるソフトを自動でクリックしつづけるソフトが作りたいのですが。
人間がではなくVBがマウスをクリックする・・・というのは、どうすればできるでしょうか??
メッセージを送ればいいのかなぁ・・・とも思いますが。
724デフォルトの名無しさん:04/12/05 04:39:37
>>723
SendMessage
725デフォルトの名無しさん:04/12/05 08:38:43
>722
ここまで物事が分かってない奴がいるとどうしようもないな。
君はプログラム未経験者かな?
出直してください。
726デフォルトの名無しさん:04/12/05 08:40:01
補足
>725は706じゃなくて722のことだよ。
727デフォルトの名無しさん:04/12/05 13:09:47
4年前私はマイクロソフトのCOM+2.0の評価メンバーに誘われました。
私の興味はASPの組み込みオブジェクトに興味があったのですがそれでも参加することにしました。
COM+2.0の仕様書を見て私は驚愕しました。
すべての言語の境界がなくなり、さらに便利で強力なクラスが膨大に盛り込まれていたのです。
それは後に.NETと名づけられました。
728デフォルトの名無しさん:04/12/05 14:32:08
ネーミングセンスが最悪なわけだが
729デフォルトの名無しさん:04/12/05 14:37:16
使用OS:WinXP
VBバージョン:VB6(SP5)

ADO接続でcsvを読み込み、FlexGridに表示したいのですが、

CN.ConnectionString = "Provider...
CN.Open

strSQL = SQL文
RS.Open strSQL, CN, adOpenStatic, adLockOptimistic, adCmdText
Set FlexGrid.DataSource = RS
  ↑
この行で「オブジェクト変数またはwithブロック変数が設定されていません」というエラーが出ます。
原因がわかりません・・・。よろしくお願いします。
730デフォルトの名無しさん:04/12/05 14:40:00
写真を保存するデータべースソフトを作ろうと思っています。
フォームにイメージがあり、それに画像を読み込むとします。
例えば、プログラムを起動した後、
img1.bmpという画像を読み込んだとします。
読み込んだ画像を、プログラムを終了したときにセーブし、
次回プログラムを起動したときに自動的に読み込むためには
どんな関数を使えばいいでしょうか?
731デフォルトの名無しさん:04/12/05 15:12:06
>>729
原因は「オブジェクト変数またはwithブロック変数が設定されていません」ってことです。
エラーの発生する行に「オブジェクト変数」がありますよね?
それが空だってことです。

自分が何をどの様に使っているのかを理解しないといけません。
コードだけを教えてもらったり、どっかからコピーしてきただけでは
それを理解することは難しいでしょう。
自分の書いたコードの全ての行の意味を理解しましょう。
732デフォルトの名無しさん:04/12/05 16:48:30
>727
マルチうぜー
733デフォルトの名無しさん:04/12/05 17:34:21
>>731
できました。ありがとうございます。
734sage:04/12/05 18:31:13
使用OS:WinXP
VBバージョン:VB6(SP5)

メインのプロジェクトより複数の外部EXEファイル(VBで作成)を起動させ、
メインプロジェクト終了と共に、外部EXEを全て終了させたいのですが
どうにもうまくいきません。

APIやレジストリを使えばうまくいくのかもしれませんが、
使ってはいけないとの制限です。(ここらへんは追及しないでください・・・)
色々調べましたが「不可能」という回答もちらほら見かけます・・・。
もし、可能であればご教授願いたく、書き込みしました。

初心者的なことなのかもしれませんが、よろしくお願いします・・・。

735734:04/12/05 18:32:46
うう・・・
ひさびさに書き込んだらageてしまいました・・・
もうしわけありません・・・。
736デフォルトの名無しさん:04/12/05 18:35:01
API使っちゃダメなら不可能じゃないか?
737734:04/12/05 18:49:50
>>736

返答ありがとうございます。
Shellで起動してタスクID拾って、メインプロジェクト終了時に
ID調べてSendkey(ALT+F4)とか無理やりやってみたりもしましたが・・・
どうにもできなかったです。(2重起動不可にしてもIDが一意でなくなります)

メインの起動コマンドコントロールをFalseにすれば一意性を保てますが、
外部EXEを単体で終了させると制御が戻ってこないのでFalseのまま・・・

やっぱり不可能なんでしょうか・・・。
738デフォルトの名無しさん:04/12/05 18:52:23
マルチうぜー
739デフォルトの名無しさん:04/12/05 18:52:44
>>730
そのファイル名をレジストリ、iniファイル、その他任意のファイルに記録するだけ。
740デフォルトの名無しさん:04/12/05 19:24:44
>737
あのさ、API使っちゃダメって言ってるけど、そのAPIってのは
何のAPIのことを指している?
741734:04/12/05 19:33:38
>>740

API関数です。
現在ひらかれてるウィンドウのハンドルとか取得できますよね?
他にもAPIっていわれてるモノあるんでしょうか?

初心者なものですいません。
742デフォルトの名無しさん:04/12/05 19:42:44
マルチうぜー
743デフォルトの名無しさん:04/12/05 20:40:34
APIってのはApplication Programming Interfaceのこと。
Win32APIだけがAPIではありません。

Win32APIを使うな、ということですか?
だとしたらやりたいことは実現できないと思います。
追求しないでと言われていますが、どうしてWin32APIを
使ってはいけないのか知りたいです。
744デフォルトの名無しさん:04/12/05 21:41:21
>>734
API禁止はたぶん宿題かなんかだからだろう。
さてこういうのはどうだ?但し絶対ありえない原始的な方法。

外部EXEではTimerか何かを使って一定時間ごとにある特定のファイルがあるかを調べ、
あれば自分の名前をファイルに書き込み、自分は終了する。
メインプロジェクト側では終了時にその特定のファイル名を持ったファイルを作り、
そのファイルに終了したいプログラムの名前が全て書き込まれるまで待つ。
その後そのファイルを削除し、自分も終了。
745デフォルトの名無しさん:04/12/05 21:52:28
>744
いやすぎるな・・・w
746734:04/12/06 00:04:11
レス遅くなりました。すいません。

>>744
するどいご指摘。そんなかんじです。
744さんの方法もおもしろいですね。
でも、根本的になにか間違ってる気がしてきたので、
少し問題について問い詰めてみようと思ってます。
(実際には外部EXEには手を加えない、なので)

お答えくださった方々、ありがとうございました。
747デフォルトの名無しさん:04/12/06 00:54:15
外部EXEをActiveX EXEで作るというのはだめでしょうか?
<外部EXE-Class1>
Public Sub form_open()
Form1.Show
End Sub

Public Sub form_close()
Unload Form1
End Sub

<呼び出し側>
Private ob As Object

Private Sub Form_Load()
Set ob = CreateObject("Project1.Class1")
End Sub

Private Sub Command1_Click()
Call ob.form_open
End Sub

Private Sub Form_Unload(Cancel As Integer)
Call ob.form_close
End Sub
748デフォルトの名無しさん:04/12/06 01:06:01
うざっ
749デフォルトの名無しさん:04/12/06 01:43:41
VBでDBを読み込み、それをある条件で抽出したいのです。
ある条件とは、チェックボックスを用意して、それのチェックで条件が変わります。
例えば、
病気DBがあり、そのDBは、病名フィールドと症状フィールドで1つのレコードとなっており、
チェックボックスは、発熱、頭痛、腹痛、嘔吐、めまい、などの症状があり、チェックされた症状の全てを含む病気レコードを抽出したいのです。
以上のためには、どのようにやる方法があるのでしょうか。

他のところで質問したところ、罵倒を浴びたのでこちらに書かせて頂きます。
750デフォルトの名無しさん:04/12/06 02:07:54
質問です。

VBには、Quick BASICのinkeyに相当する命令ってあるのでしょうか?
例えば、プログラムを実行して、処理の途中で、
画面に"Press any key to continue"と表示して、
何かキーを押すと処理を続けるようにしたいのですが、
VBでも可能でしょうか?

もしわかる方がいたら、教えてください。
お願いします。
751デフォルトの名無しさん:04/12/06 02:08:15
>>749
DBの形式は何ですか?
752デフォルトの名無しさん:04/12/06 02:09:47
>>750
ClickイベントとかKeyDownイベントでしょうか。
753749:04/12/06 02:17:04
DBの形式というのは…Accessであってますか?
754デフォルトの名無しさん:04/12/06 02:23:57
>>753
どんな罵声を浴びたか知らぬが、1から10まで手取り足取り教えないといけないのか?
本屋にでも行って入門書買いあさってきてくれ
755デフォルトの名無しさん:04/12/06 02:26:26
756749:04/12/06 02:35:10
一応5、6冊見たんですけどわからないんですよ。
例として書いてあるのは、チェックボックスが2つとかで、
if使ってどちらかが…て感じだから使えないし。。。
だから、ヒントだけでもと思って質問してみました。
757デフォルトの名無しさん:04/12/06 02:38:10
>>756
そうか。あなたにプログラムの才能が無いのはよくわかりました。
近くにソフト会社は無いのですか?そちらに作成してもらって下さい。
758749:04/12/06 02:43:35
すいません。
あなたのおっしゃるソフト会社に入る為に勉強をしているんです。
何か良い本とかサイトとかヒントとか教えていただけないでしょうか?
759デフォルトの名無しさん:04/12/06 02:54:41
そうなのか。_| ̄|○
適当にがんばってくれ。
760デフォルトの名無しさん:04/12/06 03:13:07
>>749
ADOでAccessファイルを読み込む
SQL文で任意のレコードを抽出

てな辺りを調べてみるとか。
761749:04/12/06 03:22:22
任意のレコードを一つの条件だけで抽出なら既に出来ました。
ただ、今回作っているものは毎回条件が変わるので、そうするとどうすればいいのかわからないんです。
762デフォルトの名無しさん:04/12/06 03:28:29
>>752
ありがとうございます。
参考書があっても、どこを見たらいいのかわからない状態だったので、
とても助かりました。
763デフォルトの名無しさん:04/12/06 03:34:15
>>761
WHERE条件がわからんの?
チェックされてる時だけ AND 症状 でつなぐ。
764749:04/12/06 03:43:50
>>763
とりあえず、一つの条件で抽出する時は
Main.rscmdMaster.Filter = "症状 like *頭痛*"
って感じに書いたんですけど、、、

チェックされてる時だけっていうのは、
If Check1.Value = 1 Then
ってのから書き始めるんですか?
765デフォルトの名無しさん:04/12/06 04:02:52
>>764
そんな感じ
766749:04/12/06 04:09:44
>>765
いやぁ、実はここまではもう行き着いてたんですが、この先がわからないんです。
If Check1.Value = 1 Then
Main.rscmdMaster.Filter = "症状 like *頭痛*"
End If
If Check2.Value = 1 Then
Main.rscmdMaster.Filter = "症状 like *発熱*"
End If
じゃできないですし、入れ子にしても駄目でしたし、、、
767デフォルトの名無しさん:04/12/06 04:30:29
文字列を連結したいなら
s = s & "a"
s = s & "b"
ってな感じで出来るで。
768デフォルトの名無しさん:04/12/06 04:32:44
スマソ、>>763これ間違い。
"OR 症状"
でつながないと駄目だ。
769749:04/12/06 05:34:25
教えてくださった皆さん。
本当にありがとうございました。
何か出来そうです。
ありがとうございましたm(_ _)m
770749:04/12/06 06:13:02
すいません、749です。
また新たな問題が…

If Check1.Value = 1 Then
Ref = Ref & "症状 like '*頭痛*' and "
End If

If Check2.Value = 1 Then
Ref = Ref & "症状 like '*発熱*' and "
End If

Ref = Replace(Ref, " and ", "")

deMain.rscmdMaster.Filter = Ref

このように記述したところ、
チェックボックスを1つチェックしただけならきちんと抽出出来るのですが、
2つチェックするとエラーが出ます。

どこが間違ってるのでしょうか?
771デフォルトの名無しさん:04/12/06 06:19:27
>>770
エラーならエラーメッセージくらい書け
質問するのはもう少しVBの基本的な使い方覚えてからにしたほうがいい
疑問が出るたびにここで質問するつもりか?
772749:04/12/06 06:30:43
>>771
すいません。
エラーは、「引数が間違った型、許容範囲外、または競合しています。」です。

これって、基本的な間違いをしてるんですか?
773749:04/12/06 06:37:11
772の追加で
実行時エラー 3001 です。
度々すいません。
774デフォルトの名無しさん:04/12/06 06:42:39
>>773
ちっとは自分で考えろ。
人をあてにするな。
775デフォルトの名無しさん:04/12/06 06:45:27
>>773
デバッグの仕方覚えた方がいいよ
776デフォルトの名無しさん:04/12/06 06:53:21
>>770
何の為に" and"を削除してる?
777749:04/12/06 07:07:07
すいませんすいません。
必要なところまで修正・削除してました。
これが正しいやつです。

Ref = Ref & """" '先頭に「"」を入れる

If Check1.Value = 1 Then
Ref = Ref & "症状 like '*頭痛*' and "
End If

If Check2.Value = 1 Then
Ref = Ref & "症状 like '*発熱*' and "
End If

Ref = Ref & """" '最後にに「"」を入れる

Ref = Replace(Ref, " and """, """") '最後のandを削除(「 and "」 を「"」に置換)

deMain.rscmdMaster.Filter = Ref

771さんのおっしゃるとおり基本的なことが出来てませんでした。
すいませんでした。
778デフォルトの名無しさん:04/12/06 07:25:44
757みたいな奴に反応したら負け。俺も負け。
779デフォルトの名無しさん:04/12/06 07:27:05
>771
いや、別にあなたのような人には聞いてないのですが。
そんな不快ならあなたが書き込まなければ済む話でしょ?
脳みそは少なめのようですね。
780デフォルトの名無しさん:04/12/06 07:29:15
>>779
あなたが解答すれば済む話でしょ?
脳みそは少なめのようですね。
781デフォルトの名無しさん:04/12/06 08:58:47
zai
782デフォルトの名無しさん:04/12/06 09:03:04
まさか新大阪か?
783デフォルトの名無しさん:04/12/06 09:51:18
久々に「ホームラン級のバカだな」って言葉を使いたくなった。
784デフォルトの名無しさん:04/12/06 11:35:53
ファイル選択ダイアログの出し方教えてください
ぐぐってみまましたがあるようでないみたいです
できれば、ツリードライブ検索でネットワーク対応があれば最高です
お願いします
785デフォルトの名無しさん:04/12/06 11:47:21
まるちはマジでうざい
786デフォルトの名無しさん:04/12/06 11:48:37
つか、ageで、マルチかい。
でもって、ぐぐったらやまほど出てくるから。もっかい探せ。
…そのまえに、MSDNにもばっちりかいてあるとおもうぞ。
787デフォルトの名無しさん:04/12/06 12:03:12
>>785-786
キーワードください
788デフォルトの名無しさん:04/12/06 12:18:07
VB6.0SP6
OSは2000SP4

昨日からプログラム始めましたよろしくお願いします。
コマンドボタンのCaptionをLabel.Alignment=0のように左揃いで出したいのですが
そのプロパティがないのでできません。(自動で中央揃いのみ?)
なんとかできませんか?デカいボタンが好きなんです。
789デフォルトの名無しさん:04/12/06 12:33:48
>>788
台詞の右側に適当に空白つっこんだらだめかね?
解決じゃなくて、回避だけど。これじゃ。
サイズ変更なんかしないんだから、これでいんじゃない?
790784:04/12/06 12:40:09
っていうかMSDNで顧問ダイアログみたけど
そんなんじゃない。もっと高機能つーかツリー系のやつ
たぶんCreateObject("????.SEHLL") ← こんな感じでつかえた
過去に使ったけど忘れたからきーてるワケ
791デフォルトの名無しさん:04/12/06 12:43:53
>>790
SHxx系のAPIを調べる。
あとは自分でどうにかしろ。
792788:04/12/06 12:45:57
>>789
レスありがとうございます。
しかし、Capitionの内容はLogの状況でころころ変わり、
ウィンドウサイズを変更するとそれに合わせて
目的のコマンドボタンの幅も変わるようになってるので
(できるだけボタンを大きく取りたい)
適当な空白数を計算する策は私にとっては難しいです・・、どうかよろしくお願いします
793デフォルトの名無しさん:04/12/06 13:14:11
>>790
なんで質問してるのにそんなえらそーなん?
だから、普通にぐぐれば見つかるから探せよ。
高機能でツリーな奴もAPIで一発だろ。そのままずばりを解説したHPもあります。
てめーがサーチ能力もないクズだからみつからねぇワケ。
794初めて4日目の名無しさん:04/12/06 14:32:11
ググるときのキーワードを教えていただけませんか?
お願いします><
795デフォルトの名無しさん:04/12/06 14:47:30
やかましい、今さら泣いてもおそいんじゃぼけぇぇっっ
つか、こんなとこでうだうだやってる間にまじめに探せばみつかるんじゃ、あほがぁぁ
SHGetPathFromIDListA
これくれてやるから、とっととうせろ、この、くれくれたこらふぇちやろうがぁぁ。
796デフォルトの名無しさん:04/12/06 14:50:10
クソまじめに努力するこたぁない!
>795に任せりゃケツに答えを突っ込んでくれる!
797デフォルトの名無しさん:04/12/06 14:51:21
>>792
なろほろ、そういう用途なら、決めうちではいかんですな。
んじゃ、ひたらす回避路線ですが、コマンドボタンの上にラベルのっけたらだめなの?
798デフォルトの名無しさん:04/12/06 15:03:42
まあでも、この程度の奴がSH系のAPIを使うのは非常に危険に思える。
正直、やめといたほうがいい。
ダイアログを自作しちゃったほうがマシにも思える。
799デフォルトの名無しさん:04/12/06 15:06:13
>>798
危ないおもちゃを与えてしまった気分満タン。
800デフォルトの名無しさん:04/12/06 16:56:17
>>797
ボタンの上にラベルって乗っかるか?

>>792
コマンドボタンのキャプションが変わるっつーインターフェイスに疑問があるが・・・
イメージBOX&ラベルで無理やりつくるか
ピクチャBOXで作るかじゃだめなのか?
801デフォルトの名無しさん:04/12/06 17:12:29
>799
君ごときが人に何か与えられるなんて思い上がらない方がいいよ。
802デフォルトの名無しさん:04/12/06 17:34:46
VB6(SP5)なんですけど、データベースを使ったソフトを作って配布しようと思っています。

しかし、再配布できるDBエンジンって何があるのかがわからないのですが、どなたか詳しい方は、教えていただけないでしょうか?
ちなみに、現在、"Microsoft DAO3.6 Object Library" が参照されていますが、これは再配布できなかったように思います。
また、これ以降(.net)には、再配布可能なDBエンジンはついているのでしょうか?

#・・・データベースを使ったソフトを作る場合って、どうするのが一般的なんだろうか・・・

803デフォルトの名無しさん:04/12/06 17:37:06
>>800
やってみた。どうあっても後ろに引っ込むな。だめだこりゃ。すまんかった。
804デフォルトの名無しさん:04/12/06 17:39:31
>>802
DAO=JETデータベースエンジン=MDBファイルは再配布可能。

あと、MSDEも再配布可能・・・だけどインストール先に十二分以上に確認しないと文句言われます。
(SQLServerそのものですから重い)
805デフォルトの名無しさん:04/12/06 17:44:34
>>801
なんだこれ?
806デフォルトの名無しさん:04/12/06 17:53:58
>>805
馬鹿は無視しろ。
807デフォルトの名無しさん:04/12/06 17:57:46
>802
DAOは3.5も3.6も再配布可能なパッケージがあるから探せ。
細かいVer.とかサブセット版もあるから注意しろ。
国内サイトじゃほとんどないから海外サイト探せ。

それがダメならADOで組み直せ。
ADOならMDAC入れりゃいいから問題なかろう(MS純正・再配布可能だし)

あと肝心のDBの種類が書いてない。それに依存する話なら上記は忘れろ。

>788
まずFormのサイズに合わせてCommandButtonのサイズも変わるというクソな仕様を止めろ。
止められないなら見えない場所にLabelを貼って、AutoSizeをTrueにしろ。
それでLabelのCaptionに適当な文字列ブチ込みゃWidthが文字列に合わせて変わるから、
その数値を元にCommandButtonの幅なりCaptionに突っ込むスペースなり適当に計算しろ。
808784:04/12/06 18:40:49
>795よ、とにかくもらっとくよ
SHGetPathFromIDListA
ほんとはVBなんでオートメーション系をきぼんぬだったが

            T H X!
809802:04/12/06 18:53:18
>>804
>>807
ありがとうございました。
ソフトウェアは、これから作るので、データベースの種類は、これ、っていうのはないんです。
ソフトをインストールするだけで、すぐに使えるようにしたいので、自作ソフトと一緒にデータベース関係のファイルを再配布したいのです。

で、一応、血眼になってぐぐってみたのですが、

http://support.microsoft.com/?scid=kb;ja;233002&spid=3042&sid=global

こんなのが見つかりました。
これを読む限りでは、dao3.6 + jet4.0 は再配布しても良いように思えるのですが、Microsoft Visual Studio6.0 ユーザーに対するものなのか、今一つわかりません。
810デフォルトの名無しさん:04/12/06 19:34:24
>808
まあまあ、このスレのレベルじゃ期待通りのものが出てくる
ことはあまりないから。
811デフォルトの名無しさん:04/12/06 20:46:06
このスレにはよく低レベルの煽り厨が出てくるが無視するのがいい。
812デフォルトの名無しさん:04/12/06 21:37:38
>>749-759
こらお前ら、飲んでたほっとレモン
キーボードに吹いちまったじゃねーかw

813デフォルトの名無しさん:04/12/06 21:39:23
キーボードイベントをメモ帳やwordなどから拾いたいのですが、どうすればよいでしょうか?

VBで作ったフォームからキーボードイベントは拾えるのですけど、他のアプリから
拾う方法がわかりませんでした。

どなたかヒントください。宜しく御願い致します。
814デフォルトの名無しさん:04/12/06 21:56:05
>802
807だ。
これから作るにしてもDBの種類ぐらい決めておかないとそのうち質問すら出来なくなるぞ。

で、DAOとJETは再配布してもよい。MDACもだ。でなけりゃMSのサイトからDownload出来る訳がなかろう。
俺が書いたDAOは、このページに書いてあるDLL単体じゃなく、インストーラ付きの
エンドユーザ向けランタイムパッケージだ。必ずあるから死ぬ気で探せ。

でだ、DAOにしろJETにしろMDACにしろ、いずれかのDBエンジンはOSによって
最初から入ってる/入ってない、もしくは入ってるVer.の違いというものがある。
例えばMDBの場合、Win2k以降ならMDACを入れなくてもADOなら動く(ただしMDACのVer.は古い)
そこらへんキッチリ調べておかないと、ユーザに古いDBエンジンを上書きインストールさせる羽目になるぞ。
815814:04/12/06 22:04:35
>814は無視してください。
816804:04/12/06 22:58:10
>>809
だから、DBMSとして、JETでもMSDEでもただで手に入るんだって。
JETは2000前のACCESSのDBMSそのもの。
MSDEは制限つきのSQLServer。

上記に対するミドルウェアとして、DAOでもRDOでもADOでもVBを持っていて、
そこからインストーラーを作成してれば再配布可能。
817デフォルトの名無しさん:04/12/06 23:40:58
VB6SP5を使っているのですが、フルパスを渡してそれがファイルなのか
フォルダなのかを判別するにはどうしたらいいでしょうか?
Dir関数の使用例に
'ビット単位の比較を行い、フォルダかどうかを調べます。
If (GetAttr(Path$) And vbDirectory) = vbDirectory Then Msgbox "これはフォルダです"
のようなものがあるのですが、これを使ってみるとなぜかフルパス中に半角スペースが含まれているとエラーになります。
Path$ = """" & Path$ & """"
と入れてみましたがやはりエラーになります。
818817:04/12/06 23:45:05
ごめんなさい、SP6でした。
819デフォルトの名無しさん:04/12/06 23:54:48
>>818
特にエラーは出なかったが、どんなエラーだ?
820817:04/12/07 00:05:21
>>819
えぇ、そんなはずは・・・、と思ってもう一度ソースを見てみたら
判別する前の状態で半角スペースがあるときは["]を付加してありました。
それを取り除けばできました。
申し訳ないです orz
821デフォルトの名無しさん:04/12/07 01:31:02
807だ。
>815
お前は誰だ?(w
822デフォルトの名無しさん:04/12/07 04:01:22
再配布可能ファイルとそうでないものはどのように判別できますか/してますか。
823デフォルトの名無しさん:04/12/07 04:12:50
>>822
ちゃんと書かれている。TXTを読めばわかる。
824デフォルトの名無しさん:04/12/07 07:00:23
>>823
使用範囲を広げた再頒布可能コードってどういうことですか?

TABCTL32.OCXなんですけど。
825デフォルトの名無しさん:04/12/07 09:05:57
>>810
まあまあ、その質問の仕方じゃ回答があっただけでも奇跡と思えって話だぞ。
回答の催促に情報小出しつつもらった回答への難癖とぎりぎりまでお礼なし。
しかも、一番最後に「本当は○○がほしかった」おっしゃられる。
最初にそれ言えば一発じゃんよ。
調べるのにつきあってたやつ乙。
826802:04/12/07 09:19:03
了解しました。

dao3.6 + jet4.0

で行こうと思います。
ありがとうございました。
827784:04/12/07 09:33:36
>825が助けふねをだしてくれたようなので
仕切りなおしたいと思います

オートメーションで呼び出せる「ファイル選択ダイアログ」はないでしょうか?
よろしくお願いします
828デフォルトの名無しさん:04/12/07 10:46:00
>784
>827

おもしろそうだからオレもまぜてクレ

Windowsのエクスプローラーのようなダイアログがほしいのか?
とりあえずツリー型のサンプルとか投下してみるテスツ
ttp://www.mvps.org/btmtz/vbexplorer/
829デフォルトの名無しさん:04/12/07 11:14:36
microsoft common dialog controlみたいな名前のコントロールでいろんなダイアログが使えるよ
830デフォルトの名無しさん:04/12/07 11:44:53
糞だなw
831デフォルトの名無しさん:04/12/07 12:13:48
助け舟じゃなくダメ出しだよな・・・。
まあ、IEインストールで入れられるActiveXでその類があったように思うけど、自分で調べろって感じかな?
SHxxxのAPIのHPとかを見ていったり、そこでのキーワードで再度グーグルしたりすれば、たどり着いたような薄い記憶はある。
まあ、環境限定がAPIの場合より厳しいので使わなかったからうろ覚えだけど。
832822:04/12/07 15:15:51
>>823
どのtxtでしょう?
sp6のredist.txtは見たが、これだけではないよね。
たとえば、cmct2jp.msmが再配布可能かどうかはどこでわかりましょう?
833822:04/12/07 15:21:30
つまり、最初のredist.txtと最新spのredist.txtを見ても
中間のspで再配布可能となったと思われるファイルについては何も分からないけど
どこで分かるのか、ね。
834デフォルトの名無しさん:04/12/07 15:25:46
>>832
VBのヘルプを再配布とかインストーラをキーに検索して、その辺りを兎に角読む。
835デフォルトの名無しさん:04/12/07 15:29:37
>>788
SendMessage
836デフォルトの名無しさん:04/12/07 15:53:09
>>833
中間のSPのredist.txtを入手して読む。
あるいは>>834
なにか、最近もらった回答に難癖つけるような物言いする人が多いのね。
837784:04/12/07 15:53:42
>835
ちゃんとメッセージまでかかんとわからんだろ?
コマンドボタンに左寄せがないって言ってる椰子にSDKレベルで(ry
いやがらせか?
838デフォルトの名無しさん:04/12/07 16:01:00
839デフォルトの名無しさん:04/12/07 16:16:08
>>836
回答が役に立たたなかったら、率直に伝えた方がよいでしょ。
840デフォルトの名無しさん:04/12/07 16:26:48
>>839
難癖つけるような物言い。
言い方があるでしょってお話し。
役にたたなかったら、役に立たないということは正常かと。
841デフォルトの名無しさん:04/12/07 22:24:45
VBでADOを使ってアクセスデータベースに接続したいのですが、
SQLに、VBA関数を使ったクエリを表示しようとすると

実行時エラー '-2147217900 (80040e14)'
式に未定義関数 '関数名' があります

という、エラーが返ります。
このエラーの対処法を教えていただけないでしょうか?



842デフォルトの名無しさん:04/12/07 22:41:10
>841
それだけじゃ何も分かりません。
843デフォルトの名無しさん:04/12/07 22:47:04
>841
 Accessで慣れると必ずやるんだよな、これ。
 対処方法? VBAの関数を使わないクエリにするしかない。
 (この場合、DAOでもVBAの関数は使えない)
 でなければ、素直にAccessで作る。

 要件(規模含む)次第だが、この場合、VBを使わないでAccessを
使った方が生産性高いかもな。(どちらも長短がね)
844デフォルトの名無しさん:04/12/07 23:07:04
>843
お返事ありがとうございます。

つまり、外部からaccessのクエリを利用するには、
そのSQL分は、標準のSQL関数しか使えないという事でいいでしょうか?

別の実装方法を考えたいと思います。
ありがとうございました。
845813:04/12/07 23:13:10
自己解決しました。お騒がせしました。
846デフォルトの名無しさん:04/12/07 23:22:58
VB6.0使用
shellを使って、バッチファイルを呼び出しているのですが、うまくいきません。
バッチファイル内部では別のプログラムを呼び出していて、そのバッチファイルを
ダブルクリックで起動した場合は、正常に動くのに対して、
VBから呼び出した場合に、エラーを吐き出し、正常に終了しません。

Dim path As Variant 
Dim procID As Variant
Dim cmd As Variant
path = batPath.Caption   '実行するバッチファイル格納場所
procID = ID_param.Text   '実行パラメータ
cmd = cmd & path & " " & procID
Shell (cmd), vbNormalFocus
プログラムは現在このようになっています。

バッチのエラーから、おそらくVBでのバッチ実行時のパスに問題があるのではないかと
思うのですが、なにか、対処法ありますでしょうか?
847デフォルトの名無しさん:04/12/07 23:38:53
>>846
できればエラーの内容を書いてほしいんだけど…。

バッチファイルのパスに空白が含まれているのかも。
試しに path の前後を二重引用符で囲んでみよう。

あと、cmd = cmd & path & " " & procID となってるけど、
cmd は元々空白だから cmd = path & " " & procID
と同じことだよね。これは意図通りなのだろうか。
たぶん問題なかったと思うけど
バッチファイルを Shell 関数に直接渡して実行できるんだっけ?
848デフォルトの名無しさん:04/12/08 00:49:43
>>846
こうじゃないの?
Shell (cmd), vbNormalFocus → Shell (cmd, vbNormalFocus)
849デフォルトの名無しさん:04/12/08 09:34:12
1.ShellExecuteEXで関連付けでバッチを起動させる。(やったことない)

2.cmd.exe?comか忘れたが、UNIXとかでいうところのShellに引数を与える形式
コマンドプロンプトで CMD /? を実行してみればわかると思う。
Shellに渡すコマンドは・・・。
 CMD バッチフルパス オプション
でいけると思う。
細かい部分は自分で試してください。

850デフォルトの名無しさん:04/12/08 10:23:06
どこかのサイトで
フロントエンドのユーザインタフェースはVBで。
バックエンドのサーバ側はJavaで。
という例を見たのですが、こういうのって最近多いのでしょうか。
VB単体、Java単体で動かすのは理解できるのですが、これらの連携というのがイマイチイメージできません。
VB側からJavaを呼ぶって具体的にどうやるのでしょう?
サンプルのコードなんかがあるサイトを教えて下さい。
851デフォルトの名無しさん:04/12/08 10:47:34
>>850
良くあるかはしらんが、普通に昔から三階層風に作ることはある。
サーバー側C言語で、クライアント、サーバー間はソケット。
サーバ側は管理プロセスが通信の送受信とその受信したデータのサーバ側プロセス(スレッド)への割り振りを行う。
同じように単にJAVAにしてるだけじゃないの?

上記の管理プロセスは1プロジェクトで作るには豪華すぎるから、売ってるものもあるはず。
(タキシードとかってこの類でしたっけ?)
852デフォルトの名無しさん:04/12/08 15:16:46
>>850
VBからJAVAよんでるって発想するとどつぼにはまるかもね。
>>851さんが書いてくれてるように、
単純に二つのアプリケーション(フロントエンド・バックエンド)がプロセス間通信してるだけだよ。
ソケットでも、ファイルでも、介在するものはなんでもいいんだけど。
たぶん、VBからJAVA、あるいは、JAVAからVBに制御はかけてないと思われ。
853850:04/12/08 15:34:20
あーなるほど。そういう訳ですか。
VB+COMで作る3階層C/Sみたいな仕組みが用意されているのかと思ってました。
854デフォルトの名無しさん:04/12/08 15:42:07
>853
この人本当に分かったのか疑問。
855デフォルトの名無しさん:04/12/08 17:10:13
VBで自明のバグを列挙しませんか?
iif関数
iif(A,B,C)Aが真の場合B,Cを実行する
しかし結果はB
856デフォルトの名無しさん:04/12/08 17:18:32
はあ?
何が問題なんだ?

IIF関数のTrueパートとFalseパートが両方評価されることはバグではなく仕様で明記されてるし。
857デフォルトの名無しさん:04/12/08 17:43:00
。・゚・(ノД`)・゚・。
858デフォルトの名無しさん:04/12/08 17:50:09
釣りかな・・・しかし結果がBって。
彼は何をバグと思って、どのような結果が正常だと思ってるんだろうか。
859デフォルトの名無しさん:04/12/08 17:54:20
>855
まずお前の日本語をどうにかしろ。
860デフォルトの名無しさん:04/12/08 20:42:29
VB5.0の話。

Dir("path\*.*")で、指定したパスに存在する最初のファイル名が得られ、
その後Dir("")を繰り返すと続きのファイル名が得られる。
それはいいとして、、、

どうやら、Dir("path\*.*")はFindFirstFileで
Dir("")はFindNextFileに相当するらしい。
で、Dir("")の戻り値が "" だった場合、
自動的にFindCloseが呼ばれてるらしい。

そのため、Dir("path\*.*")だけを繰り返し実行していると
FindCloseされず、ハンドルがどんどんリークしてしまう。
昔このせいでハマったことがあった。
とりあえずFind〜系のAPIを直接呼ぶことで回避した。

これって有名な話? VB6.0ではどうなのかな。
861デフォルトの名無しさん:04/12/08 20:50:21
>>860
VB6でAPIMonitor使ってみてみたけど、
一回目は開いていないから当然FindCloseはしないとして、
二回目からは前のをFindCloseしているようだよ。
862861:04/12/08 20:55:44
ついでにVB5.01CCEが入っているの思い出したから
見てみたけど、それも二回目からはFindCloseしているよ。

ちなみに、使ったAPIMonitorはこれ。
http://www.rohitab.com/apimonitor/
863デフォルトの名無しさん:04/12/08 20:57:35
>>861
うおっ、レスはやっ。
そうか、VB6では問題ないのか。あの頃VB6があれば…。

あと、おかげさまでAPI Monitorの存在を知りました。
今まで自分でAPIフックのコードを書いていたよ…。orz
864860:04/12/08 21:09:37
API Monitor使ってみました。これは便利だ。

で、手元にあったVB5.0 SP3で早速試してみたら、
ちゃんとFindCloseしてるじゃん!!

あの当時リークがあったのは間違いないので
SPを当てていないバージョンだったのか、それともVB4だったのか…。
なんにせよ、少なくともSPを当てていれば問題ないようなので
>>860は忘れてください。>ALL

なんか釣り師みたいになっちゃったな…。
865デフォルトの名無しさん:04/12/08 21:35:22
バグではないが、
VB5では INT(100@/1@) がIDE/P-Codeでは100、ネイティブでは99となる。
VB6ではどっちも100。

どっかの掲示板で知って開発環境か実行環境かの判断につかったことがある。
(もちろんジョークでだが)
866デフォルトの名無しさん:04/12/09 00:30:26
>>855
詳しく!

なにか問題あるの?
Aが真ならBを
偽ならCを返すんじゃないの?
867デフォルトの名無しさん:04/12/09 01:59:52
>>866
他の言語とは動きが違うってこったろ
Aが真ならBだけを実行すればいいのにCまで実行するのは
男の仕様だよな
868デフォルトの名無しさん:04/12/09 02:01:23
つうかそういう動作で遅くなるの判ってるから殆どの香具師がIIF使わないんじゃないのか・・・
醜くなるから漏れは使わないのもあるのだが・・・・
869デフォルトの名無しさん:04/12/09 02:28:55
AccessのSQL文の中でたまに使う。VBでは使わん。
870855:04/12/09 09:14:33
バグではなくて私がバカでした
ヘルプもろくによんでませんでした、てへ
ごめんね、つりじゃないよ
>動作で遅くなるの判ってるから殆どの香具師がIIF使わないんじゃないのか・・・
すきか嫌いかで言うと俺は
IF
 処理
ELSE
 処理 
END IF
   ↑嫌い
IF 処理 THEN 処理 
   ↑好き
ついでに三項演算子みたいなのもすきだイテレータはこのんで使う主義
871デフォルトの名無しさん:04/12/09 09:23:27
IIFって文字列作成(SQL文のWHERE節)とかで使うけどね。
AND条件を羅列するときに、既に条件があればANDをつけるとか。
WHERE A AND B AND C とかで、 WHERE以降のABCがアリ無しあるとき。

IF A <> "" THEN
hoge = IIF(hoge <> "", " AND " , "") & SQL条件文
ENDIF

一々IFで書くよ可読性が悪い。 A<>""もIIFでかけるけど、それをやるとIIFが二重になるから避けてる。
872855:04/12/09 10:13:18
>871
なるほど、おいらはIIF関数の使いどころがずれていたみたいだね
IF文の代用に使っていたから.......
さすがにおいらもIIFの入れ子はしないさ
873デフォルトの名無しさん:04/12/09 10:19:05
単純にBOOL->文字列変換と割り切ればいい。
兎に角、両方が評価されるという仕様をきちんと理解してれば問題なし。
874デフォルトの名無しさん:04/12/09 12:27:11
>>866
無駄な計算をする。

Private Sub Form_Load()
Dim a As Long, b As Long, c As Long
a = 5
b = 2
c = IIf(a > b, a, Test(a))
End Sub

Private Function Test(c As Integer)
Debug.Print "通過"
End Function
875デフォルトの名無しさん:04/12/09 12:36:27
>>874
だから、IIF関数のもっとも基本的な仕様に関して、それを言ってどうするの?
そもそも最初の人の無知が始まりだけどさ。
876デフォルトの名無しさん:04/12/09 16:45:20
すいません、初心者的な質問なのですが
MDI親フォームの背景に画像を並べて表示をする事は可能なのですか?

一枚の大きい画像を表示するのはPictureプロパティにセットすれば良いと
いうのは分かるのですが、小さい画像をパネル状に並べる事は出来るのでしょうか?

開発環境は
OSはWinXp Pro VB6.0のSP4という環境です

方法等分かる方、よろしくお願いします
877デフォルトの名無しさん:04/12/09 16:57:13
>>876
ブラシ
878デフォルトの名無しさん:04/12/09 17:15:44
>>877
ブラシというのは、gdi32APIを使うと言うことでしょうか?

以前に、単色で塗りつぶしには使った事があるのですが
外部のビットマップファイルを読込んで使えると言うことですか?
879786:04/12/09 17:48:54
>ブラシ
プゲラまたいやがらせだな
>878
並べて表示の機能を使う

880デフォルトの名無しさん:04/12/09 18:07:16
ちょっとした疑問なんですが変数宣言でdim idx
とするとある時とつぜんIDXと大文字になるんです
idxは予約語かなにかでしょうか?
881デフォルトの名無しさん:04/12/09 18:10:27
>>879
えっ、ブラシでというのはデマなのですか?
並べて表示というのはどうやるのでしょうか?

詳しいやり方などを教えていただけるとありがたいです
882786 :04/12/09 18:18:06
>881
デマかどうか知らんが>ブラシの一言で何か分かったかどうか疑問
結局>881がじらされて面白がってるだけだと        思うよ
フォームをブラウザビューにしてHTMLで並べて画像の表示すれば
いいんじゃないかと思うがどうかなぁ 
883デフォルトの名無しさん:04/12/09 18:25:17
>880
どこか他の場所ですでに大文字のIDXという変数が宣言されているのでは。
884デフォルトの名無しさん:04/12/09 21:30:29
初心者ですまそ。

VBAなんかから関数を呼び出す場合、foo(arg1, arg2,..)とか書く場合と
foo arg1, arg2, ...とか()を書かない場合がある気がしますが、何の
違いがあるのでしょうか?
885デフォルトの名無しさん:04/12/09 21:31:29
違いはない
886884:04/12/09 21:35:36
Cばっか書いてたから・・・。

VBでは関数の()はあってもなくてもいいのですか。
>>885 氏サンクス。
887デフォルトの名無しさん:04/12/09 22:08:21
>>884
Callステートメントの説明読めば理由が分かるよ。
888デフォルトの名無しさん:04/12/09 22:09:58
>>885
いや、確かそうとも言い切れないケースがあったはす。
確か参照渡しの引数を一つ取る関数を括弧をつけて呼び出すと、
括弧をつけたことにより変数の参照ではなく値が渡されてしまい
期待するのと違う結果になる、みたいな話だと思ったが。。

VBに限らないけど、プログラミング言語ってちょっと触ってないと
どんどん忘れていくな。
889デフォルトの名無しさん:04/12/09 22:33:40
>873
890デフォルトの名無しさん:04/12/09 22:34:56
>873
ExcelのIF関数と同じと思えばいいのかな?
891デフォルトの名無しさん:04/12/09 23:54:49
括弧をつけない
MsgBox "hoge"
MsgBox "hoge", vbOkOnly
MsgBox ("hoge")         ←───
MsgBox ("hoge"), (vbOkOnly)

括弧をつける
Call MsgBox("hoge")
n = MsgBox("hoge", vbYesNo)
n = MsgBox(("hoge"), (vbYesNo))
892デフォルトの名無しさん:04/12/10 01:51:08
>871
WHERE句の最初に必ず満たす条件を
つけとけば判定1回づつで済まない?
例:
 strSQL = "SELECT * FROM TABLE"
 strSQL = strSQL & " WHERE 1 = 1"
 If A <> "" Then
  strSQL = strSQL & " AND " & SQL条件文1
 End If
 If B <> "" Then
  strSQL = strSQL & " AND " & SQL条件文2
 End If
893デフォルトの名無しさん:04/12/10 02:25:57
IIf はパフォーマンスが悪いのも問題だが、
IIf(x = 0, 0, 1 / x)
みたいな書き方ができなくて不便でもある。
894デフォルトの名無しさん:04/12/10 07:19:53
>893さん
なんでできないの?
895893:04/12/10 08:07:30
>>894
上で散々話題になってるじゃん。
IIf って結局ただの引数が3つの関数だから、
関数に値が渡されるときに x = 0 のときでも、1 / x まで評価されて
0 除算エラーになってしまう。
896デフォルトの名無しさん:04/12/10 09:52:01
>>892
SQL文に余計な条件をつけることで、万が一にパフォーマンス等に影響があったら論外なのでパス。
完全なプログラマ都合じゃん 1=1なんて。
897デフォルトの名無しさん:04/12/10 10:33:26
テキストボックスに入力したファイルパスが存在するか調べるにはどうしたらよいですか?
c:\test\test.txtのように入力したときとかです
898デフォルトの名無しさん:04/12/10 10:49:02
500とか600の値を時間としてh:nn:ssの形式で表示させていのですけど、
どうすればいいのでしょうか?
899デフォルトの名無しさん:04/12/10 11:01:21
>>897
InstrRevで一番右の¥位置を取って、それより左をフォルダパスとして保持。
Dir関数で第二パラメータにvbDirectoryかなんか指定。

>>898
数値は何の値?秒数?文字列?(500は500秒?、5:00?)
900デフォルトの名無しさん:04/12/10 11:04:18
>>899
すいません。秒数です。
901デフォルトの名無しさん:04/12/10 11:10:23
60*60で割った商がH、60で割った商がM、60で割った余りが秒。
902デフォルトの名無しさん:04/12/10 11:18:10
>>901
ありがとうございます。
903デフォルトの名無しさん:04/12/10 11:46:15
>>899
ありがとうございまた
904デフォルトの名無しさん:04/12/10 14:27:36
VBコードを変換したいのですが正規表現で置換しようと
思っていますが妥当でしょうか?アドバイスよろしくお願いします
<次の文字列は右のように変換する>
MLdbdata(hDBProc, 1) -> rs1.Field(0).value
MLdbdata(hDBProc2, 10) -> rs2.Field(9).value
法則1hDBProcはrs1に読み替える
法則2hDBProc1,10の10は常に-1する

905デフォルトの名無しさん:04/12/10 14:42:37
>>904
すでにVBの話じゃないよな? 妥当? 好きなようにやればいい。
906904:04/12/10 14:49:46
>905
わかった。ありがとう
秀丸板さがします
907デフォルトの名無しさん:04/12/10 21:13:07
>899
解雇
908デフォルトの名無しさん:04/12/10 21:14:09
┐(´-`)┌
909デフォルトの名無しさん:04/12/11 09:31:22
マルチスレッドでグローバル変数の値を読んだり書いたりする際に
注意すべきことってありますか?
910デフォルトの名無しさん:04/12/11 10:03:35
ADOである名前のテーブルが存在するかどうかはどうやってしらべるのでしょう?
SQL="Table Exist('NorthWind')"
conn.execute(SQL)
みたいなものだと予想してます
911デフォルトの名無しさん:04/12/11 11:50:22
>910
え?
912デフォルトの名無しさん:04/12/11 11:54:37
>>910
ADOXを使うとか。
ADODB.ConnectionオブジェクトのOpenSchemaメソッドを使うとか。
913デフォルトの名無しさん:04/12/11 12:16:10
自己解決してたけどどーも


Const adSchemaTables = 20
rc = conn.openschema(adSchemaTables)
で、データベース内のいくつものテーブル名はコレクションとしてとりだされるから
rc("TABLE_NAME").valueをさらにFor EachとかDo whileで1個ずつとりだせた。


do until rc.eof
S+=rc("table_name").value
rc.movenext
loop

debug.print S
914デフォルトの名無しさん:04/12/11 12:56:56
>913
さすが
915デフォルトの名無しさん:04/12/11 13:35:07
>>909
VBのバージョンは?マルチスレッドの実現方法は?
916デフォルトの名無しさん:04/12/11 13:45:32
>915
VB6.0で、実を言うとマルチスレッドと言うか、1つは
DLLからのコールバック関数で、もう1つはタイマーイベント
なんです。そもそもこれってマルチスレッドって言うんですかね。
917デフォルトの名無しさん:04/12/11 14:35:24
>>916
スレッドのIDを表示させてみたら分かる。
918デフォルトの名無しさん:04/12/11 16:48:58
>>916
開発環境はOKで、コンパイルするとNGってパターンじゃない?
そもそもVB6は普通のマルチスレッドには対応してなかったと思う。
「動く時はある」だろうけど、やっちゃいけないことではないかと。
919デフォルトの名無しさん:04/12/11 18:03:16
VBのマルチスレッド処理は昔のVBマガジンにある。(前世紀かも・・・。w)
あと、PCDNとかでサンプルあるかもしれん。

マルチスレッド、出来る出来ないは出来る。でも、わざわざVBでやらんほうがいい。
920デフォルトの名無しさん:04/12/11 18:37:47
>919
タイマ使ったらそれだけでマルチスレッドではないの?
921デフォルトの名無しさん:04/12/11 19:58:48
>>920
だいぶ違うと思うぞ
922デフォルトの名無しさん:04/12/11 20:05:23
>921
マジで。タイマーたくさん作ったらそれぞれ別スレッドで動いてると思ってた。
923デフォルトの名無しさん:04/12/11 21:15:07
Windowsのメッセージについてきちんと勉強したほうが良いと思う。
それと、VBのDoEventsと、一般基礎知識としてのプロセスとスレッドの勉強。
924デフォルトの名無しさん:04/12/12 04:51:06
>923
そかー。サンクス
925デフォルトの名無しさん:04/12/12 05:27:54
>>922
だから、スレッドのIDを表示させてみろって。
926デフォルトの名無しさん:04/12/12 07:47:04
>925
どうやるの?
927デフォルトの名無しさん:04/12/12 08:12:07
>>926
GetCurrentThreadId

> 解説
> スレッド ID は、そのスレッドが終了するまで、システム上でユニークな(一意の)値となります。
928デフォルトの名無しさん:04/12/12 09:51:26
>927
ありがとう。確かに一緒でした。
929デフォルトの名無しさん:04/12/12 09:54:43
>927
DLLからのコールバックはスレッドIDが別でした。
というのもDLL内でスレッドを起動しているので当たり前なのですが・・・
というわけでやはりマルチスレッドなのですが、グローバル
変数を読み書きする際に注意する点はあるでしょうか。
930デフォルトの名無しさん:04/12/12 11:12:59
>>929
>923。
質問が漠然としすぎ。
931デフォルトの名無しさん:04/12/12 11:20:27
>>929
マルチスレッドは、複数の処理が同時に進行する。
例えばグローバル変数を G、ローカル変数を L とするとき、

L=G
L=L+1
G=L

が2つのスレッドで同時に処理されたとしたら、Gの最終的な値は保証できない。
(2人の人間に上記の処理をさせたことを想像してみるといい)

簡単な指針としては、グローバル変数の値を変更するときは
InterlockedIncrement 等の Interlocked 系 API を使う。

処理が複雑で、これらの API を適用できないときは
処理の前後を EnterCriticalSection と LeaveCriticalSection で囲む。
パフォーマンス低下やデッドロックにならないよう使い方に注意すること。
932931:04/12/12 11:21:42
それにしても、VBでやることじゃない気がする。
933デフォルトの名無しさん:04/12/12 11:27:05
>931
ありがとうございます。InterlockedExchangeでうまくできそうです。

>932
色々事情がありまして・・・

とにかくありがとうございました。
934デフォルトの名無しさん:04/12/12 14:01:03
31×31の配列idata(i,j)にあるデータをランダムアクセスで
書き込み、読み込みをしたいのですが、これで書き込みしたのを読み込みできません。なぜでしょうか?
Sub failsave()
Open "c:\back.bin" For Random As #1 Len = LenB(idata(1, 1))


For i = 0 To 30
For j = 0 To 30
k = 1
temp = idata(i, j)
Put #1, k, temp
k = k + 1
Next j
Next i

Close #1
End Sub
935デフォルトの名無しさん:04/12/12 14:07:08
>>934
プログラミング以前だね。
まず人に読んで理解してもらえるよう文章を推敲することを覚えるべきだ。
そういうの「片手落ち」って言うんだよ。
936デフォルトの名無しさん:04/12/12 14:49:24
演算子\と/はどう違う?
937デフォルトの名無しさん
>>934
読み込みが失敗してるなら、
読み込み部分も提示しなきゃどうしようもねぇだろ。
エラーがでてるのかどうなのかも書いてないしな。

っていうか、Option Explicit入れてエラーが出ないコードにしてから
出直して来いって感じだな。(たぶんその辺じゃないかと思うけどさ)

片手落ちっていうか9割落ちだな。必要な情報が1割もねぇ。