▼ VB初心者質問スレ Part 10 ▼

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
遂にパート10突入です。

前スレはこちら
  Part 1 http://piza.2ch.net/tech/kako/968/968328471.html
  Part 2 http://piza.2ch.net/tech/kako/990/990793224.html
  Part 3 http://piza2.2ch.net/tech/kako/1000/10005/1000523122.html
  Part 4 http://pc.2ch.net/tech/kako/1006/10069/1006922992.html
  Part 5 http://pc.2ch.net/tech/kako/1010/10106/1010624646.html
  Part 6 http://pc.2ch.net/tech/kako/1013/10138/1013844542.html
  Part 7 http://pc.2ch.net/tech/kako/1015/10158/1015836357.html
  Part 8 http://pc.2ch.net/tech/kako/1018/10187/1018794901.html
  Part 9 http://pc.2ch.net/test/read.cgi/tech/1020830472/

Win32 API関連スレ
  Win32API 質問箱 Build3
  http://pc.2ch.net/test/read.cgi/tech/1017072275/

心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調べてみる。
参.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
ずさ
ブビ厨は一生このスレから出ないでください
APIスレには来ないでください
おながいします
4デフォルトの名無しさん:02/05/23 14:57
印刷のところでファイルに出力を選ぶと生成されるファイルを
VBから印刷するにはどうしたらいいんでしょうか?
5デフォルトの名無しさん:02/05/23 15:25
ActiveXEXEをアンレジストする方法はどうでしたっけ?
Regsvr32ではできないので、たしかコマンドライン引数で
アンレジストするような記憶があるのですが
自己解決しますた /unregserver ですた
>6
俺は /u でしかやったことなかったな
8デフォルトの名無しさん:02/05/23 16:43
エクセルにユーザーフォームでボタンを作成し、そのボタンをクリック
するとシートにウェブ上からHTMLのテーブルデータを読み込みます。
続けてボタンをクリックすると、前回表示されていたテーブルデータ
が削除されずに、右方向に移動されてしまいます。つまり
新しいテーブルデータが前回あったデータの前に挿入されてしまいます。
続けてボタンを押すと前回あったデータが消えて、新しい
データが挿入されるようにしたいのですが
どうしたらよろしいでしょうか?
アドバイスよろしくお願いします。
9笑む名無し:02/05/23 17:40
最近初めて構造体を作ったFunctionに渡すのには超便利
Function Fx(x0 as single , y0 as single , …)
Function Fx(xyz as _XYZ)
連立常微分方程式数値解をやってローレンツ近似常微分方程式をやりました
>9
いや、そんなこと自慢げに話されても困る(w
>>10
vbにはそれが限界ププ(ワ
意味が分からないなら素直に教えてもらえよ>>10(VB廃人)
13笑む名無し:02/05/23 17:50
>>10
呼ばれてから出没するように
以後 気をつけなさいよ シッシッ
っで最近どう?
あれ? 雑談スレになってる?
じゃあ、VBで共用体ってどうやるの?
とふってみる。
16笑む名無し:02/05/23 18:05
17笑む名無し:02/05/23 18:07
19笑む名無し:02/05/23 18:29
VBでオナってる場合じゃないココ行け http://choco.2ch.net/ogame/
20デフォルトの名無しさん:02/05/24 13:06
case文の条件で、
case (1から10まで) ってやつをやりたいのですが、( )の中へは
どう記述すればいいんですか?
>20
1 to 10
22デフォルトの名無しさん:02/05/24 13:31
>>21
どうもです〜
>>21
それだと1と10しか出来ません
>23
バカ?
25デフォルトの名無しさん:02/05/24 14:40
Win98&VB5の環境で作ったプログラムをWinXPで動かすと、
テキストボックスに2バイト文字を入力した場合、文字化けしてしまいました。
(確定後に化ける)
Win98の方では正常に動作しています。
フォントはMSPゴシックを使っています。
原因と対処法を知ってる人がいたら教えてください。
26535:02/05/24 16:28
EXCELに線を引かせる方法ってありますか?
マクロじゃだめなんです、どうか教えてください。
>>26
VBAつかえ。
28デフォルトの名無しさん:02/05/24 17:19
アクロバットリーダを使わずに、
PDFからGIFに変換する方法知ってる方がいたら、教えてください。
>28
ファイル名の拡張子をGIFにしてごらん
それっぽく見えるから
3028:02/05/24 17:25
ありがとうございました。
さっそくやってみます。
>>25
日本語ランタイムが入ってないだろ。
英語版ランタイムは最初から入ってるんだがなぁ…。
3228:02/05/24 17:37
拡張子かえるは、ナシってコトで。
ほかにないですか?
>>32
Adobe製品買おう。
>>32
adobeに聞け
>>32
それじゃ、Adobe Acrobatでも買いなさい
3628:02/05/24 17:47
了解。
すいません、>>10-13 の意味がよくわからないのですが、
ネタかなんかなのでしょうか?

>>37
俺にはあんたがネタに見える
39デフォルトの名無しさん:02/05/26 02:20
新スレage
もう終わったよ。
41デフォルトの名無しさん:02/05/26 13:10
.NETでAutoRedrawがなくなりましたけど、DrawLineやDrawStringで
描いたグラフィックが消えないようにするにはどうすればよいのでしょう?
>>41
Paintイベントで描画し直し。
43デフォルトの名無しさん:02/05/26 18:03
Filter,InitDir,FileName,Pictureプロパティ,LoadPicutre関数
の使い方がわかりません。
どなたか御教授お願いします。
44即レス:02/05/26 18:07
>>43
Filter,InitDir,FileName
何のメソッド OR プロパティか書いてくれ。
プラットフォームと言語名も書いてくれ。

最後2つはこう。
Picture1.Picture=LoadPicutre("c:\hoge.bmp")
4543:02/05/26 18:35
>44
Filter,InitDir,FileName
すべてプロパティです。

>プラットフォームと言語名も書いてくれ。
言語はVBなんですが、「プラットフォーム」はわかりません。。
46即レス:02/05/26 18:41
>>45
何のプロパティかが問題なんだよう。(; ´Д`)
「対象のオブジェクトは?」と書くべきだったか。

言語はVB.NETかVB6かで、プラットフォームは
WinXp,2000,NT,9x,Meなどのどれ?
4743:02/05/26 18:53
>46
言語はVB6.0で、2000、だと思います。
Imageコントロールでグラフィックスデータを表示し、
ファイル選択をできるようにしたいのですが。
(「対象のオブジェクト」でもわかりませんでした。。スミマセン)
48即レス:02/05/26 19:04
CommonDialogね。OK。

Filter
選択できるファイルの種類。
CommonDialog1.Filter="ビットマップ|*.bmp"とすると、
ビットマップだけ選択できるようになる。

InitDir
表示した時の最初のディレクトリを指定する。

FileName
選択後、選択したファイルが入ってる。
CommonDialog1.ShowOpen
Msgbox CommanDialog1.FileName
とすると、選択したファイルが表示される。

とりあえずMSDN読んでみれ。
コモンダイアログコントロールを選択してF1を押すんだ。
4941:02/05/26 20:55
>>42
ありがとうございます。

すみません、もうひとつ。
Graphicsオブジェクトのメソッドで描画した物をBitmapにしたいのですが、
どうすればよいのでしょうか?
50即レス:02/05/26 22:49
>>49
Picture1に描画したぁとPicture1.SavePicture。
51即レス:02/05/26 23:10
と思ったらNETダタネ。悪り。
ネー>>44
Pictureプロパティはオブジェクト参照だから
Set Form1.Picture = LoadPicture(…
ではSetがいるんでは?
おお基本だね VBのPicture関係は
最初覚えるのってやはり表示系だよね
懐かしいので、ではひとつ基本テクをあげちゃうよ
ゲームとかのキャラのように必ずしも、写真のような品質ではなく、むしろシンプルでよいとか
背景の画像が1024*768サイズ欲しいけど、メモリサイズを取りたくない場合には…
元画像を用意する 320*240だとする
Dim Pic As StdPicture : Set Pic = LoadPicture(パス)
この画像を用意したPictureBoxに拡大描画しておく(AutoRedraw=trueでメモリ保存しておく) Call Picture1.PaintPicture(Pic,0,0,640,480)
これで640*480の画像ができた、変数Picは元画像の読み込み用だったので不要、Set Pic=Nothing
危険を侵してまでAPIでメモリデバイスコンテキストを使う必要はない。PictureBoxをメモリにするべし
JPGやGIFで済むんでは?いや どうしてもBitmapでないとダメな場面はある わかった??

54即レス:02/05/27 01:05
>>52
VB6ではVBがやってくれるのでいらん。
NETは知らん。
5541:02/05/27 03:20
なんとか資料探しあてました。
metafileオブジェクトを使えばいいのですね、多分。
56名無し:02/05/27 03:27
質問です。
HPの一部を会員制にしたいのです。
よくいろいろ情報を入力して登録会員になって閲覧できるHPがありますが
作成方法などが載っているサイトなど知りませんか?
板違いっす
http://pc.2ch.net/hp/
こっちで聞いてください
58デフォルトの名無しさん:02/05/27 04:09
VB6sp3をインストールしている状態ですけど、SP4をダウンロードして
インストールするとき、SP3はアンインストールしておかないといけませんか?
SP3とSP4の両方ををインストールしとくのってできますか?まずいですか?
5958:02/05/27 04:26
解決しますた。
6056:02/05/27 09:10
>>57
そっちできいたらプログラムの知識が必要だから
こっちできけと言われたんです。
結局誰もわからないんですね・・・T.T
あきらめますです。
61即レス:02/05/27 09:14
>>56
むしろこっちじゃないか?
http://pc.2ch.net/php/
行ったこと無いけど。

どっちにしろCGIの知識ぐらいはいる。
WebProg板へ逝ってよし
http://pc.2ch.net/php/
63デフォルトの名無しさん:02/05/27 10:02
xpでVB6.0LEのアプリケーションウィザードって普通に使えます?
64即レス:02/05/27 10:33
>>63
動くはず。
65デフォルトの名無しさん:02/05/27 11:36
透過させたい部分のあるリソースのビットマップを
ピクチャボックスの任意の位置に描画するには?
66即レス:02/05/27 11:52
>>65
他のピクチャにLoadResPictureで読みこんでPaintPicture。
67デフォルトの名無しさん:02/05/27 20:28
おまえら、教えてくださいな。
例えば、デスクトップ上で右クリックしたときに出るような、コンテキストメニューは
どうやって実現しますか。
枠無しのフォームを開く、みたいな安易なの?
>>67
メニューはメニューですが何か?
>>67
悪いこと言わんからVB.NETに移行しよう!たばこ、清涼飲料水
などを2,3ヶ月我慢するだけだよ。

VB.NET,ASP.NETを体験すると、VB6なんて触れないよ。
7067:02/05/27 21:01
>>68
ああ、なるほど。ポップメニューすか!
>>69
どう良いのかが分かりません。
ちょと例をあげてください。
>>70
完全なオブジェクト指向指向。
充実しすぎているクラスライブラリ。
言語間の境界が無くなりライブラリの再利用製などがあがる。
7267:02/05/27 21:17
>>71
なんかすごい感じだけど、コンテキストメニューの実現に枠無しフォームとか言っちゃう
初心者ですがいけますかね?
>>72
旧VBで製品的にもプログラマ的にダメになる前に勉強した方が良いと思われ。
7467:02/05/27 21:27
>>73
なるへそ。ちと金貯めるとしますよ、師匠。
>>67
わるいことはいわん。猫でもわかるプログラミングからやれ
>>75
悪いこと言うね
77デフォルトの名無しさん:02/05/27 21:56
ToolBarコントロールで、アイコンの横にテキストを表示するようにして使ってるんですが、(tbrTextAlignRight)
すべてのボタンの横幅は、一番横幅の大きなボタンに合わされます。
しかも、テキストがすべて右寄せになってしまいます。(アイコンとテキストが離れた状態)
バラバラの長さのキャプションが設定されていると、非常に見た目がおかしいです。
これを改善することはできませんか?
ToolBar.Buttons(Index).Widthで設定できると思ったら、値取得しかできませんでしたし・・。
>>77
テキスト表示やめたらいい。
Tooltipで代用せれ。
79うんこまんこ:02/05/27 23:55
ゲームを作ろうと思うのですがUSBにつながれたコントローラで
操作するにはどうしたらいい?
それぞれのボタンに対応した値を返す命令とかある?
>>79
DirectInput
8165:02/05/28 11:56
>>66
スマソ
透過をどうすりゃいいかわからんかった
で結局 GetBitmapBits と SetBitmapBits で処理した
82デフォルトの名無しさん:02/05/28 12:37
VBでデータベース処理をしたいのでデータリンクファイルを新規作成したいのですが、
どうやっても新規作成できません.エクスプローラの画面でファイルから新規作成
としてもデータリンクファイルの作成がないのです。右クリックしてもないし・・・。
どうしたらよいでしょうか?
>>82
テキストファイルを新規作成して拡張子を udl に変えてみ
つーかそんなの使わず直接記述しろよ
84デフォルトの名無しさん:02/05/28 15:22
VBでADOデータベースを作成しているのですが、
あるコンボボックスに、任意のレコードセット(全レコード分)を表示させる
ことはできるんですが、その任意のレコードセットの一部のみ(IDで同じ番号
のだけ)を表示させることができなくてこまっています・・・。
レコードセットに「Filter」とか「Find」等を使っているのですが、反映してく
れません。データグリッドなら反映してくれるのですが・・・。
どなたか教えて下さい・・・。
85Master:02/05/28 16:03
ORACLE詳しい人いる?
86NetMessageBufferSend:02/05/28 16:56
NetMessageBufferSendでNT系のコマンド「net.exe send」を
Windows上からもやれたのですが、「net.exe view」はどうやったら
いいんでしょうか?netapi32.dllに入っているのでしょうか?
87NetMessageBufferSend:02/05/28 17:00
ていうか別に無理してAPI使わなくても
なんかコントロールとかコマンドとかでやれるなら
そっちのほうがいいです。

ちなみに今は「net.exe view > tmp.txt」
っていうbatファイル作っておいて、call shell("netview.bat")
ってやってからtmp.txtを読み込んで頭の「\\」を取り除いてます。
そんな方法はオカシイと思っています。
88デフォルトの名無しさん:02/05/28 22:01
すみません、教えてくださいテキストボックスに文字を入れてるんですが、
その内容をペーストによって変更できないようにしたいのですが。
このテキストボックスにはスクロールバーが付いているので、ラベル
のキャプションでまかなうってのはダメなんですわ・・・
右クリック禁止でも良いんですけどね。
なにとぞ、よろしくお願いします。
>>88
貼り付けない普通の書き込みはいいの?
90デフォルトの名無しさん:02/05/28 23:25
通販サイトで申し込み欄を埋めて送信すると
Microsoft VBScript compilation error '800a03f9'
と出てきてしまいます。
私のパソコンが悪いのかと思い
違う機でやってみたのですが同様にエラーになってしまいます。

MSDNで調べても載っていないし
GOOGLEで検索かけると英語の解説らしきページがでてきたのですが
http://wdvl.internet.com/Authoring/ASP/FormHandling/smart.html
↑ここ
チンプンカンプンです。
すみませんがどなたか
どうすればよいのか教えていただけないでしょうか?
9188:02/05/28 23:34
>>89
レスありがとうございます。
普通の書き込みもしないです。
ボタンを押して、ファイルの内容を読み出すみたいな感じです。
92デフォルトの名無しさん:02/05/28 23:37
>>88
クリップボードを強制的に消去。
9388:02/05/28 23:42
>>92
おお、なるほど・・・・・それって、WIN32APIでしょうか?
>91
プロパティにReadOnlyだかLockedだかってなかったか?
9588:02/05/28 23:46
っていうか、どのタイミングでクリアすれば良いんだろ・・・
9688:02/05/29 00:04
>>94
最初、Lockedで、制限してたんですよ・・・たら、ペーストできてしまって
あら、大変って事なのです。
9792:02/05/29 00:05
>>91
LoackedプロパティはKeyPressイベントでKeyAscii=0にするのと同じなので、
普通の書き込み(Ctrl+V含む)と右クリックによるペーストはできないが、
Shift+Insertとかその他のペースト方法ならペーストできるので、
厳密にやるならこれだけでは不完全。

VB.NETからはReadOnlyプロパティ。
こちらはCtrl+VでもShift+Insertも右クリックのメニューからも
貼り付けはできないようになっている。

>おお、なるほど・・・・・それって、WIN32APIでしょうか?
Clipboardオブジェクトをヘルプで見るべし。

>っていうか、どのタイミングでクリアすれば良いんだろ・・・
MouseDownやらKeyDown等でクリアするとか。
9892:02/05/29 00:06
あ、97の後半は、
>>93>>95 宛てね。
9988:02/05/29 00:08
>>97
なるほど、分かりました、ありがとうございます。
明日、試してみます・・・皆さん、まだ仕事場なんすか???
10092:02/05/29 00:09
そうそう、上の方法はやや乱暴なんで、
本当は、サブクラス化してWM_PASTEを握りつぶす方がいい。

サブクラス化って何?って場合は、忘れてくれ。
101デフォルトの名無しさん:02/05/29 00:47
>>88
ピクチャボックスにテキストを表示して、
スクロールバーを付ける手もある。いちおう。
102デフォルトの名無しさん:02/05/29 00:51
vb.netで良書ってある?
>>102
どういう観点から?
まったくの初心者向けというのはない。
・VB6からの移行を意識したもの
・基盤の話、アセンブリの話、リフレクション、スレッドについて
ちょっとずつ語っているもの

がある程度。

MSDNで十分。
104デフォルトの名無しさん:02/05/29 03:09
strTmpの後に&h0を挟んで&hFA,&hEd,&hFE,&hCEの繰り返しを
合計10文字のデータにして送信するために

Winsock1.SendData strTmp + Chr(0)+ DummyData(10 - Len(strTmp))
(中略)
Private Function DummyData(Length As Integer) As String
Dim X As Integer
X = 0
Do While Length > 0
Select Case X Mod 4
Case 0
DummyData = DummyData + Chr(&HFA)
Case 1
DummyData = DummyData + Chr(&HED)
Case 2
DummyData = DummyData + Chr(&HFE)
Case 3
DummyData = DummyData + Chr(&HCE)
End Select
X = X + 1
Length = Length - 1
Loop
End Function

というプログラムを組んだところ、string型への格納時に&hFAと&hEDが自動的に変換されて
両方とも&h0として送信してしまいます。
変換されずに送信する方法を教えていただけないでしょうか?
105デフォルトの名無しさん:02/05/29 03:36
>>104
バイト配列で飛ばせばよい。
String型で化けた原因は、いったんUnicodeに変換されたため。
106デフォルトの名無しさん:02/05/29 04:12
.NETです。複数のファイルをFormにドロップして開く時なのですが、
Form1_DragDropの中・・・

Dim strFilename() As String
strFilename = e.Data.GetData(DataFormats.FileDrop)

動くには動くのですが、Option Strict Onのオプションを入れるとエラーになります。
Stringの1次元配列に変換するにはどうしたらよいのでしょう?
>105
巧く行きました。
ありがとうございました。
String型の変数にLen関数を使ったところ、
返値の値が実際の長さより短いのですが…
どうすれば本当の値が帰ってきますか?
>108
多分勘違い LenB(strcnv("ほげほげ",vbFromUnicode))
で目的の結果が返ると思われ。
110デフォルトの名無しさん:02/05/29 09:12
VBで、ADOのレコードセットをセットした「コンボボックス」の再クエリーの記述の仕方を教えてくれ
ませんでしょうか?
>108
・109補足
Len関数は文字数を返す。
LenB関数はデータ長を返す。
VB.NETでコマンドボタンのClickイベントを書いたら
Private Sub Button1_Click(ByVal sender As System.Object,
                 ByVal e As System.EventArgs) Handles Button1.Click
こんなのが生成されるけど、これのSenderやeって何?
MSDNのここ見れ!でもいいので教えてください。
113デフォルトの名無しさん:02/05/29 11:40
質問なのにsageちゃった・・age
114デフォルトの名無しさん:02/05/29 12:41
クリスタルレポートに関してですが、
1ページに詳細5件のみ出力、以下は改ページ、という処理は可能でしょうか?
また、改ページの際にはグループフッター出力後に改ページしたいのですが・・・
セクションに式を書くとグループフッターが出力される前に改ページされてしまいます。
どなたか方法をご存知ないでしょうか?
115_:02/05/29 13:14
他アプリのリストビューに対して
Call SendMessage(ListView_hWnd, LVM_SCROLL, 0&, 0&)
これを実行すると、常に最下部に行ってしまうのは何故でしょう?
使い方がおかしいのでしょうか?
ご存じの方、ご教授お願い致します。
116デフォルトの名無しさん:02/05/29 14:45
変数をつかっての記述の仕方がわかりません・・・
 例えば、"題名"というフィールドがあったとしたら、
 rs!題名 = ・・・ と、Update、deleteとかの場合によく使っているのですが、
 その"題名"という所を、変数daimei と置き換えたい場合、rs!(なんて記述すればよいですか?)
 &とかいろいろつかったのですが、うまくいきません。
 教えていただきませんか?

117デフォルトの名無しさん:02/05/29 14:49
>>116
RS![daimei]
RS("Daimei")
でだめか?
118117:02/05/29 14:52
matigatta !
utudasinou...
>116
rs.Fields(daimei)
120117:02/05/29 14:55
daimei="題名"
RS(daimei)

desu...IME okasii...
121デフォルトの名無しさん:02/05/29 15:21
VBでのデータベースプログラミングをしたいと思っているのですが,
なにか良い参考書又はお薦めなものとかありましたら教えて下さい.
122デフォルトの名無しさん:02/05/29 15:36
>>117〜120
 親切にありがとうございますっ!あとで、試してみますね。
>>121
 僕は、谷尻かおりさんのVB本で勉強していますよ。
123115:02/05/29 17:41
自己解決出来ました。(汗)
124デフォルトの名無しさん:02/05/29 17:44
strconvについてです
W_str="ハイヒテ゛シテ゛ョン テレヒ゛"
str=strconv(W_str,vbwide)

とやった場合
"ハイビジョン テレビ"
となってしまいます

"ハイヒテ゛シテ゛ョン テレヒ゛"
というふうにスペースのみを全角にしたいんですが
どうすればいいのでしょうか?
str=replace(W_str," "," ")
じゃあかんのか?
126108:02/05/29 19:01
>109
>111
109の方法でいけました。
ありがとうございました。
127デフォルトの名無しさん:02/05/29 20:29
バブルソートを教えてください。
簡単なヒントでも良いです。
128デフォルトの名無しさん:02/05/29 20:35
>>127
まずWebブラウザでURL"www.google.co.jp"を打ち込み該当ページを表示させる。
表示される入力欄に"バブルソート"と入力して[Google 検索]ボタンをクリックする。

以上。
129デフォルトの名無しさん:02/05/29 20:45
>>128
レスありがとうございます。
書き込んだ後にプログラム打ったらできました(^^;
本当にすみません。
130.NETレス:02/05/29 22:11
>>106
strFilename = CType( e.Data.GetData(DataFormats.FileDrop), String())
でどでしょ。

>>107
>Private Sub Button1_Click(ByVal sender As System.Object,
>                 ByVal e As System.EventArgs) Handles Button1.Click
>こんなのが生成されるけど、これのSenderやeって何?

Senderはイベント発生源のオブジェクト
つまり、この場合Button1が渡される。

イベント用のプロシージャは今までのVBと違って固定じゃない。
代わりにプロシージャの後ろにHandles句をつけて、そいつにやらせる。
このButton1_ClickってプロシージャはButton1.Clickを処理するってこった。
Button2のClickもこのプロシージャで処理するなら、Handles句を
Handles Button1.Click, Button2.Click
とすればいい。

で、複数のオブジェクトのイベントを処理できるので、どのオブジェクトで
発生したイベントかを特定するのにSenderを使うわけ。

eはイベントの補足情報だ。MouseDownとかなら、左ボタンが押されただの、
X座標は・・・Y座標は・・・みたいな情報がパックされてる。
ちなみにMouseDownイベントのときのeはMouseEventArgs型だ。
やっとVBにもハンドルという言葉が必須になるか。
よくここまで来たなあ、ホント
132デフォルトの名無しさん:02/05/29 23:27
>>131
ハンドル違い。
>>131
つぅかハンドルはWindowsの機能なので本来隠匿されるべき。
>隠匿
隠しておいてはいけないものを隠すこと。
前スレでネットへの送信バイト数、ネットからの受信バイト数を取得したい
といっていたものですが
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/rras/mibref_0b07.asp
ここのリンクを答えとして出され、見てみたんですけど英語でわからん。
しかも使い方がサンプルコードとか無いし・・・
どう使えばいいんでしょうかね、これ(泣
136デフォルトの名無しさん:02/05/30 00:54
age忘れ・・・
137デフォルトの名無しさん:02/05/30 01:13
>122さん
有難う御座います。オラクル等のマイクロソフト社以外のデータベースソフトとの
リンクの仕方とか詳しく書いていますか?
Byte型配列を2つ結合したいのですが、CopyMemoryを使うしか無いのでしょうか?

Dim test1() as Byte
test1 = ChrB(22) + ChrB(100)
などという風に連続したデータを入れることはできるのですが、
同じような使い勝手でByte型配列同士を結合する方法は有るでしょうか?
139デフォルトの名無しさん:02/05/30 02:35
age忘れました
140106:02/05/30 03:16
>>130
ありがとうございます。すっきりしました。
ついでに107さんへのレスも非常に参考になりました。
>130
107です。すごい分かりやすい説明、ありがとうございました
おかげでよく理解できました!!
あ 107じゃなくて112だった 鬱だ死のう。。
143デフォルトの名無しさん:02/05/30 11:36
コントロールについて聞きたいのですが、
プロジェクト>コンポーネント でいろいろなコントールが付加できますけど、
コンポーネントのメニュー自体の形のコントロール(コントロール、
デザイナ、挿入可能なオブジェクト と切り替えれるダブ付きフォーム)
も付加できるんですか?できるんでしたら、付加の仕方も教えていただ
きたいのですが・・・
>>135
VB房ってこれだから。
一回Cやってから出直してくらはい。
>>144
ここは「VB初心者質問スレ」です。
>>145
んじゃ、説明してやれよ。
サンプルコード付きでな。
147 :02/05/30 15:23
>>146

>見てみたんですけど英語でわからん。

こういうのを頑張って読むように促すのもスレの存在意義ではないか、と。
>>147
TrayMeterのソースまで提示されているのにそれを読もうともしないやつに
何言っても無駄無駄
149 :02/05/30 17:01
>>148
そんなやつに気軽に回答を教えたくないよう(泣
150デフォルトの名無しさん:02/05/30 17:05
今VB6で作ったのを.NETに移行しようとしてるんですが
GetとかLetがなかったりCStrの引数が違ってたりとかで苦戦してます。

1から作り直すしかないんでしょうか?
>150
選択肢は3つ。
苦戦して修正するか1から作り直すかそもそも移行しないか。
判断するのは自分しかいないでしょう。
152150:02/05/30 17:09
>151
すばやいレスありがとうございます。
実際は納期寸前なので、次のプロジェクトまでは移行しない
と言うことになりそうです
153150:02/05/30 17:19
連カキすまそ
http://www.microsoft.com/japan/msdn/vbasic/techinfo/upgrade/transition/default.asp
これ見る限り、カナーリ違うんですねぇ。
1台にだけ入れてみてよかった
個人的には既存プロジェクトを.NETに移行させるのは
相当難しいと思っている。規模にもよるけど。
本当に普及するのかどうかもあやしいしねえ・・
155135ですが:02/05/30 17:51
ヽ(`Д´)ノウワァァァン!!
一応TrayMeterのソースは読みましたよ・・・RawMonitor.cppって奴です。
C++で全くわからんかったんですけどね(泣

英語のページだって翻訳かけてがんばって、、、
でもやはり専門用語は上手く訳せないらしく意味不明。
もといDQNな俺の英語力じゃァ自力で読解なんてのは・・・正直無理でした。

一応やるだけやってからここで質問したんですけど、
やはりこれでも教えて君として処理されちゃうんですか(汗
すみません。出直しますか・・・。
156デフォルトの名無しさん:02/05/30 18:21
当方VB5使ってますが、ちょっと質問。

WaitForSingleObjectを使ってる時に、フォームのコントロールのイベントも受け取りたいので
TimeoutIntervalを100くらいにして、DoEventsを挟んでぐるぐる回してます。
ただこれだと負荷かかりそうなんだけど、他にいい方法ないでしょうかね?
157デフォルトの名無しさん:02/05/30 18:36
アホみたいな質問で吸いませんが

text1.text=" ほげ 1行目 "
       "  ほげ 2行目       "

のような感じで複数行表示を初手からコードで設定はできないのでしょうか?
とりあえずmultiline プロパティーはTrue に設定して
文字コードで改行させようとしたところ  ・  と表示されてあっけに取られてますです

プロパティーウインドウからは書いた通りに設定できるのですが、コードではどのようにしたらいいのでしょうか?

自己レス わかった

復帰の chr(10) がいるのか

ていうか vbcrlf なんていうのがあるのね・・・

Cなら ¥n で 終わりなのに
日記は他でやれ。
160144:02/05/30 19:13
>>155
>>135のリンク先のHP見てサンプル作ってみた。とりあえず動いたみたいだ。

#include <windows.h>
#include <stdio.h>
#define MAX_INTERFACE_NAME_LEN 256
#define MAXLEN_PHYSADDR 8
#define MAXLEN_IFDESCR 256
#define ANY_SIZE 8
typedef struct _MIB_IFROW {
WCHAR wszName[MAX_INTERFACE_NAME_LEN];
DWORD dwIndex; // index of the interface
DWORD dwType; // type of interface
DWORD dwMtu; // max transmission unit
DWORD dwSpeed; // speed of the interface
DWORD dwPhysAddrLen; // length of physical address
BYTE bPhysAddr[MAXLEN_PHYSADDR]; // physical address of adapter
DWORD dwAdminStatus; // administrative status
DWORD dwOperStatus; // operational status
DWORD dwLastChange; // last time operational status changed
DWORD dwInOctets; // octets received
DWORD dwInUcastPkts; // unicast packets received
DWORD dwInNUcastPkts; // non-unicast packets received
DWORD dwInDiscards; // received packets discarded
DWORD dwInErrors; // erroneous packets received
DWORD dwInUnknownProtos; // unknown protocol packets received
DWORD dwOutOctets; // octets sent
DWORD dwOutUcastPkts; // unicast packets sent
DWORD dwOutNUcastPkts; // non-unicast packets sent
DWORD dwOutDiscards; // outgoing packets discarded
DWORD dwOutErrors; // erroneous packets sent
DWORD dwOutQLen; // output queue length
DWORD dwDescrLen; // length of bDescr member
BYTE bDescr[MAXLEN_IFDESCR]; // interface description
} MIB_IFROW,*PMIB_IFROW;
typedef struct _MIB_IFTABLE {
DWORD dwNumEntries; // number of entries in table
MIB_IFROW table[ANY_SIZE]; // array of interface entries
} MIB_IFTABLE, *PMIB_IFTABLE;
161144(つづき):02/05/30 19:13
int main()
{
HINSTANCE hDLL;
FARPROC GetIfTable;
FARPROC GetNumberOfInterfaces;
MIB_IFTABLE IfTable;
DWORD i;
ULONG buf;
DWORD cnt;
hDLL=LoadLibrary("iphlpapi.dll");
GetIfTable = GetProcAddress(hDLL, "GetIfTable");
GetNumberOfInterfaces = GetProcAddress(hDLL, "GetNumberOfInterfaces");
GetNumberOfInterfaces(&cnt);
buf = sizeof(IfTable);
memset(&IfTable, 0, sizeof(IfTable));
if (GetIfTable(&IfTable, &buf, TRUE) == NO_ERROR){
for(i=0;i<cnt;i++){
printf("%s\n", IfTable.table[i].bDescr);
printf("%d\n", IfTable.table[i].dwIndex);
printf("%d\n", IfTable.table[i].dwOutOctets);
printf("%d\n", IfTable.table[i].dwInOctets);
printf("\n\n");
}
}
FreeLibrary(hDLL);
getchar();
return 0;
}
162144:02/05/30 19:22
しまった。インターフェイス数ってIfTableに入ってるじゃん。

int main()
{
HINSTANCE hDLL;
FARPROC GetIfTable;
MIB_IFTABLE IfTable;
DWORD i;
ULONG buf;
hDLL=LoadLibrary("iphlpapi.dll");
GetIfTable = GetProcAddress(hDLL, "GetIfTable");
buf = sizeof(IfTable);
memset(&IfTable, 0, sizeof(IfTable));
if (GetIfTable(&IfTable, &buf, TRUE) == NO_ERROR){
for(i=0;i<IfTable.dwNumEntries;i++){
printf("%s\n", IfTable.table[i].bDescr);
printf("%d\n", IfTable.table[i].dwIndex);
printf("%d\n", IfTable.table[i].dwOutOctets);
printf("%d\n", IfTable.table[i].dwInOctets);
printf("\n\n");
}
}
FreeLibrary(hDLL);
getchar();
return 0;
}
>159
すまん

日記にする気は全くなっかったです

まじで少しはまってました
>>160-162
どうでもいいが、何故そこでCのサンプルを作り始める?(w

>>155
http://netpassport-wc.netpassport.or.jp/~whkama/vbasam/IfInfo.htm
↑これなんてどうだ?正確にはVBAのサンプルだが、流用できるだろう。
165質問です:02/05/30 19:44
VB で ASP.NET Web アプリをつくりたいです。
TextBox をがんがんドラッグ & ドロップしていくと、
デフォルトで ID が TextBox1、TextBox2、...みたいにつきますよね。
そこで、
TextBox1.Text = 1
TextBox2.Text = 2
...
TextBox10.Text = 10
のような処理を for 文で処理することは可能ですか ?
>>165
tagに値入れなされ。
167144:02/05/30 19:56
>>164
俺の苦労はいったい(w
>>167
・・・・・・・・よくがんばった。
169デフォルトの名無しさん:02/05/30 20:55
>>165
配列って知ってる?
>>165
コントロール配列にして(TextBox1(index)って形)

Dim i As Long
For i=1 to 10
TextBox(i).Text=i
Next i
>>170
単なる配列の間違いね。.NETなので。
>>156
MsgWaitForMultipleObjects
173デフォルトの名無しさん :02/05/31 00:15
画像のフィルタ加工してみたいのですが、下記ページのソースのような事は可能でしょうか?
http://www.codeproject.com/csharp/csharpgraphicfilters11.asp

> byte * p = (byte *)(void *)Scan0;
この辺の扱いをどうやってVB.netで書けばよいのかわからなくて。
Setpixelを使うと処理が遅くなってしまいます。
.NETのソフトもう配布してるやついる?
どんなもんか見せてみ〜
タスクに常駐するプログラムを書いたんだが
ポップアップメニューっていうの?あれがちゃんとした位置に来ないんだよ・・・
普通はマウスカーソルの位置がメニューの角になるような位置に
メニューが開くじゃん。右クリックとかでさ。
Webで拾ってきたサンプルを丸ごと叩き込んだんだけど
位置がおかしい・・・どっか間違ってるんだろうと思うんですけど。

環境 VB6 WinME
そのポップアップの関数のソースが
 http://xax_neutral.tripod.com/popup.txt
です。本当にこれが解決できなくて・・・。

あつかましいと思いますが、どうかお願いいたします・・・!
176デフォルトの名無しさん:02/05/31 00:56
>>175
ちょっと待って。ソース読んでみるから。
177176:02/05/31 01:17
>>175
スマソ。俺のDQNな技術じゃわからん(藁
もうちょっとスキルあるやつの降臨を待っていてくれ。
>>173
VB.NETでやろうと思ったら、Byte配列にCopyMemoryかなんかで
コピーしてくるしかないんじゃないかなと思うけど、自信なし。
.NET版のCopyMemoryの宣言をどうするか。ポインタ使えんしな・・・
ちょいちょいやったら、見事に落ちた・・・
>>175
そのサンプルは、メニューがタスクバーにくっついた形で出るように
調整してるんじゃないの?
マウスカーソルの位置に出したければ、マウスカーソルの座標を
そのままTrackPopupMenuに渡せばいいはず。
180デフォルトの名無しさん:02/05/31 02:15
マウスやキーボードがどれくらいの時間操作されてないかを取得する方法はないでしょうか?
自分でつくったソフト上だけでなく、Windows全体で。
えっと、スクリーンセーバー起動の時みたいな感じです。
言語はVB6です。
181デフォルトの名無しさん:02/05/31 02:25
"DoEvents"というやつの使い方がヘルプをみてもイマイチわかりません。
「Windowsに処理をかえす」・・・?
どのようなときに使うのですか?
ものすごい数のループするときとかDoEvents挟まないとフリーズしたようになるから入れる。
でも処理が遅くなる諸刃の剣。
素人はそのままループ一回ごとに入れるが、玄人は必要以上にDoEventsを呼ばないように組むらしい。
俺は素人だからしらん。
ものすごい数のループっていうか、ものすごい時間のかかるループか。
184デフォルトの名無しさん:02/05/31 02:41
>>181
一番よく使うのは、時間がかかるループの中で。
自作ソフトがCPUを100%近く使うと、Windowsによるフォームの
再描画が出来なくなり、フォームが白くなる。
同じく巨大ループ処理に対する中断キーを付けるときとかも。
>>180
そういうAPIはないんじゃなかろうか。
自力でやるとしたら、GetCursorPos使えばマウス動いたかわかるぞ。

>>181
例えば、ループでまわしてる処理があったりすると、ループ中にDoEventsがないと
他の処理(キーボードが押されたとか、コマンドボタンが押された・・・つーか押せないんだけどな)
とかは受け付けてくれない。
ところが、ループ中に「DoEvents」があれば、これらを受け付けてくれる。

逆に言うと、DoEventsがないと、無限ループに陥った場合にお手上げになる可能性がある。

無意味だけど一番わかりやすい例
Do
Loop
これだと無限ループで(゚д゚)マズー Ctrt+Del+Altの出番。

Do
DoEvents
Loop
これなら大丈夫。


わかりにくくてスマソ
186デフォルトの名無しさん:02/05/31 02:52
>>180
キーイベントとマウスイベントをフックする。

>>182
間引きするだけ。
下はCPUによって差が出るけど、あくまでもサンプル。
If i Mod 1000 = 0 Then DoEvents
187185:02/05/31 02:56
>>180
あ、キーボードのほうも調べたいのか・・・
すまん、こっちはわからん(汗
(´-`).。oO( やるとしたらDirectInputあたりだろうか )

>>185(自己レス)
わかりやすい例と書いてて「わかりにくくて」ってなんだよ俺。
回線切って寝る前に吊って来る。
>>181
ひとつのプロシージャ内でイベントは発生しない、DoEventsは一時外部を監視するのだ
以下のコードを実行されたい、フォームにコマンドボタンひとつCB1で貼りつけて欲しい
リアルタイムゲーの基礎モデルである
Private Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer

Private FLAG_END As Long
Private CB1_Click()
CB1.Visible=False
Call Test
End Sub

Private Sub Test()
Dim i As Integr,x As Long,dx As Long
START:
dx=(GetAsyncKeyState(vbKeyLeft)<>0)-(GetAsyncKeyState(vbKeyRight)<>0)
if dx Then
Select Case x+dx
Case 0 To ScaleWidth
currentX=x:CurrentY=64:Me.Print " "
x=x+dx
End Select
End If
currentX=x:CurrentY=64:Me.Print "A"
DoEvents
If FLAG_END Then Exit Sub 
Goto START
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
FLAG_END = 1
End Sub
189188:02/05/31 07:12
DoEventsの重要な点は
一度外部のイベント発生をチェックする、イベントが起きるようなら、それを実行する
つまり一度そのプロシージャ内から出るということだが
必ず、戻って来る…この点に注意されたい
Exit Sub,Exit Function とは 違うのがわかるだろう

DoEventsで一度出て、どんなにイベントの連鎖、一般プロシージャの呼び出しでらい回しにされても
戻ってくる・・・
その性質は間違えないように
 
190188:02/05/31 07:28
シツコイwが解説しておく
ボタンCB1が押されるとSub Testが呼び出される
Sub Test内はGoto STARTを見ればわかるようにラベルSTART間での無限ループである
無限ループなのは、ひたすら、キー入力を拾うリアルタイムゲーには必須と思われる
どうもVB厨はイベントに頼りすぎて、リアルタイム入力系に弱い<蛇足

もし、DoEventsがない場合、イベントは起きない、イベントプロシージャは実行されない
DoEventsで一度出る、もし、フォームが閉じられるなら、QueryUnloadイベントが発生するから
そこで変数FLAG_ENDを1にする、
必ず戻って来るから、FLAG_ENDが1なら終了だ そこで このプロシージャを出る

補足:188のコードは左右キーでAが動く、それだけ
191156:02/05/31 08:45
>>172
ありがとうございます。

実はMsgWaitForMultipleObjectsも調査済みだったのですが、
使い方がよくわからなかったので(サンプルは全然見つかりませんでした)
単にコントロールの.hWndを一緒に渡してみたんですけど、
すぐ帰ってきてしまってしまうんですよね。
戻り値は1だったからエラーではないみたいなんだけど・・・。

良かったら使い方も教えて下さい。
>>191
イベントオブジェクトを渡すのですよ。

Win32API散歩道に少し載ってる。
193デフォルトの名無しさん:02/05/31 09:18
>>165さんと同じことで悩んでますが、
>>166さんの「tagに値を入れる」ことで
なぜあれが解決できるのでしょうか?
2重ループにしてtagの値を探し出せってことでしょうか。
それだとずいぶん非効率な気がしますが・・
VB.NETになってからコントロール配列が使えなくなって、
本当に不便だと思っています
いい解決方法ご存知の方、お願いします
>>193
すべてはSystem.Objectから派生している。
すべてのコントロールはControlから派生している。
子クラスは親クラス型の変数に代入できる。
VB.NETはObject型の配列を宣言できる。
>>194
やば、UserControlもあるかも。

まぁ、コントロール配列とオブジェクトの配列は紙一重。
196即レス:02/05/31 09:31
>>175
リンク切れダタヨ

>>180
98以上、2000以上限定でもいいなら
GetMouseMovePointsExが使える。(未確認)

それ以外は・・VBだけ使うならマウス位置の監視かな。

>>181
とりあえず最初はDoevents入れないでループすると
イベントが発生しない、と覚えとき。
>>193
VB.NETはVBではないと見抜けない人は、
(VB厨房のレッテルを剥がすのは)難しい。
>>181
面白いので先生が来るまで語ります。

Windowsはメッセージ駆動のOSです。

アプリケーションはWindowsから

「マウスが押された」
「キーが叩かれた」

などのメッセージを受け取ってそれにしたがって各種処理をします。
VBではこのメッセージをわかりやすい形に変換してイベントとしています。
この辺はVBのイベントドリブンでなんとなくわかっているかと。

ここで、確認しておきたいのは、
一つのプログラムの中で二つのイベントは同時に実行できない点です。
(スレッドは無視)

例えばOnClickで無限ループを作った場合ほかのイベント処理は一切行えなくなります。
そこでDoEvent。
これは一旦現在の処理を地中断して別のイベントや処理を行うためのプロシージャ?です。
別の処理を実行後、またもとの処理を再開します。
199191:02/05/31 10:06
>>192

書籍なんですね。
今度探して立ち読みしてきます。

とりあえずはWaitForSingleObjectを回すよりはタイマーで処理した方が
いいような気がしてきたので、そうしてみる事にします・・・。

ありがとうございました。
200193:02/05/31 10:39
>194
つまりいったんObject型の配列を作成してコントロールを代入、
それをループで使えばいいということでしょうか?
イベントの受け取りなんかは、やっぱり
Handles Button1.Click, Button2.Click,Button3_Click,.......
のように延々書いていくしかないんでしょうか
一か月分のデータ入力でテキストボックスが30個もあるような
画面の場合、どう対処すればいいのか頭が痛いです。
>>200
private components
202:02/05/31 11:02
オーマイガー!
それは、VB6 Runtimeライブラリをインストールしようとするときにエラーが出ていると言うことデースネィ?

お手上げです。

プログラム板に行って、MSDN Library Visual Studio 6.0を持っている人を見つけ、
その人に、Visual Basic Runtime LibraryのInstall時に出るError 6とはどういう意味ですか? また、回避方法について教えてください。
とでも質問してみてください。
>>教えて下さい
203193:02/05/31 11:20
>201
components や IContainer をキーワードに調べてみたんですが、
さっぱり分からないです・・・ 201さんがくれたヒントは、
Windowsフォームデザイナが生成する
Private components As System.ComponentModel.IContainer
という変数を使えばどうにかなるということなんでしょうか?
自分でもまだ調べてみますが、よろしければもう少しヒントを
お願いします。
>>203

ComponentCollectionにGetEnumeratorがあるのでC#ならforeachで
フォーム上のすべてのコンポーネントにアクセスできる。
後はtagの値かnameで判断。
VBは知らないでう。
205即レス:02/05/31 11:34
>>202
他のランタイム入れてみれ。
206:02/05/31 11:42
>>205
ゲームやVB等のセットアップ画面で
(後ろの画面が青色になるところ)セットアップをはじめますか?
ってでるんですけど、そこでOKを押すと
Run-time error6
Overflow
とでてセットアップができないんです。。どうすれば?本当に困ってます
207193:02/05/31 11:54
>204
Dim obj As System.Object

For Each obj In Me.components.Components
   Debug.Write(obj.GetType.Name())
Next

こんなコードを書いてみたんですが、実行エラーに
なってしまいます (~_~;)

For Each obj In Me.components.Components.GetEnumerator()
   Debug.Write(obj.GetType.Name())
Next

こっちではそれ以前にビルドエラーです。
一体何が悪いんでしょうか・・
208138:02/05/31 11:58
あの…私、もしかして凄く見当違いの質問していたんでしょうか?
209即レス:02/05/31 12:16
>>208
見て無かったよ。すまんね。
dim byte1() as byte,byte2() as byte,byte3() as byte
byte1=cstr(byte2) & cstr(byte3)

こんな感じかな。正常に動くとは思うが。

>>206
それはインストール時にコードが間違ってるからエラーが出る。
ランタイムソフトなら他のランタイムを入れる。
通常のソフトなら作ったところに聞いてみる。
210181(DoEvents):02/05/31 13:58
>>182-185
>>188-190
>>196
>>198
みなさんありがとうございました。
211デフォルトの名無しさん:02/05/31 16:07
すみません素朴な質問なんですが、よくVBでデータベースソフト処理とか
いいますが、アクセスやオラクルなどのデータベースソフト単品と
VB+アクセス・オラクルとではどう違うのですか?どういう利点があるのですか?
212175:02/05/31 16:36
>>179
ソース見直してみたら確かにそうでした・・・。
ワケわからんサンプル置いた奴は誰じゃ!(w
GetCursolPosか何かでマウス位置とってそこにメニュー出せばいけますね。
ご教授ありがとーございますた。
213デフォルトの名無しさん:02/05/31 18:34
VB5で「プロジェクト」−「プロジェクトのプロパティ」で、
「コンパイル」のタブにある、コンパイルの違いは何ですか?

DQNな質問でスミマセソ・・・。
214デフォルトの名無しさん:02/05/31 18:48
VB6.0を使ってるんですが質問です。

Dim hogehoge

hogehoge = "あいうえお"

Open hoge.txt For Output #0

Write #0,hogehoge

Close #0

上のような処理でhoge.txtとに「あいうえお」という文字が記述されるテキストを
作成したときに、かならずhoge.txtの中が「"あいうえお"」のようなカンジで、
ダブルクォーテーションで囲んだようになってしまいます。
これがつかないようにする方法ってないのでしょうか…?
215デフォルトの名無しさん:02/05/31 19:02
>>214

すんません。自己解決しました。失礼いたしやした
216デフォルトの名無しさん:02/05/31 19:16
プレステのエミュレーターって重いですか?スムーズにゲームできます?
217.NETレス:02/05/31 20:35
>>200
イベントはAddHandlerで追加すればOK。

例)
Public Class MyForm1
Inherits Form

Friend textBox1() As TextBox = New TextBox(30){}

Public Sub New()
MyBase.New()
Me.ClientSize = New Size(640, 480)

Dim i As Integer
For i = 0 To 30
textBox1(i) = New TextBox()
textBox1(i).Size = New Size(30,30)
textBox1(i).Location = New Point((i mod 5)*30, (i \ 5) * 30)
textBox1(i).Text = CStr(i+1)
Me.Controls.Add(textBox1(i))
AddHandler textBox1(i).KeyPress, AddressOf textBox1_KeyPress
Next
End Sub

Public Shared Function Main(ByVal CmdArgs() As String) As Integer
Application.Run(New MyForm1())
Return 0
End Function

Private Sub textBox1_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)
e.Handled = True
End Sub
End Class
218即レス:02/05/31 20:48
>>212
VBの方がいろいろ細かい制御が出来るし
フロントエンドなら軽いし、
ネイティブコンパイルもある。

>>214
コンパイルの仕方を決める。
p-codeはコンパイルが早くて実行が遅い。
ネイティブコンパイルはその逆。

つか、MSDN見れ。コンパイルタブを
選択してからF1を押すのだ。

>>216
スレ違い、どころか板違い。
Bleem!が一番動くが動作率は60%ぐらいだな。
動作は400MHzのMX400あたりで十分動く。
219.NETレス:02/05/31 21:03
>>217に補足
System.Collectionsのクラス使った方が便利。
テキストボクースにでもMailアドレス入力させて
隣のコマンドボタン押したら、デフォルトのメーラの新規メールが起動して、
テキストボクースのアドレスを送信アドレスに貼り付けたいのですが、
どうしたら良いですか。
221デフォルトの名無しさん:02/05/31 22:09
>>218
大丈夫か?なんかレス番メチャクチャだぞ。
お疲れ。
222デフォルトの名無しさん:02/05/31 22:10
>>220
ShellExecuteで"mailto:メールアドレス タイトル"とかやってみたら?
間違ってる可能性大だけど。
223即レス:02/05/31 22:13
>>220
・Shell関数(CreateProcess)
・ClipBoardオブジェクト
・SendMessage
・EM_PASTESPECIAL
かな。(未確認)
224即レス:02/05/31 22:22
>>221
うわ。ほんとだわ。すまん。

>>220
>>222でいけた。楽チンなのでそちらでどうぞ。
kakasi.dll を VB から呼び出す時のパラメータと戻り値教えてください
226.NETレス:02/05/31 23:39
>>173
unsafeポインタは無理なんで、配列←→ポインタ間は
Marshal.Copyを使ってコピーしてみました。
以下、InvertのVB.NET版。(Try〜Catchは実験用に入れてる)
・サイズ指定とか引数指定とか間違うとTry〜Catchでも引っかからずに落ちるので注意。

Imports System.Runtime.InteropServices ' Marshalクラスに必要

Public Shared Function Invert(ByVal b As Bitmap) As Boolean
'// GDI+ still lies to us - the return format is BGR, NOT RGB.
Try
Dim bmData As BitmapData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb)

Dim stride As Integer = bmData.Stride
Dim Scan0 As System.IntPtr = bmData.Scan0
Dim p As Byte() = New Byte(stride * b.Height-1){}

Marshal.Copy(Scan0, p, 0, stride * b.Height)

Dim nOffset As Integer = stride - b.Width*3
Dim nWidth As Integer = b.Width * 3
Dim y , x As Integer
Dim index As Integer = 0
For y=0 To b.Height-1
For x=0 To nWidth-1
p(index) = (255-p(index))
index += 1
Next
index += nOffset
Next

Marshal.Copy(p, 0,Scan0, stride * b.Height)
b.UnlockBits(bmData)
Catch ex As Exception
MessageBox.Show(ex.StackTrace + " " + ex.Message + " " + ex.GetType.ToString())
Return False
End Try

Return True
End Function
227マサ:02/06/01 01:17
VB6で、フォルダを指定すれば
その中にあるファイル名を全て抜き出すようなことをやりたいのですが
Dirでやってもファイルの属性によって出る結果が違ってどうにもなりません・・・
サブフォルダの中は考えなくていいものとして、これはどうやったらできますか?
具体的にやりたいことはフォルダを指定したらその中にあるファイル名を全て
ListにAdditemしたいのですが・・・
よろしくおねがいします。
228マサカ:02/06/01 01:20
恐ろしくアフォな質問するねえ。
229マサ:02/06/01 01:25
>>228
初心者ですので・・・。
こんな私でもそれなりに一生懸命調べて、考えたんです!
それでもわからなかったから質問してるんです。
こんな私にでもわかるように教えてください。
230173:02/06/01 01:29
>>226
NETではもう少し環境が整うまでグラフィックは難しいかなぁ・・・と
めげてたのですが、動きました、凄い!ありがとうございます。
これでまた目標をもって勉強できます!
>229
それが教えてもらう初心者の取る態度か?
232デフォルトの名無しさん :02/06/01 01:47
まんこ、まんこ、まんこ、まんこ!

初心者は
   何を言っても 
        許される
233マサ:02/06/01 01:47
>>231
いいじゃないですか・・・
それぐらい教えてくれても。もったいぶった言い方して!
ここは質問をするところなんでしょう?
だから質問しているのに、なんで怒られなくちゃいけないんですか。
わからないから教えて欲しい、と言っているだけなのに。
>>233
ここはアフォな質問をするVB初心者を叩くスレです
235_:02/06/01 01:59
質問させて頂きます。環境はVB6 Win98SEです。
変数を宣言するのですが、この変数、いくつまでの配列を使うかは
わからないんです。あとからどんどん足される可能性があって。
たとえば100コ分を宣言しておくんだったら
Dim TestPos(100) As RECT
のような記述になると思うんですけど、
不特定多数になる場合にはどうすればよいのでしょうか。
その都度、新しい分を追加することなどで対処できるのか
それともはじめに10000とか、有り得ないぐらいでかい数を取っておくのか・・・。
よろしければ、教えてくださいまし。ヽ(´ー`)ノ
>>227
228のしょうもない煽りに反応しなさんな。

Dir関数の第2引数で取得したいファイル群の属性を指定できる。
属性の指定はOrで複数指定できる。要は、全属性指定してやれば、
全部取得できるわけだ。
>>235
Dim TestPos() As RECT
で宣言しておいて、必要になったらRedimで確保。ヘルプ見れ。

>ヽ(´ー`)ノ
あっそ。
238デフォルトの名無しさん:02/06/01 02:06
杉良太郎が仲裁!
サラ金地獄 借金どろぬま夫婦
>>238
はげしくスレ違い
ファイルを読み込むときに、
先頭200バイトだけ、みたいに読み込ませることはできますか?
241デフォルトの名無しさん:02/06/01 02:18
おっとっと、あげ。
200バイト分のバイト配列を用意して、それにGet #。
243138:02/06/01 06:51
>209
正常に動きました。
非常に助かりました。ありがとうございました。
244:02/06/01 07:51
VBでC言語みたいに関数を自作する事って出来ますか?
>>244
できますよ。
流石にそこまでクソ言語じゃありません。
246:02/06/01 08:48
でわ,VBで文字列の足し算をする事って出来ますか?
247デフォルトの名無しさん:02/06/01 08:51
おしえてください。
「DBCombo」と「DataCombo」の違いはなんでしょうか?
コンボに連結したレコードセットの中身を毎回更新しながら、
同時にコンボに表示されるものも変えていきたいのですが、
どちらを使った方が良いのでしょうか?
248:02/06/01 09:08
>>245
できればやり方をおしえていただければありがたいのです。
249デフォルトの名無しさん:02/06/01 09:09
VBでgosub・return命令ってどうやるんだっけ?

誰か教えてく。
250:02/06/01 09:25
>>247>>249
私の話が終わってからにしませんか?
お願いします。
ほんとにアフォばっかりだな
ここは
252:02/06/01 09:36
>>251
賢い方と見込んでぜひお答えお願いします。
253即レス:02/06/01 09:37
>>225
?

>>231
初心者を煽るなよ。

>>244
function a()
end function

>>249
function mona()
Gosub hoge

msgbox "´Д`"
exit function

hoge:
msgbox "´∀`"
return

end function

これで分かる?
使えねえヤツばっかりだな
ここは
255:02/06/01 10:24
>>253
助かりました。ありがとうございます。
256あひゃ:02/06/01 10:32
えと、質問です。
ユーザーコントロールってあるじゃないですか。
自分で作るActiveXコントロール。
あれ作ったんですよ。それで普通にLetやGetのプロパティ
とか作ったコントロールは、フォームに貼り付けたら
プロパティウィンドウにちゃんとそのプロパティが
出てくるんです。これは良んですが、ここにリスト
で設定するようにするにはどうすれば良いのか分からないです。

標準であるListBoxコントロールのプロパティウィンドウ
に出てくるListやItemDataみたいなやつです。

プロパティのコードで引数2つ(1つ目がIndexで2つめが
プロパティ設定値)持つような形で作ったら
プロパティウィンドウにそのプロパティ出てきませんTT

教えてエロい人!

教えてあげたいけど、エロくないからダメだ
258:02/06/01 10:38
なんかtimerオブジェクトでファンクション関数を使うとエラーになるのですが。
どうすればよいですか?
259デフォルトの名無しさん:02/06/01 10:40
話は変わるけどよくVBでデータベース処理とか
いいますが、アクセスやオラクルなどのデータベースソフト単品と
VB+アクセス・オラクルとではどう違うのですか?どういう利点があるのですか?
>>258
>ファンクション関数
関数関数
261:02/06/01 10:59
ン?
262あひゃ:02/06/01 11:02
ンじゃーこの際エロくなくてもいいや!
教えてYO!
>>262
エロいけど知らないから教えられない。
264即レス:02/06/01 11:45
>>256
俺もエロい方だが無理っぽい。
配列で渡すと表示されないからな。
プロパティページつくって代用しとく?

>>258
凄まじく情報不足。

>>259
>>218>>212>>211の間違い。
DB系は少し苦手なんだけどね。
265デフォルトの名無しさん:02/06/01 13:44
すでに同じアプリが起動している場合に
先に起動していたアプリのとあるプロシージャを実行させ自分は終了
これどーすんの?
>>265
メッセージでも送れ。
267デフォルトの名無しさん:02/06/01 14:38
VBでアクセスと接続してデータベース処理をする勉強をしているのですが、
この知識はそのままVBとオラクルやSQLサーバー等のデータベースソフトとの
接続及び処理することに応用できますか?それともアクセスとオラクルとでは
接続の仕方などは違うのですか?
表面的には似てる。
>>267
クリソツ
270デフォルトの名無しさん:02/06/01 15:29
richtextコントロールで色を変えたいのですが例えば

With screen
 .SelColor=vbRed
 .Text=.Text+"Red"
 .SelColor=vbYellow
 .Text=.Text+"Yellow"
 .SelColor=vbBlue
 .Text=.Text+"Blue"
End With

のようにやっても、結局すべての文字色が最後のvbBlue
になってしまいます。どうすれば分けられるのでしょうか?
エロにかかわらず、教えてください。お願いします。
データを読み込みたいんですけど、
テキストとかの形式のファイルなら、そのままOpen 〜〜〜 for input as #1
とかでできるんですけど、rarとかの中身がぐちゃぐちゃになってるような
ファイルだと、ちゃんとファイルの内容が取得できくなってしまいます。
rarなら、 rar! と、ここまでしか読んでくれません。
こういうデータを秀丸のように、文字化けしながらでも読み込ませるには
どうやったらいいのでしょうか。

270ではないですが、エロにかかわらず、ヨロシクお願いします
>>270
そりゃそうなるだろ(w
273270:02/06/01 15:53
>>272
うすうす気づいきながらやってみたのですが、やっぱそうなりました。
でも、そうならない方法がどうしてもわからないです。
274即レス:02/06/01 15:59
俺はエロと言うよりむしろ女好きなんだが。

>>270
With RT1
.Text = ""

.SelText = "Red"
.SelStart = 0
.SelLength = 3
.SelColor = vbRed

.SelStart = 3
.SelText = "Yellow"
.SelStart = 3
.SelLength = 6
.SelColor = vbYellow

.SelStart = 9
.SelText = "Blue"
.SelStart = 9
.SelLength = 4
.SelColor = vbBlue

.SelLength = 0
End With

普段RichTextBox使ってないのでこんな感じ。ちぇ。
もうちょっとスマートにできそうだけど。

>>271
Binaryで読んでStrconvで文字列に変換すれ。
275270:02/06/01 16:03
>>274 即レスさん
おぉ!なるほど!ありがとうございました

女好きですか。
>>274
おぉ〜。バイナリで開くとそうならないんですか。
よくわかりました。早速やってみます。ありがとうございました。
277即レス:02/06/01 16:13
>>275
はい。可愛い女の子はもっと好きです。てへ。
所詮は即レス
即レスって現実世界で相手にされてなくてエロゲオタなの?
マトモに女と話したこと無い兼話せないタイプなの?
280即レス:02/06/01 16:34
>>278-279
なんだよ、ただ好きなもの言っただけじゃんか。ふんだ。
281デフォルトの名無しさん:02/06/01 17:26
.net にアップしたんだけど、新規にプロジェクト作って、
勝手にForm1ってクラスできてるでしょ?
そのNameを Form1 から frmMain に変えるとビルドエラーが起きるんだけど
原因教えてください。
Sub Main が 〜.Form1 に見つかりません、ってエラー表示なんですが
前はあの方法でいけて助かりました。どうもです。

ところで、例えば1000バイトあるファイルのうち、
500バイト目〜700バイト目までを読み込もうとすると
700まで配列を確保しておいて、700まで読み込んでから
500〜700を切り出すしか方法はないのでしょうか。
これぐらいの小さい数字ならいいのですが
数百Mもあるファイルの中の520Mバイト〜521Mバイト、
とかを読もうとするといちいち521Mも読み込まなくてはならないことになり
こんな不便なことがあるわけないと思いました。
もしこういうことが楽にできる方法があるのなら、
どうか教えていただきたいのですが、質問ばかりですみません・・・・
283即レス:02/06/01 17:48
>>282
Seek関数で読みこみ位置変更。
必要な分だけ配列確保。
284282:02/06/01 17:50
>>283
うっ・・・速い!
しかも的確なお答えありがとうございます!
さすが「即レス」さんだけはありますね。
285即レス:02/06/01 17:54
プログラミングが行き詰まってる時は2chに入り浸るので。(w
ま、がんばれ。
286デフォルトの名無しさん:02/06/01 18:38
俺は可愛くなくてもいい。
おっぱいが大きければいい。
287デフォルトの名無しさん:02/06/01 18:47
VB5エンタープライズをWin2000にインストールしてたら、
途中で「このインストーラはこのOSには対応してません」
みたいなエラーが出た人、います?
If 巨乳 then
  (・∀・)イイ!!
Else
  Exit Sub
End If
>>281
VS.NETはbeta2どまりだが、
スタートアップフォームの指定を変更すればOKじゃないかな。
プロジェクトを選択して、右クリックで指定のダイアログを出せたような。うろ覚えすまそ。

>>287
VS97をWin2000に俺入れてるけど、そのメッセージは見たことないな。
(環境的に問題ないわけではないが、標準コントロールしか使わない俺には関係なし)

290デフォルトの名無しさん:02/06/01 19:10
If 巨乳 then
  (・∀・)イイ!!
Else
  MsgBox Err.Number & Err.Description, vbCancelOnly, "貧にゅう"
End If
291デフォルトの名無しさん:02/06/01 19:11
メモリの解放は明示しなくても、プログラムの終了時に
行われているのですか?

Dim a(100) As Long
Erase a←不要?
292即レス:02/06/01 19:17
>>291
プロセス終了時のプロセスが所持していたハンドル、
メモリの解放などはOSが保証している。9xでも一緒。
9x系のメモリリーク問題はメモリの再利用の問題だったかな。

つーわけでいらんと言えばいらんが、不用になったら解放するのがマナー。

あと、その例じゃ解放されないぞ。Eraseで解放されるのは動的配列。
固定配列は初期化するだけ。
>>291
そうでした。スマソ<初期化するだけ
なるほど、マナーの問題ですな。ちゃんと消します。ありがとございました!
294_:02/06/01 19:31
VBでハッシュ関数を作りたいンですけど、
もう全くどこから手をつけていいやら・・・。
MD5とかSHA-1とか種類がありますが、
これ、どうやってつくればいいんでしょうか。
295即レス:02/06/01 19:33
なんだよ、童貞なだけじゃんか。ふんだ。
296即レス:02/06/01 19:39
>>295
おお、初めての騙りだ。

っつーわけでトリップつけるので
家に帰るまでレスしないよ。
297即レス :02/06/01 19:52
即レスってハンドルだったのか!(禿藁
アフォ丸出しですね
298即レス ◆ok/f5F1o :02/06/01 19:53
つけました。
299デフォルトの名無しさん:02/06/01 20:00
>>295-298
荒らすな
300 :02/06/01 20:56
300はいただいた
>>294
そんなあたなにドトネト
302デフォルトの名無しさん:02/06/01 22:13
前はファイルの一覧を取得したいというのを教えていただきありがとうございました。
ところが、サブフォルダの中にまだファイルがある場合、それも取得しなくては
いけないことに気付いてしまいました・・・。
ファイルの一覧を取得
 ↓
フォルダの一覧を取得
 ↓
一つ目のフォルダに移動
これを繰り返せばできるような気もするんですが、
普通にDirを使ってがんばるしかないのでしょうか。
303即レス ◆ok/f5F1o :02/06/01 22:17
>>302
再帰呼び出しすれば簡単でそ?
304シッパイダーマン:02/06/01 22:19
VBで開発したexeをお客に納品するとこなんだけど
アイコンの変更ができない!だれか教えてください。
アイコン変更ツール使ってもVBのexeは変更できないんだよね〜
みんなどうやっているの?
できるはずだが…
306即レス ◆ok/f5F1o :02/06/01 22:20
>>304
スタートアップフォームのアイコンプロパティを変更すればいいでそ?
307 :02/06/01 22:20
>>304
コンパイルする前に設定すればいいんじゃねーでしょうか?
308シッパイダーマン:02/06/01 22:21
>コンパイルする前に設定すればいいんじゃねーでしょうか?
そんなとこありました?


309 :02/06/01 22:22
>>308
>>306のとおり
310即レス ◆ok/f5F1o :02/06/01 22:23
>>308
今見たら、プロジェクトのプロパティにあったよ
311シッパイダーマン:02/06/01 22:27
実行可能ファイルの作成ってとこ?
312即レス ◆ok/f5F1o :02/06/01 22:27
>>311
それ!
313302:02/06/01 22:28
>>303
再帰よくわからん・・・
関数内で自分自身を呼び出してその処理が帰ってくるんだよねぇ。
と理屈を言えても実際どう書けばいいのやら・・・
314即レス ◆ok/f5F1o :02/06/01 22:29
>>313
例えばこんな感じ

Option Explicit

Private Sub Form_Load()

Call hoge(0)

End Sub

Private Sub hoge(hage As Integer)

If hage = 10 Then Exit Sub

MsgBox "hoge=" & hage
Call hoge(hage + 1)

End Sub

315シッパイダーマン:02/06/01 22:30
なんかフォーム名しか選択できません。。。。
316即レス ◆ok/f5F1o :02/06/01 22:31
>>315
そのフォームのアイコンはプロパティで変えれるでそ?
317302:02/06/01 22:32
>>314
ん〜 なんとなくだがわかったような。
やってみますありがとうございました。
dirは再帰に使えなかったような
319即レス ◆ok/f5F1o :02/06/01 22:34
>>318
まじで?
いや、あんまりVB知らんの。本物じゃないからさ
320即レス ◆ok/f5F1o :02/06/01 22:36
>>317
dirで一覧を取得しながら、取得したのがフォルダならまた自分を呼べばそのフォルダの一覧を取得するでしょ。
そうやってれば、フォルダがいくら深くても平気でそ?
>>318
Dir()で一覧取得してる途中に再帰しちゃうとね。
322即レス ◆ok/f5F1o :02/06/01 22:37
>>321
ガーン!!
じゃあ、>>320のなんてだめだね。ごめそ
>>319
ありゃ、ばらしちゃったの?面白かったのに。
324即レス ◆ok/f5F1o :02/06/01 22:40
>>323
たぶん、すぐぼろがでちゃうよ。だって、厨房だもーん。
325302:02/06/01 22:40
ということで、どうしよぅ(w
APIか何かで代用が効くものがあるのかもしれない・・・
調べてみよ。
326シッパイダーマン:02/06/01 22:41
>即レス
アイコン変更できました!ありがとうございます
ほんとにレス早速いですね!
>>314 なんか信じられないです。
>>325
んにゃ、再帰であってるよ。
Dir()で一覧取得し終わってから
再帰すればいいだけ。

俺はいつもそうしてるよ。

>>324
いや、頑張れ。
間違っててもイイじゃん。
誰かフォローしてくれるよ。
328即レス ◆ok/f5F1o :02/06/01 22:43
>>325
FindFileとかどうでそ?
329302:02/06/01 22:50
ここに思いっきりそんな話題がのってました
ttp://www-user.interq.or.jp/~komurak/progtec/005.htm
このサンプルを片手にやってみようと思います。
330即レス ◆ok/f5F1o :02/06/01 22:53
>>329
すばらしいです。わずかなヒントから解答を見つけることはとてもよいことでそ
君ら時代に取り残されてないか?
Dir関数で一覧取得した後に再帰するのでもいいが、
FSO使えばもっと簡単だろうに。

Win95でIE4以降を導入していない環境だと使えないけどさ。
別にそういう環境を考慮しての話でもないでしょ?
332即レス ◆ok/f5F1o :02/06/01 23:02
>>331
動作環境が少しでも限定されるのがいやって気持ちもわかる気がする。
いまだにSDKレベルの開発がすき!
>>331
その条件ちょっと違う。
FSOはWSHがインストールされてないといけない。
WSHはWin98標準では入ってない。

自分で使うだけならFSOの方がいいんだろうけど、
俺はFSO嫌いなんで。
>>333
Win98ってIE4標準で、IE4にはWSHが標準で付属していたような・・・
未確認。
335:02/06/01 23:29
Private Sub Timer1_Timer()
k = kyori(3, 4)
Print k
End Sub
Function kyori(x As Double, y As Double) As Double
kyori = Sqr(x ^ 2, y ^ 2)
End Function

タイマーオブジェクトとファンクションを組み合わせるとどうしても
エラーになっちゃうんですが、何故ですか?
336即レス ◆ok/f5F1o :02/06/01 23:29
そういえばNT4.0にもWSHは標準じゃないなー
337即レス ◆ok/f5F1o :02/06/01 23:31
>>335
その前にSqr関数でエラーになっちゃうんですけど
>>335
Sqr関数はルートを取る関数で引数は1つだぞ。
>>335
,じゃなくて+だよな?
>>335
ああ、分かった。2点の距離を求めたいのか。
×kyori = Sqr(x ^ 2, y ^ 2)
○kyori = Sqr(x ^ 2 + y ^ 2)
だ。
( ´∀`)サンカクカンスー
342即レス ◆ok/f5F1o :02/06/02 00:10
ふと思った。なんていい時代なんだろう。
ちょっとつまづいたらこうして2chで聞ける。
昔は、2,3日悩むのは普通だったような気がする。
>>334
WSH1.0がWin98に入ってる、というドキュメントを見つけた。
しかし俺がFSO嫌いになった理由ってWin9xでの開発を始めた頃に
FSOが使えなかったからなんだが。

うーむ。俺が馬鹿だったからなのか?むう...明日調べてみる。

>>342
お前厨房やったんちゃうんかと小一時間。
>>342
本物に化けた偽者を演じている本物ですか?
>>344
本物じゃないよ。
346デフォルトの名無しさん:02/06/02 01:21
厨房だけどリアル厨房でないだけの話では・・・

昔は、ネットはおろか、本、雑誌もあんまりなかったよ。
だからひたすらソースと睨めっこ。マニュアルと睨めっこ。
何日でも悩むものは悩むもんさ。

ま、言っても、最近のプログラミングは知ってるか知らないかの差っていう
部分のウェイトがかなりを占めるからわからなくて悩んでても仕方なかったりする罠。
347即レス ◆ok/f5F1o :02/06/02 01:29
>>346
>ま、言っても、最近のプログラミングは知ってるか知らないかの差っていう
>部分のウェイトがかなりを占めるからわからなくて悩んでても仕方なかったりする罠。

これは、今も昔もそんなに変わらない気はする。
基本が身についてしまったから、そう思うだけだと思うけど。
>>346-347
アルゴリズムも知ってるか知らないかのもんだからな。
まあ確かにいい時代だと思うよ。

ネットってスゴいね、なんて言ってみたり。
や、ほんとだね。
リア工房時代困ってたもんなぁ。
まだネットも無かったし近くの本屋にプログラム関係本なんて一冊も置いてないような状態だったからね。
聞ける人間も1人もいねえし。
今は調べたい事にvbとかサンプルとかキーワード追加してググれば分かっちゃう。
スゴイ。
Byte型配列の途中から一定の長さ分を、
他のByte型配列に移したいのですが、良い方法は有るでしょうか?

Mid$()やLeft$()のようなことをByte型配列でも行いたいのです。
351デフォルトの名無しさん:02/06/02 07:12
ageます。
352デフォルトの名無しさん:02/06/02 07:57
>>350
英語版VB6をインスコする。
353ななし@駄レス:02/06/02 09:43
>>331-334
>>336

今更・・・な議論ですが、そもそもOSとブラウザが密接にバンドルしてる時点で
MSが激しく嫌い・・・。
>>350
自力で処理する関数かいとけば?
Forループで回して地道にコピーするやつ。
355即レス ◆ok/f5F1o :02/06/02 11:15
>>350
ちょっとやってみたよ。どうかな?
Option Explicit

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Sub Command1_Click()

Dim aaa(100) As Byte
Dim bbb(100) As Byte

aaa(20) = Asc("a")
aaa(21) = Asc("b")

Call CopyMemory(bbb(50), aaa(20), 2)

MsgBox Chr(bbb(50)) & Chr(bbb(51))

End Sub
356即レス ◆POP.SOKU :02/06/02 11:44
てすと。
357即レス ◆POP.SOKU :02/06/02 11:46
どーも。本物です。
正直出てくるかどうか迷ったんだけどね。
頑張れ、>即レス ◆ok/f5F1o

>>350
一応こんな感じで。

Function hoge()
Dim a(255) As Byte, b() As Byte
Dim i&
ReDim b(255)
For i = 0 To 255
a(i) = i
b(i) = i
Next i

b = MidB$(CStr(b), 1, 100) & CStr(a) & MidB$(CStr(b), 101)

Stop
End Function

止まった所でローカルウィンドウでbの中身見るのだ。

でも正直お勧めはしない。CopyMemoryの方が速いし
メモリリークも少ないからね。
358デフォルトの名無しさん:02/06/02 12:39
>355
>357
共にちゃんと動きました。
ご忠告に従い、CopyMemoryを利用させて頂きます。
ありがとうございました。
359即レス ◆ok/f5F1o :02/06/02 14:24
俺もやってみる。
360即レス ◆ok/f5F1o :02/06/02 14:24
うぉ!超適当にトリップ入れてみたのに>>355と同じかよ!
361即レス ◆ok/f5F1o :02/06/02 14:29
ネタですか?
362即レス ◆ok/f5F1o :02/06/02 14:29
俺も逝くぜ
363即レス ◆ok/f5F1o :02/06/02 14:29
まんまだしね>トリップキー
364デフォルトの名無しさん:02/06/02 14:33
>>359-363
荒らさないでね
365即レス ◆ok/f5F1o :02/06/02 14:36
>>364
オマ(以下略
366 ◆ok/f5F1o :02/06/02 15:02
◆ok/f5F1oは、このスレでの共通トリップになりました。
367即レス ◆ok/f5F1o :02/06/02 15:03
本物です。めちゃ、笑ってしもーた。(w
368即レス ◆Nx38Gvxk :02/06/02 15:08
やり方教えれ
369即レス ◆ok/f5F1o :02/06/02 15:08
>>368
どうやったら間違えられるんだ?
370即レス ◇ok/f5F1o:02/06/02 15:09
test
371370即レス ◇ok/f5F1o :02/06/02 15:11
もうだめだ、死ぬしかない。
372即レス ◆DYlDk.BE :02/06/02 15:13
?
373即レス ◇ok/f5F1o :02/06/02 15:16
うえーん
374即レス ◆POP.SOKU :02/06/02 15:17
>>373
ワラタ
375即レス ◆ok/f5F1o :02/06/02 15:18
>>374
そのトリップは本物の証ということでOK。
376即レス ◇ok/f5F1o:02/06/02 15:20
どうすれば自分好みのトリップになるんですか?

うあーん。
377即レス ◆POP.SOKU :02/06/02 15:22
>>376
とりあえずこっちへ行け。
http://www.geocities.co.jp/SiliconValley-Bay/6637/trip.html

なんで分からんのか分からんぞ。
378即レス ◇ok/f5F1o :02/06/02 15:29
お前等に災いが降りかかりますように。

うえーん。
.NETでどうなるのですか?
380即レス ◆POP.SOKU :02/06/02 15:50
>>379
今は亡きまとれすの発言。

----------------------------------------------------
363 :まとれす ◆mato/KTI :02/05/12 18:27
>>361
いっぱいありすぎて書ききれないくらい変わったぞ。MSDNの「Visual Basic 言語の新機能」を
見てみると、

「継承」、「例外処理」、「オーバーロード」、「プロパティとメソッドのオーバーライド」
「コンストラクタとデストラクタ」、「データ型」、「インターフェイス」、「デリゲート」
「共有メンバ」、「参照」、「名前空間」、「アセンブリ」、「属性」

などが紹介されているな。もちろん、これ以外にもコンポーネント(CLR)も変わってるし、
ADOなどのミドルウェアも変わってる。

はっきりいって、別の言語だと思ったほうがよいかもしれん
----------------------------------------------------
ということ。

まとれす帰ってこないのかな。
381デフォルトの名無しさん:02/06/02 17:13
すいません教えてください。
Set pr_Form1 = p_Form2
Set p_Form2 = Nothing

なぜパブリック変数をプライベート変数に代入する必要があるのですか?
メモリリーク問題に関係があるのでしょうか?初心者なもんで、教えてください
382デフォルトの名無しさん:02/06/02 17:24
>>380
何でいなくなったの?まとれす。

まぁ俺はおっぱい大きい女が好きだがナァ。
383即レス ◆POP.SOKU :02/06/02 17:25
>>381
既に作成されてるパブリックオブジェクトを
プライベートで再参照しても参照カウンタが増えるだけで
メモリの無駄使いにはならない。

他の所でそうしたほうがうまく行くからじゃない?

その情報だけではこれぐらいしか言えん。
必要なし
>>381
それどっからひっぱってきたソース?
それだけじゃなんだかさっぱりわからねっす。

まぁ俺はおっぱい大きい女が好きだがナァ。
386即レス ◆POP.SOKU :02/06/02 17:27
>>382
>何でいなくなったの?まとれす。
帰ってきて欲しいんだけどな。

>まぁ俺はおっぱい大きい女が好きだがナァ。
俺は可愛い子が好きだっつってんだろ。
>>386
女はおっぱいが大きいにかぎるぜ。やわらかくてあったけーぞぉー。

まぁ俺はおっぱい大きい女が好きだがナァ。
388381:02/06/02 17:39
アドバイスさんくすです。これはform2からちがformにうつるときに記述されて
いたものです。プライベートにしたほうが、他のモジュールから参照できなくて
いいのですかね?もとのフォームに戻るのにもかんけいあるのでしょうか?
389381:02/06/02 17:41
↑違うフォームに移るときのまちがいです。
390即レス ◆POP.SOKU :02/06/02 17:48
>>388
むう、難解なコード&難解な文章だな。

多分パブリックオブジェクトをプライベートにしたがってるようだが
そもそもそんなことをする理由が不明だ。

全体を見れば分かるかも知れんぞ。
作者の趣味の可能性もある。
きっとバグだよ
気にするな
>>381
例えば
form2に新たに(又は再び)移ってきたときにはpr_form2の値は常に
初期化されていなければならないような場合。
そして違うformでpr_form2の値をしようするような場合。
であれば私はそうするかもしれないですね。
form2のloadイベントで初期化すればいいという話もありますが・・・・・。

まぁ俺はおっぱい大きい女が好きだがナァ。
>>391
実はちゃんとした理由があるのかもしれないじゃん。
思いつきでバグとかいうなよ。
パブリックで渡してるフォームを弄れるところを明示したいんじゃない?
ゆれるおぱい
それは謎だが、親子関係のあるフォームなんかな。
元のフォームをたどりたいとか、イベント拾いたいとか。
pr_Form1にWithEventsが付いてるか知らんけど。

まぁ俺もおっぱい大きい女の方が好きだがナァ。
あせだくなおぱい
俺は脚がすき。おっぱいはどうでもいい。
ところでpr_form2の値はいったい何が入っているのか?って話は
もうでてるんだっけ?なんか勝手にformオブジェクトになってる観対だけど。

まぁ俺はおっぱい大きい女が好きだがナァ。
やわやわなおぱい
401デフォルトの名無しさん:02/06/02 23:59
RAGNAROK Onlineというオンラインゲームの補助ツールを作ってみたい
んですが、有志が作っているツール(有名なものでは『自動芋』等)の
いくつかで、ゲーム中の経験値やHP・SPを表示させる機能があるんです。
VB5で開発するつもりなんですが、そういったデータはどこに格納されて
いてどうやって取得すればよろしいんでしょうか?
サーバーから受け取ったデータはメモリに書き込まれてかもと他所で
言われたんですが、メモリにあるデータを抜き出す関数等がわかりません。
どなたかご教授願えれば幸いです。
402即レス ◆ok/f5F1o :02/06/03 00:04
>>401
ここで聞くのは間違ってるな。
有志に聞くがよい。
404デフォルトの名無しさん:02/06/03 00:06
とあるWebサイトのスクリーンショットを画像データとして保存したいのですが、
この「スクリーンショットを取る」という事を、実際のモニタに表示せずに行う事は
可能でしょうか?
405即レス ◆POP.SOKU :02/06/03 00:11
>>401
メモリにあるって言ってもどこにどういう属性で入ってるか、とか
どうやって公開してるのか、とかが分からんとどうしようもない。
403の言うとおり制作元に聞け。

>>404
GetDCでもkeybd_eventでPrintScreen送るんでも
どっちでも可。
即レスたんのおぱい・・・
407401:02/06/03 00:16
ここに来る前にROの質問スレで聞いたんですが、スレ違いと言われたので
こちらへ来たんですが… こっちもダメっすか(;´Д`)
ツール作者にどういう方法で表示してるんですか?と尋ねるのは、なんか
失礼かと思ったので… ソフト作者に「どういう方法で○○してるんですか?」
などと、普通は尋ねにくくないですか?(;´Д`)
408404:02/06/03 00:23
>405
さんきゅです。
M$のページでGetDCのサンプル見つけたんで、これ使って挑戦してみます。
409即レス ◆POP.SOKU :02/06/03 00:39
>>407
気持ちは分かるが仕方ないな。
DLLやらWinSockやらフックする方法もあるし
逆汗も手段の一つだがVBだけじゃ出来ない。

もしかしたらROのヘルプあたりに書いてるかもな。

>>406
もうええっちゅーねん。
萌えっちゅーねん。
411デフォルトの名無しさん:02/06/03 01:37
>>407
ここで質問するより、検索するほうが早い。

まず、データファイルやレジストリをパラメータが変化する
前後で比較するのが第一歩。
他アプリのメモリを参照するのは面倒だから。
VBでやってるツール&サイトもいちおうあったが。
ここってさ、検索しろと言うだけで具体的なヒント教える人少ないね。一応
初心者スレだし、検索ワードぐらい教えてあげた方がいいと思うんだけど…
初心者は、知りたい情報がどういう方法か、どういう仕組みかすらわからない
のが多いし、検索ワードすら分からないんじゃないかと。とりあえずヒントを
与えて、あとはそいつに自己解決させるようにした方がいいんじゃないかな?
413デフォルトの名無しさん:02/06/03 02:19
>>412
ま、
・APIの関数名をテージされたら、"関数名 VB"で検索。
・MSDNで検索
これで良しじゃない?

原因はただ゙レスつける人間が面倒なだけという事実に65,536バドエル
Winsockコントロールの使用中に何らかの理由でこちらから切断すると、
再度の接続時にconnectするところでVBが反応しなくなります。
Windows2000+Visual Basic6.0を使用していますが、原因がわからずに困っています。
何か心当たりが有れば教えて頂けないでしょうか?
415デフォルトの名無しさん:02/06/03 02:31
ageます…
>>412よ、だったら、
401に、君には無理だからあきらめなさいと言ってあげなさい。
そうじゃないなら、なんかヒントだしなさいな。単なるごみレスじゃん。

俺からのヒントは以下の通り。
ReadProcessMemory
WriteProcessMemory

たぶん411の言ってるツール知ってるわ。
オプションボタンって、どう使うんだ?
418デフォルトの名無しさん:02/06/03 07:13
結構教科書を調べたんですが、載ってないので質問させてください。
ファイル名をたとえば、No.1、No.2・・・・No.iというような名前にしてファイルを
作成したいのですが〜、
ファイル名の中の「i」が、ファイルの中の変数のiと一致するようにしたい
のですよ。
このようなことはできるのでしょうか?
たとえば、Open "C:\WINDOWS\デスクトップ\No.i.xls" For Input As #1
のようにして、ファイルを作成すると、当然iの部分は""の中にあるので
変数にはなりません。
どーしたらいいんでしょうか?
>418
Open "C:\WINDOWS\デスクトップ\No." & i & ".xls" For Input As #1
でいけると思う。
420414:02/06/03 08:45
追記です。
Localportを設定しなくても、Localport=0をconnectの前に入れても、症状は同じです。
VB本体を再起動すれば、普通に繋がりますが、
やはり一度切断すると再接続でVBがフリーズします。
421山太郎:02/06/03 11:12
>414
接続要求を受ける側のプログラムも自作?
もしそうなら、そっちが複数接続を受けられる作りになってる?
422200:02/06/03 11:25
>>200ですが、いまだに「同じコントロールが数十個ある場合の
イベントハンドラをどう簡素化するか」の疑問が解消していません。
MSDNの「Visual Basic .NET におけるコントロール配列の変更点」の
トピックを読んだんですが、イベントハンドラについては単に
ズラズラと書き並べる方法しか書いていませんでした。
もっと効率的にソースを記述するにはどうすれば良いのでしょう?
いい方法があれば教えてください。よろしくお願いします。
423デフォルトの名無しさん:02/06/03 12:07
いつもお世話になっております。

Public Fugu(1 To 35, 1 To 20) As Variant

Fugu = array("
これに6桁のデータを最後までびっしり入力すると
コンパイルエラーに。。。
括弧なんかは一応ついているはずなのですが
これって容量の問題なのでしょうか。
どなたか・・・。
424デフォルトの名無しさん:02/06/03 12:44
教えてください。

文字のバイト数を知るのはどうしたらいいですか?
ためしに、LENB関数で調べてみたら
"あ",”ア","ア","a" 全て2バイトで帰ってきます。 
全角か半角かの判別をしたいんですけどうまくいきません。
だれか、教えてください・
425デフォルトの名無しさん:02/06/03 13:00
>>424
LenB?だっけな?
426山太郎:02/06/03 13:02
StrConvで変換したあとLenBでせう。
427ななし:02/06/03 13:06
>>424

それはFAQ。

StrConv(Source, vbFromUniCode)

してから、長さを判定すれば、半角 = 1, 全角 = 2
と判定されるはず。
428414:02/06/03 13:07
>421
受け側は自作では有りませんが、複数接続は大丈夫です。
429424:02/06/03 13:10
ありがとうございます。
UNICODEが問題だったんですね。
やってみます。
また、教えてください。
430デフォルトの名無しさん:02/06/03 15:47
tsvファイルの読み込みで難儀しています。(VB6.0,win2000)

tsvファイルのレコードを1件読み込み
→読み込んだレコードの各フィールドをそれぞれ変数に代入
→各フィールドの書式が正しいかどうかチェック
→チェック結果をtsvファイルで出力

という処理を作りたいのですが、
Line Input#を使うと、フィールド毎に分割することが出来ないし、
split関数を使うと、動的配列に各フィールドの文字列が
代入されてしまうのでその後のチェック処理が上手くいきません。

分かりにくい質問とは存じますが、どうかよろしくお願いします。
431デフォルトの名無しさん:02/06/03 16:01
VB5で作ったプログラムってメモリリークの心配はないんですかね?
あるとしたら、どうやって調査したらいいでしょうか?
>>431
バイナリダンプ。ランタイムも含めて。

とかいってみる。
433デフォルトの名無しさん:02/06/03 16:54
>419
そうか。気がつかなかった。恥ずかしい。どうもありがとうございました。
434即レス ◆ok/f5F1o :02/06/03 17:40
>>414
切断するときにサーバ側のwinsockをcloseしないとだめだよ。
435.NETレス:02/06/03 20:08
>>422
217で書いたコードで、AddHandlerを使ったイベントハンドラの一括登録はわかった?
イベントハンドラでそれぞれのコントロールに対して何がしたいか知らないけど、
イベントが発生したオブジェクトはsenderを見ればわかるから、
例えばそれがTextBoxなら、

CType(sender, TextBox).Text = "イベントのあったテキストボックス"

とか普通に使えばいい。
別のやつが書いてたようにTagプロパティに番号を入れておけば、
それを今までのIndexのように使うこともできる。

VBの開発での見積もりってどんな感じなんでしょうか?
例えばマスタメンテ画面なんかだとテストとPGでどれくらいなんでしょうか?
ちょっとスレの趣旨と外れているのかなぁ?どなたか教えていただけませんか?
>VBの開発での見積もりってどんな感じなんでしょうか?
工数? 金額?

> 例えばマスタメンテ画面なんかだとテストとPGでどれくらいなんでしょうか?
大雑把すぎ。機能と仕様しだい。
それと工数だったら、担当者の技能による。
>>437
工数でおながいします。

機能と仕様はマスタのメンテ(追加・更新・削除)
レコードの一覧を表示してそれを選択することでメンテしたいものを
指示できるようなリストボックスなどがついていたりする。
ってところですかね。DBはMSDEにしておこうかな。
439デフォルトの名無しさん:02/06/03 21:59
DCOMってactiveXExeじゃないとできないんですか?
activeXDllは?
>>438
おれなら1.5日。
って、フィールド数100列とかやめてね。
>>440
なるほど。それぐらいなんですね。
ちょっと頑張りすぎてしまったかも。もうすこしゆっくりやります。
ありがとうございました。
>>440
それって設計とかテストとかデバッグとか入れた工数?
443デフォルトの名無しさん:02/06/03 22:50
マスタメンテの作成でプライマリキーが2つあるものを2つで一意にするための
コードはどんなふうにしたらいいのでしょう?
invチェックのセクションを増やすだけでしょうか?
>>443
DB側でエラー返ってこないの?
というかDBは何よ?
oracleです
446440:02/06/03 23:30
>>442
>それって設計とかテストとかデバッグとか入れた工数?

その辺、不明確だったな。一応、以下のつもりでの工数。

不明点の確認、詳細設計、コーディング&デバッグ、単体テストの工数。
前提:基本設計は除く&DBのテーブル定義がまともなこと。
447440:02/06/03 23:33
追記。
不明点の確認は、上司またはお客様から即時に回答頂けるものとします。
448200:02/06/04 09:30
>>435 NETレスさん
>>200です。おかげさまで、ようやく自分でも動く
サンプルを作ることができました!!
まだ動き的には理解しきれていない部分も多いんですが、
とっかかりができたので何とかなりそうです。
ありがとうございました。

449即レス ◆POP.SOKU :02/06/04 09:40
>>423
1 行に記述できるコードは 1,023 バイトまで。
そこらへんで引っかかってないか?

>>430
Line Input で1レコード読み込んで
SplitをVbTabで割ってフィールドごとの
処理が出来るんだが。
それじゃいかんの?

>>431
最初はタスクマネージャで調べるのが普通かな。

>>439
DCOMは分散COMの略で複数のコンピュータで
処理を分け合う技術。DLLだけじゃどうしようもない。
450デフォルトの名無しさん:02/06/04 09:47
モジュールのGeneral部分で、Public と Private 、それから Dim で宣言する変数の違いって何でしょうか・・・。
どれもモジュールレベルで、ほかのプロシージャから参照できる、だけどほかのモジュールからは参照できない。
そう思っているのですけど・・・。
451即レス ◆POP.SOKU :02/06/04 10:06
>>450
合ってるよ。
452デフォルトの名無しさん:02/06/04 11:43
Visual Basic .NETでのオブジェクトの開放ってどうやるの
VBだと

   SET オブジェクト変数 = NOTHING

でいいけどわからんで困っとります。 だれか教えてください。
453デフォルトの名無しさん:02/06/04 11:49
VBでデータベース処理の勉強をしているのですが,アクティブXの
Data EnvironmentデザイナやData Reportデザイナ、ビジュアルデータマネージャー
はVBでのデータベース処理をする上で必須ですか?
僕の持っているのはラーニングエディションなので使えないのです.
>452
オブジェクト変数 = Nothing
だけでいいと思ったけど、違うのか?
>453
知っているにこしたことはないけど、必須ではないと思う。
ミドルウェア(ADOとかoo4oとか)と、SQLを使えるってのが基本だと思う。
45645A:02/06/04 12:07
>>454
ホントはそれでいいとおもうんだけど
VB6から.NETに移行したんだけど
UPGRADE_NOTE: オブジェクト gRec をガベージ コレクトするまでこのオブジェクトを破棄することはできません。 詳細については、'ms-help://MS.VSCC/commoner/redir/redirect.htm?keyword="vbup1029"' をクリックしてください。
って真上に書いてあった。
457デフォルトの名無しさん:02/06/04 15:47
Windows Common Controls 6.0にはいってるTabStripコントロールで
ダブルクリックを検出したいんですが、どうすればいいでしょうか?
Clickイベントしかないのです。
MouseDownイベントが短い間隔で2回呼ばれたら・・・という処理をするしかないですか?
458デフォルトの名無しさん:02/06/04 17:52
Keycode=0
でキーボードの動作を殺せたんですが、どうも .net ではうまくいきません。
どうすれば Keycode=0 と同じ結果を得られますか?
459VB初心者:02/06/04 18:02
すいません、お聞きしたいのですが
VBでメニューエディタを使わずに、動的にメニューを作成したいのです。
APIを使う方法はわかったのですがAPIはなるべく使わずに
メニューを動的に作成する方法はありますでしょうか?
下記のようにCommandButtonを動的に作成できるのと同じように
メニューも作成できると思ったのですができないんどえす。
お知りの方おられましたらお教え下さい。

Option Explicit
Private WithEvents DynButton As CommandButton

' ・動的コントロールを実際に追加するコードは、次のようになる。
' プロパティは、追加するコントロールで必要なものを設定する。

Private Sub Command1_Click()

Set DynButton = Form1.Controls.Add("VB.CommandButton", "DynButton")
DynButton.Caption = "動的コントロールボタン"
DynButton.Left = 400
DynButton.Top = 100
DynButton.Width = 2000
DynButton.Height = 400
DynButton.Visible = True

End Sub

Private Sub DynButton_Click()

MsgBox "DynButton クリック"

End Sub
460450:02/06/04 18:13
>>451
ありがとうございます。
そうしたら、モジュールレベルの変数を宣言したい場合は、General部分に
Public、Private、Dimのどれで書いてもいいってことでしょうか?
461_:02/06/04 18:14
質問です。
ListViewコントロールを使っているのですが
これで全ての項目の全てのカラムをひとつごとに選択できる
(エクセルみたいに・・・)ようにはできないのでしょうか。
標準だと最初のひとつのカラムのものしか選択できないのと
各行ごとに選択するのとしか設定できなかったようなのですが。
おながいします。
462即レス ◆ok/f5F1o :02/06/04 18:21
>>461
FlexGrid使ったほうがよさそうだよ
463461:02/06/04 18:28
>>462
使ったことないYO!
ヽ(`Д´)ノウワァァァン!! 勉強してこないと無理か・・・
464即レス ◆ok/f5F1o :02/06/04 18:34
>>463
ListViewより簡単だYO! ヽ(`Д´)ノウワァァァン!! 
465即レス ◆POP.SOKU :02/06/04 19:22
>>457
MouseDown、Upを組み合わせて判定する。
ダブルクリック時間とマウス移動距離は
GetDoubleClickTimeとGetSystemMetricsで取得。

別にClickで判定してもいいけど。

>>459
メニューはインデックス付けてLoad/Unloadで
同じ階層のメニューの追加/削除は出来るが、
新しく作成、などは出来ない。

APIで出来てるんならそっち使っとき。
466ジョブ:02/06/04 20:08
◆◆反復型の成績判定◆◆
 10人分のプログラムについて、一人ずつ成績判定を行うプログラムを
作る。途中までコードを記述してあるので、残りのプログラムリストを
完成させなさい。

ヒント:成績判定の部分は多分岐構造になるので、Select〜Caseステート
メントを使うといいでしょう。以下 プログラム リスト

Sub 反復型の成績判定()

' 10人分の得点を設定
Dim X As Variant
X = Array(60, 82, 87, 50, 86, 89, 76, 58, 68)

' 判定文字列の設定
Dim hantei As Variant
hantei = Array("不可", "可", "良", "優", "対象外")
Dim h As Integer

Const N As Integer = 10
Dim i As Integer
Dim tokuten As Integer

For i = 1 To N
tokuten = X(i - 1)
>>446
宿題は自分でやれ
468デフォルトの名無しさん:02/06/04 20:35
>>466
とりあえず自分でやってみよう。
そして何がわからんのか再度質問してくれ。

それができないのなら明日友達に写させてもらえ。

友達が居ないのなら氏ね。
469デフォルトの名無しさん:02/06/04 20:43
エクセルVBAの質問もあり?

モジュール消したいんですけど
「消したい標準モジュールを右クリックで開放」を
VBAで書くとどうなりますか?
470440:02/06/04 21:01
>>467
ハァ?日本語読めますか?
>>446>>466を間違えただけじゃないの???
472即レス ◆POP.SOKU :02/06/04 21:10
>>460
そのモジュールでしか使わない、なら
PrivateかDimにしとき。ややカプセル化に
なるから。

>>470
>>471に一票。
>>469
Modules(0).Deleteとやると自分自身を殺すことになるからエラー
多分Modules("Module1").Deleteも同じ
474469:02/06/04 21:24
>>473
ありがとう。
でも、Modulesじゃ駄目なんですよ。

下の一行で消えてほしいが消えてくれない・・・
ActiveWorkbook.VBProject.VBComponents.Item(7).Remove
(消したいモジュールが7番目だったら)
475デフォルトの名無しさん:02/06/04 21:31
佐藤 \ 鈴木 \ 田中 \ 伊藤 \ 山田 \ 加藤

という文字列を、"\"で分割して順番にコレクションにためていくには、どうすればいいですか?
splitとかどうざます?
477469:02/06/04 21:39
自己レス。7番目を消したいなら
ActiveWorkbook.VBProject.VBComponents.Remove ActiveWorkbook.VBProject.VBComponents.Item(7)
で出来ました。すまん。
478デフォルトの名無しさん:02/06/04 21:43
>>477
splitを、どう使えばコレクションに順番にためれますか?
いまいち使い方がわからないのです・・・。
Private Sub Command1_Click()
Dim s() As String
Dim c As Control
Dim i As Long
s() = Split("佐藤 \ 鈴木 \ 田中 \ 伊藤 \ 山田 \ 加藤", "\", , vbTextCompare)
For Each c In Form1.Controls
c.Caption = s(i)
i = i + 1
Next
End Sub

Form1にコマンドボタン5,6個配置してやってみてくらさい。
>>478
480デフォルトの名無しさん:02/06/04 22:31
>>479
いいたいことは分かるんだけど。
コレクションに順番にためれますか?の説明にはなてないね。
配列にためられるんでごわすといったんさいな。
481461:02/06/04 23:19
早速詰まっちゃったじゃんか!ヽ(`Д´)ノウワァァァン!!
縦列は additemとかで出来た。これは簡単だったんだけど
横列はどうやって追加すりゃいいんだ?
あと「2列目の3個目の項目のテキスト」を変える方法とかもサパーリ
糞みたいなこと訊いてると思うんで申し訳ないがヒントでも下さい・・・。
cols
rows
textmatrix
483478:02/06/05 00:53
>>479
>>480
いやいや、参考になります。ありがとうございます。
484.NETレス:02/06/05 00:55
まずは.NET関連から。
>>452
変数 = Nothing
とできるがあまり意味はない。これでメモリが解放されるわけではないので。
参照されていないオブジェクトはガベージコレクションが適当なタイミングを見計らって、
自動的にメモリを解放する。
まぁ、Nohtingにしておいて、GC.Collectメソッドを使えば、
ガベコレが動くが、ガベコレがメモリ解放をする動作はそれなりに重い処理だから、
基本的に自動でやらすのが妥当。

>>458
>Keycode=0
>でキーボードの動作を殺せたんですが、どうも .net ではうまくいきません。

どうもうまくいかないって何をやったん?
KeyDownイベントのe.KeyCodeプロパティはReadOnlyだから代入はできんはずだが。

>どうすれば Keycode=0 と同じ結果を得られますか

e.Handled = True
でいけるよ。
#KeyPressイベントの(KeyPressEventArgs)e.Handled=Trueで文字のASCII文字の入力は防げるが、
#どうやら日本語はうまく防げない。

従来のVB。
>> 450
Publicの場合は、他のモジュールから参照できるぞ。
Form1で宣言してるなら、
 Form1.そのPublic変数
でアクセスできる。

>>459
どっちみちイベント拾わないと意味ないから、
API使っとき。さもなくば.NETだ。

>> 478
Splitは文字列の配列を返すから、
それをループでコレクションにAddしなさい。


485デフォルトの名無しさん:02/06/05 01:56
VBでa.txtとb.txtを結合してa.txtというファイルを作りたいのですが
DOSプロンプトで

copy /c c:\a.txt+c:\b.txt c:\a.txt

とやった場合は結合したa.txtファイルを作れるのでスが
VBで作ったソフト上でshell関数を使い

Shell "command.com /c copy c:\a.txt + c:\b.txt c:\a.txt", 1

とやった場合b.txtのデータだけのa.txtというファイルができてしまうのですが
どうすればShellをつかいファイルを結合してふたたびすでに存在するファイル名で保存できるのでしょうか?

486糞レス ◆9lhU6w7. :02/06/05 01:58
>>476
いいざます

>>477
謝ることないよ!

>>478
応援してます

>>479
お疲れさまです

>>480
「ごわすといったんさいな」どこの言葉ですか?

>>481
がんばれ!

>>482
全角かよ!

>>483
よかったですね

>>484
お疲れさまです
VB.NETのDir関数挙動おかしくないですか?
勘違いかな・・・。
なるほど!ToStringで連結してなかったから
おかしかったのか!
しかし、文字列型に変換されてたはず!
なぜなんだー!さてとガンバロ
490Komine::02/06/05 05:24
◆◆反復型の成績判定◆◆
 10人分のプログラムについて、一人ずつ成績判定を行うプログラムを
作る。途中までコードを記述してあるので、残りのプログラムリストを
完成させなさい。

ヒント:成績判定の部分は多分岐構造になるので、Select〜Caseステート
メントを使うといいでしょう。以下 プログラム リスト

Sub 反復型の成績判定()

' 10人分の得点を設定
Dim X As Variant
X = Array(60, 82, 87, 50, 56, 86, 89, 76, 58, 68)

' 判定文字列の設定
Dim hantei As Variant
hantei = Array("不可", "可", "良", "優", "対象外")
Dim h As Integer

Const N As Integer = 10
Dim i As Integer
Dim tokuten As Integer

For i = 1 To N
tokuten = X(i - 1)
491デフォルトの名無しさん:02/06/05 06:34
厨な質問で申し訳ないのですが
VB6.0とVB.NET、今からプログラミングを勉強しようと思ったら
どちらを始めたほうが良いでしょうか?
492デフォルトの名無しさん:02/06/05 07:51
すみません。また質問させてください。
ファイルを開いて、その中に文章をPrintで書き込みたいのですが、その本文中に
「" "」があって、その部分がプログラムだとみなされてしまうのですが、
こういう場合「"マーク」を無視させることはできるのでしょうか?

たとえば
Open "D:\bb.txt" For Output As #i
Print #i,""hello"aiueo kakikukeko "sasisuseso"kekeke"

とかなって、わけわかんないことになってしまうのですが・・・。
>>490
467 名前:デフォルトの名無しさん 投稿日:02/06/04 20:09
>>446
宿題は自分でやれ


468 名前:デフォルトの名無しさん 投稿日:02/06/04 20:35
>>466
とりあえず自分でやってみよう。
そして何がわからんのか再度質問してくれ。

それができないのなら明日友達に写させてもらえ。

友達が居ないのなら氏ね。
494MCSD:02/06/05 08:20
>>487
そろそろFileSystemObjectに切り替えろよ21世紀なんだから

>>491
VB.NETに決まってる。今からVB6なんてやっても何のアドバンテージにもならん。

>>492
ダブルコーテーション中のダブルコーテーションは二つ続けて書け
Print #i,"""hello""aiueo kakikukeko ""sasisuseso""kekeke"
495MCSD:02/06/05 08:23
>>490
くだらんプログラムだな。
途中まで記述しているコードをコメントアウトして、
クラスとコレクションを使ったプログラムを作って提出したれや
496MCSD:02/06/05 08:29
いらん記述が多すぎる。せめてここから始めろ

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

Sub 反復型の成績判定()

Dim X As Variant
Dim hantei As Variant
Dim tokuten As Integer
Dim h As Integer
Dim i As Integer

' 10人分の得点を設定
X = Array(60, 82, 87, 50, 56, 86, 89, 76, 58, 68)
' 判定文字列の設定
hantei = Array("不可", "可", "良", "優", "対象外")

For i = LBound(X) To UBound(X)
tokuten = X(i)
497VB初心者:02/06/05 09:01
>>465
メニューの件ですが、お返事ありがとうございます。
やっぱり無理なんですねー 
参考になりました。

API関数では下記のような方法でできるのですが、とてもしんどいです。
'●ポップアップメニュー作成
hMenuPopup_Disp = CreatePopupMenu()
'ポップアップメニュー項目作成
Call AppendMenu(hMenuPopup_Disp, MF_ENABLED Or MF_STRING Or MF_CHECKED, IDM_DISP_ICON, "大きいアイコン(&G)")

498458:02/06/05 09:02
>484
情報ありがとうございます。
当然、Kyecode=0 で代入できるわけもなく、いろいろと試行錯誤してました。

>#KeyPressイベントの(KeyPressEventArgs)e.Handled=Trueで文字のASCII文字の入力は防げるが、
>#どうやら日本語はうまく防げない。

これ、これを正におききしたかったんですが、日本語は難しいのかなー
他の代替手段も考えてみます。
ありがとうございました。
499即レス ◆POP.SOKU :02/06/05 09:23
>>485
パスはショートパスに変換して渡してる?
ちなみにそのDOSの例間違ってるぞ。

>>491
まあNETなんだろうなあ。
MSが推奨してる技術でこけた物はいっぱいあるが
NETは言語的にも楽そうだし。

>>497
ポップアップメニューの表示の話かい!

そんなら、Form1.Popupmenu [メニューの名前]だ。
500即レス ◆POP.SOKU :02/06/05 09:26
>>497
あ、ちなみに動的にメニューを作成できないから
既に作成してるメニューの名前を使う必要があるぞ。
>>499
ショートパスに変換とはどういうことでしょう?
>ちなみにそのDOSの例間違ってるぞ
ありゃりゃ。どこがまちがってます?
502即レス ◆POP.SOKU :02/06/05 09:38
>>501
どうせ対象ファイルはc:\a.txtじゃなくどっかのファイルなんだろう?
スペースが入ってたりすると認識できないので
ショートパス(DOS名とも言う)に変換する必要があるんよ。

>ありゃりゃ。どこがまちがってます?
COPYは"/c"なんてコマンドはない。
>>502
なるほど、ショーとパスについてはわかりましたが
例で上げた

c:\a.txt + c:\b.txt c:\a.txt

の用にパスにスペースが入ってない場合でもうまくいかないのですが
504即レス ◆POP.SOKU :02/06/05 09:53
>>503
俺んところはうまくいったぞ。どううまくいかない?

Part8か9の真ん中あたりに同じような質問あったから
一度見てみるのもいいかもな。
505485:02/06/05 10:39
送り先の内容がなくなりました
ファイルをコピーしました
となって
a.txtとb.txtを結合したのにb.txtの内容のみのa,txtができあがってしまいます
とりあえずPart8か9のほうもみてみます

もしよければ即レスさんのうまくいっている
shell関数を使ったVBのコードをかいていただけたらたすかります
506116:02/06/05 10:50
一緒だと思うが。
Option Explicit

Private Sub Command1_Click()
Shell "command.com /c copy c:\a.txt + c:\b.txt c:\a.txt", 1
End Sub

こうだ。c:\a.txtは"a"、c:\b.txtは"b"が入ってる。
実行後はc:\a.txtに"ab"だ。他に何か理由があるかもな。
507即レス ◆POP.SOKU :02/06/05 10:54
ありゃ、名前間違えた。失敗。
508485:02/06/05 11:03
すいません
そのコマンドだけでformで作って結合だけさせたらうまくいきました

実はその結合コマンドの前にデータ内容を入れたa.txtを作成してまして
作成したあと
さらにそのあと作成したa.txtとすでに存在しているb.txtを結合させて
a.txtという名前でふたたび保存しようとすると
コピー前に送り先側の内容がなくなりました。
となってb.txtのみの内容のa.txtができてしまうようです

解決方法などありますでしょうか?


509即レス ◆POP.SOKU :02/06/05 11:15
>>508
暇なら見てやるからコード出してみ。
他のどこかが悪い。それだけじゃ分からん。
510485:02/06/05 13:03
>>509
すいませんすこし調べていたのでちょっと時間が空いてしまいました
すこし省略しましたがこんな感じです

Private Sub Command10_Click()
Dim i, ii,iii, deta
i = "c:\a.txt"
deta = "a"
Open i For Output As #1
Debug.Print i
Print #1, deta
Close #1
'テキスト結合
ii = "command.com /c copy c:\b.txt + c:\a.txt c:\a.txt"
iii = Shell(ii, 1)
End Sub

どうも

c:\a.txt + c:\b.txt c:\a.txt

の場合はうまくいきますが

c:\b.txt + c:\a.txt c:\a.txt

と逆に結合した場合はうまくいかないようでこまってます
>>510
すごく揚げ足取りで悪いんだが、

>Dim i, ii,iii, deta
         ↑
   これはいくらなんでも・・・。
>>510
>"command.com /c copy c:\b.txt + c:\a.txt c:\a.txt"
コピー元とコピー先を同じにしない。これ基本。
513デフォルトの名無しさん:02/06/05 13:15
基本なのはわかるんですが
できないもんなんですかね
できるならできればそうしたいのです方法があるなら教えてくださいってことなんですが
514即レス ◆POP.SOKU :02/06/05 13:19
ああ、なるほど。1ファイルずつ結合してるから
bをa書き込んだ後には古いaが存在してないからだな。
COPYの仕様か。

>>512の通り、"c:\b.txt + c:\a.txt c:\c.txt"でcを作って
cをリネームしとき。
>>513
>コピー元とコピー先を同じにしない。これ基本。
これを「場合によってはいける!」と読むあなたに乾杯。
すでにa.txtが存在してるのにc.txtをa.txtにリネームできます?
>>516
世の中便利になってね、CP/Mの時代にdelと言うコマンドが開発された。
518即レス ◆POP.SOKU :02/06/05 13:22
>>516
それぐらいは削除してくれよ・・・
デスクトップなどに保存してる場合で常にクリックしやすい位置に保存しておきたいのですが
自動並び替えなどになっていた場合ファイルを消した場合自動的にファイルが並び変わってしまい
リネームしたものは最後尾に行ってしまうと思うんですが
できれば常に同じ位置になるようにしたいんです
DOSプロンプトから実行した場合はそのままの位置でできるので
SHELL関数を使った場合でそうできないものでしょうか
>>519
そもそも、

読み込みモードで開いて変数に内容保持。
書き込みモードで開きなおして保存。もしくは追記モードでファイル開く。
521デフォルトの名無しさん:02/06/05 13:41
>>520
それだと、データ量が多い場合ものすごく時間がかかってしまうので
COPYコマンドで結合しようと思ったわけなんです
>>521
中ではおんなじことやってると思うぞ。お兄さんは。
圧倒的に速度違うけどな
>>523
後学のために、ファイルのコピーを高速で行うアルゴリズムってあるの?
それとも純粋にDOS API+アセンブラとWin32API+VBの速度差?
copyは文字を記憶してるんじゃくて
バイナリで直結させてるから早いんだろ?
>>525
申し訳ない、もうちょっと噛み砕いて。
appendモードで開いてるって話?
開いてもねーし読み込んでもねーだろ
ただ直結させるだけ
だから早いんだろ
>>527
command.comってFAT直接操作してるんすか・・・。
DOSの標準シェルの癖にDOS API無視?
500Mのファイル500個に分割してあるとする
それを結合しようとしたとき
一個づつ開いて読みこんで変数に記憶ってこと500回やってるとおもいますか?
そんなことやってあれほどすばやく結合できない
後は自分で考えてくれ
ファイル読み込まないでどうやってcopyするんだよ。
531デフォルトの名無しさん:02/06/05 15:33
.Net もここで良い?
VS買うほどカネもないからStandard買っていろいろやってるんだが、
コンパイルできんのか、VSないと。
コマンドラインからできるみたいなんだけど。
>>531
F5押してみ?
533デフォルトの名無しさん:02/06/05 15:49
>>532
あ、デバッグはわかります。
今までVS上でしかVB触ってなくて、VSだと、
ファイル > Project.exeの作成 ってできたんだけどなーってことです。
534デフォルトの名無しさん:02/06/05 16:05
copyするとき読みこむってどこに読み込むんだ?
535とうとう(・∀・)キター!:02/06/05 16:20
『だから出来ないって言ってるでしょ』と説得しつづけてきた、Windowsでの
シリアルプリンタによる連続固定帳票への印刷。だが今回、とうとう手をつけ
ることになってしまいまった。
ということで、お勧めの帳票ツール、システム構成上での注意事項、コーディング
のコツなどの情報があれば是非教えてほしいのココロ。
帳票ツールは、出来れば独立してて直接DBから読み出せるのが吉。が、安定性
一番、値段が二番ということでよろしくお願いいたしまする(拝)

>>534
メモリのバッファ変数
>>536
やめとけ。やられるぞ。
538デフォルトの名無しさん:02/06/05 16:26
>535
Access。

いろいろと叩かれてるが、あのレポートだけ独立させて
くれんかなーと常々思う。
ふーん。DOSのCOPYコマンドの実装はファイルをメモリに読み込まないでコピーしてんのか。
どういう仕組みなんだろ。
VBでPINGを送りたいのですが、
どうやって送りますか?
>>540
死ぬ気でICMP実装。
542即レス ◆POP.SOKU :02/06/05 17:02
>>539
たしかディスク上に分割しているデータは
セクタに次のデータへのセクタ番号が
書いてあるんじゃなかったかな。

メモリ使わずに連結、ならそれを書き換えてるんだろう。
(自信なし。あてにしないでね。)

>>540
簡単にしたいのならDOSプロンプト。
DOSとの通信はたしか名前なしパイプで出来たはず。
543540:02/06/05 17:16
>>542
ありがとうございます。
DOSプロンプト無しでは無理でしょうか。
ネットワークの通信テストソフトを作りたくて、一定時間おきに永久にPINGを打つ
ソフトにしたいのです。細かいこと書かずにすみませんでした。
>>543
>一定時間おきに永久にPINGを打つ
DoSを使わずには無理ですなw
545即レス ◆POP.SOKU :02/06/05 17:27
>>543
ICMP関係のAPIがあるからそっち使うか?
まあいつものごとく英語だけど。

サンプル。
http://www.geocities.co.jp/SiliconValley-SanJose/3279/scrap.html
546ヽ(´ー`)ノ:02/06/05 17:32
ListViewで特定位置のテキストはどうやって取得できますか?
ListView.ListItems(ListNum).SubItems(SubNum)
のような形で取れるかと思いきやできないっぽいんですけど・・・。
547即レス ◆POP.SOKU :02/06/05 17:36
>>546
出来るよ
>>546
ListView.ListItems(ListNum).SubItems(SubNum)
 ↓
ListView.ListItems.Item(ListItem).SubItems(CheckNum)

これじゃないの?
549546:02/06/05 17:39
みす

ListView.ListItems(ListNum).SubItems(SubNum)
 ↓
ListView.ListItems.Item(ListNum).SubItems(SubNum)

こうだね。
[質問]
ファイルのサイズはFileLenで取れますが
いちいちフォルダ内全てのファイルに対してFileLenする、など以外の方法で
フォルダ全体のサイズを取得することはできますか?
551デフォルトの名無しさん:02/06/05 18:05
age
552550:02/06/05 18:14
ミスりました・・・
そんなことできるわけないですよね(汗

いちいちファイルを一つごとにDirする等以外の方法で
フォルダ内のファイルの数は調べれますか?の間違いです・・・
553535:02/06/05 18:59
>>538

>Access。
>いろいろと叩かれてるが、あのレポートだけ独立させて

……出来る?(^^;
いや、Accessにはあまり偏見は無い。叩かれるのは使い方を判ってない
バカな開発者のせいだ。Accessは、Accessで出来ることだけに開発範囲を
留めておけば、VBよりよっぱど開発効率は高い。

が、そもそも、Windowsで連続固定帳票へ印刷できるとは考えてなかったので、
自然とAccessは選択しから外れてしまいまったのよ(^^; 穴明き帳票をWindows
で印刷するには、何かしらイリーガルな操作をしなけれ
ばならない、って固定観念ですわね。

正直、クリレポやActiveReportを使わずに出来るのか?>連続固定帳票印刷
#もちろん、「実用になるか」っつー意味ですので(^^; ←ツッコミ防止用
554ごみレス ◆WuzDVM0M :02/06/05 19:02
555デフォルトの名無しさん:02/06/05 19:27
フォーム上にコマンドボタンが二つある状態で
下矢印を押したときにイベントを発生させたいのですけど、
フォーカスが移動するだけなんです。
どうすればいいでしょう?
もちろん、フォームのKeyPreviewはTrueにしました。

失敗例
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyDown Then
556糞レス ◆9lhU6w7. :02/06/05 20:16
>>555
Thenの後が激しく気になる!
557デフォルトの名無しさん:02/06/05 20:24
>>556
マジレス。
スクロールバーを動かしたいのよ、っていうか動かさなきゃいけないのですよ。

つまんないこたえでスマソ。
>>557
コマンドボタンをサブクラス化してWM_KEYDOWN
あたりを補足すれば逝けそうな気がしないでもない。
面倒くさそう。
559ごみレス ◆WuzDVM0M :02/06/05 21:07
>>557
テキストボックスで代用なんてのはダメかな?
560デフォルトの名無しさん:02/06/05 21:08
>>558
そんなめんどくさいことを入社2ヶ月
新人にやらすようなドキュソ会社は
逝ってよしですか
>>560
プロならまずそのクソ仕様に噛み付く。
Windowsの標準操作に合わせないと
そりゃ〜おそろしいことになるぞ〜って脅かしておけw
562WEB系初心者:02/06/05 22:53
エクセルのVBAでWEB上のDBからデータをやり取りしろとのことです。
この板にまします神々!お教えくださいm(__)m
563.NETレス:02/06/05 22:57
まずは.NETから。

>>531
> VS買うほどカネもないからStandard買っていろいろやってるんだが、
> コンパイルできんのか、VSないと。

532の言う通り。F5でOK。今までのVBと違ってVC++とかと同じで、
毎度ビルドで実行ファイル作って実行してる。
だから、別途、実行ファイル作成なんてメニューはない。

ソリューションかプロジェクト辺りを選んで右クリックして
出てくるダイアログでReleaseビルドとDebugビルドを切り替えられたと思う。
#VS.NET beta2は使ってたけど、
#今はVS.NET(VB.NET、VC#.NET含む)は持ってないんで、
#細かいところはヘルプで調べてみてくれ。

> コマンドラインからできるみたいなんだけど。
vbc /t:winexe /out:HelloWorld.exe /r:System.dll /r:System.Windows.Forms.dll HelloWorld.vb
例えば、こんな感じでできるぞ。

コンパイラのオプションについては.NET Framework SDK ドキュメントの
.NET Framework SDK
  - リファレンス
   - コンパイラおよび言語リファレンス
    - Visual Basic
     - Visual Basicのプログラミング
      - Visual Basic コンパイラ オプション
以下に載ってる。
ちなみに、これらのコンパイルのオプションはVS.NETではサポートしていないのもある。

で、従来のVB
>>540
Shell関数でPing飛ばしてリダイレクションでファイルに書き込んで、
そのファイル読むのじゃだめ?

>>552
まじめな手で一番楽なのは552だろうな。
ファイル数32767までじゃないとアウトだが、
FileListBoxのCountプロパティって手も。
自分用のちょっとしたツール程度ならこれでもOKだけど・・・

>>555
Windowsの仕様。
564ごみレス ◆WuzDVM0M :02/06/05 22:58
>>562
それだけじゃ意味わからんよ。落ちケツ!
>>540
バッチファイルにしとけば?
566WEB系初心者:02/06/05 23:29
>> ごみレス 殿
初心者なのでよく分からないのですが。。。
ASPとかならブラウザ上で入力すると
WEB上のDBからデータを取ってきて
表示できたりするじゃないですか。

それを既にあるエクセルの管理表から行いたいのです。
どういう方法があるのでしょうか?
どんな本にやり方が書いてあるですか?

教えてください。おながいします。
>>566
Webのは普通、外部からはDBにアクセスできないと思う。
Webサーバ上のあるプログラムがDBサーバからデータを取ってきて表示してるだけ。

LAN上での話ならWebは関係なく、VBでDBに接続するのとかと同じような感じで、
ExcelVBAからもできるだろう。
>>566
バッチでエクセルのデータをDBにいれてからにしたほうがいいよ
569デフォルトの名無しさん:02/06/05 23:44
>>561
日本電気様がうちに丸投げした仕事なんですけど
そんなことしたら倒産なんですけど
心配するな、その前に君が首になるから。
571WEB系初心者:02/06/05 23:49
>>567殿 >>568殿
ありがとうございます。
DAOを使う方向で考えてみます。
572即レス ◆POP.SOKU :02/06/06 00:09
>>555
LostFocus時に押されてるキーを取得、とか
その条件ならCommandButtonにフォーカスが来た時に
スクロールバーにフォーカス移すとか。

サブクラクス化が一番手っ取り早いけどな。
573本家糞レス ◆kuso.GD6 :02/06/06 02:58
たまに来たので、ちょいテクを晒す

★ActiveXコントロールをフォームに貼らないで使用する
 ※ただし、タイプライブラリが提供されていること
  ここではWinsockコントロールの例で、クラスモジュールを使っている
  
 Private WithEvents MySock As MSWinsockLib.Winsock
 
 Private Sub Class_Initialize() 'クラスの初期化と同時に作成
 Set MySock = New MSWinsockLib.Winsock
End Sub
 
後はこのクラスモジュールに自分でPublicの独自イベントや、プロパティ、メソッドを公開するべし
このクラスモジュールをClsSockとクラス名にしたとすれば
フォームや標準モジュールで
 Public(Private) ObjSock As ClsSock 'ClsSockクラスよりオブジェクトの作成

 Sub Main
  Set ObjSock = New ClsSock 'これでインスタンス作成
End Sub

 配列やコレクションを使うと便利。やってごらん(´・ω・`)
574本糞レス ◆kuso.GD6 :02/06/06 03:06
>>573
ごめんごめん
参照設定忘れてた(´Д`;)
コンポーネントとしてではなく
タイプライブラリ参照で、Mswinsck.ocxを直接参照してね
でも正常に動くか保証はないよ 
なんだそりゃ
だから糞レスなんだよ(´・ω・`)
575デフォルトの名無しさん:02/06/06 08:30
>>574
わらた
576デフォルトの名無しさん:02/06/06 10:57
DLLって、レジストリに登録するタイプと、パスの通った
ディレクトリ(SYSTEMディレクトリ)に置いておくだけの
タイプのがあるけど、区別ってできるの?
577555:02/06/06 11:39
>>572
>LostFocus時に押されてるキーを取得
このやり方激しくキボンヌ

他の方々、サブクラス化というのも含めて調べていますけど、
自分には難しいです。
LostFocus時に押されてるキーを取得
ができれば逝けそう。調べてて半日つぶれてしまった
578即レス ◆POP.SOKU :02/06/06 11:52
>>577
APIになるけどGetASyncKeyStateとかで。
ただLostFocusとキーボード入力の時間差が
結構あるから注意ね。

>>576
レジストリ登録タイプはDllUnregisterServerとかの
関数がエクスポートされてるはず。
579576:02/06/06 13:02
>>578
 即レスTHANX! ということはregsvr32.exeで登録できない
ものは、パスが通ったディレクトリに置いておけばいいって
ことやね。
580デフォルトの名無しさん:02/06/06 15:04
VB自体が駄目というより、VBしかできない奴が駄目なんだろうな。
ちなみにVBオンリーユーザって、過去にVC++にもチャレンジ
してたりするんだけど、殆どが挫折してVBに戻っちゃうんだよな。
VB自体が駄目というより、VBしかできない奴が駄目なんだろうな。
ちなみにVBオンリーユーザって、過去にVC++にもチャレンジ
してたりするんだけど、殆どが挫折してVBに戻っちゃうんだよな。
581デフォルトの名無しさん:02/06/06 17:54
常駐しているアイコンを右クリックするとメニューが出るようにしたくて
調べてやってみていたら サブクラス化で右クリックを取得して、
TrackPopupMenuExでメニューを出す、と理解できたのですが
TrackPopupMenuExの使い方が・・・。
これでのウィンドウハンドルの指定はどういう意味になるのでしょうか。
それと「オーバーラップ領域」と書かれていたのですが
これは何の意味なのですか?教えていただきたいです。
582デフォルトの名無しさん:02/06/06 17:57
VisualBasic使い始めた初心者なんですけど、
時間をmsecまでだしたいんです。どうやったらいいのでしょうか?

どうか、教えて下さい。
>>582
Timer関数が実数を返すんじゃなかったかしらん
秒以下を調べたきゃ小数点下を見ればいいと思うのん。
正確にってならAPIな。
TimeGetTimeトカ。
95系はタイマーがいいかげんなのでマジでやろうと思ったら
パフォーマンスカウンター使うの
>>582
時間だったら、WindowsAPIのGetLocalTime関数を使え。

>>583
PC98系で小数以下はないという罠。

>>584
正確にってなら、timeGetTimeな。
timeBeginPeriodも。
587www:02/06/06 21:13
すいませんReDimがわかりませんです。
教えてください。
588糞レス ◆9lhU6w7. :02/06/06 21:33
>>587
動的配列で調査されたし
>>569
チミの実力を試しているんだよ。出来なければクビ(げらげら

まぁサブクラス化でキー押下とっても2、30行程度でできるじゃん。
作った後で「こんな仕様で本当にいいんですか?」とかいって
ささやかな反撃かましておけw
590555:02/06/06 23:36
555だけど、いや、ほんとたすかった。
みなさんマジ感謝です。結局LostFocusでできました。

>>589
実力も何も、会社入ってVBさわったんだけどね。
2ヶ月もやってりゃ普通できるのかな?
ちょっと鬱になってきた。

こんどはマウスホイールだと、会社のMSDNが2000春
なんだけど、そのころってホイール付きマウスってあったっけ?
>>590
>実力も何も、会社入ってVBさわったんだけどね。

そんなとこじゃなく、柔軟にいろんなことを吸収できるかどうかが試される。
要は伸びないやつはいらんってこった。

> こんどはマウスホイールだと、会社のMSDNが2000春
> なんだけど、そのころってホイール付きマウスってあったっけ?

この文章で何をいいたいのか、だいたい予測はできるが、日本語変だぞ。
555の質問文見てても思ったが、もちっと日本語をまともにかけるようになろう。
592デフォルトの名無しさん:02/06/07 00:34
Excel VBAのコードを書いているのですが、

.Range("セル名").Formula = "=COUNTA([" & ブック名 & "]" & シート名 & "!$A:$A)"

で、ブック名に"a-b.xls"のような、-や+が入るファイルを指定すると、
アプリケーションまたはオブジェクト定義のエラーを吐いて止まってしまいます。
どうやったら回避できるのでしょうか?
593デフォルトの名無しさん:02/06/07 00:34
Excel VBAのコードを書いているのですが、

.Range("セル名").Formula = "=COUNTA([" & ブック名 & "]" & シート名 & "!$A:$A)"

で、ブック名に"a-b.xls"のような、-や+が入るファイルを指定すると、
アプリケーションまたはオブジェクト定義のエラーを吐いて止まってしまいます。
どうやったら回避できるのでしょうか?
594592:02/06/07 00:36
二重カキコすみませんです。
>>579
まぁそれでも出来るだろうが。
LoadLibraryとGetProcAddress使うのもいい。

#つか、そういう時はDLLの付属のドキュメントに
#どちらか書いてあると思うが。

>>581
ウィンドウハンドルはメニューのメッセージを取得するウィンドウ。
オーバーラップ領域はこの場合表示可能な領域。

Popupmenuで同じ事出来るのでそっち使っとき。

>>582
timeGetTimeか
QueryPerformanceCounterと
QueryPerformanceFrequency。

timeGetTimeは20msec以下の数字は
どのOSでも不正確なので注意。

>>587
アバウトすぎ。

>>590
よかったな。
2ヶ月じゃあAPI使わせるのはどうかと思うぞ。
「VBだけで出来るだろ」と思ったんでないの?

ホイールは95世代でもあったはず。

>>592
'a-b'みたいに ' でくくって見れ。
596即レス ◆POP.SOKU :02/06/07 01:12
いつもの名前入れ忘れ。スマソ。
597592:02/06/07 02:10
>>595
試してみましたが、エラーが取れません。
598即レス ◆POP.SOKU :02/06/07 09:50
>>597
× "=COUNTA([a-b.xls]Sheet1!$A:$A)"
○ "=COUNTA('[a-b.xls]Sheet1'!A1)"
これで分かるか?
599576:02/06/07 13:21
>>595
作成済みアプリの配布パッケージを手動で作ってたもので・・・。
600デフォルトの名無しさん:02/06/07 14:58
マウスホイールを扱うにはどうすればいいですか?
できればDLL等は使いたくないんですが。
WM_MOUSEWHEELかWM_VSCROLLを見る。
602600:02/06/07 15:45
>>601
ソーリィ
VB6でというのが抜けてました。
603デフォルトの名無しさん:02/06/07 15:48
hwndがわかっているあるコントロールに、
任意のイベントを発生させたいとおもいます。
どうすればいいですか?
たとえばマウスアップで、エンターキーとか。
せんどめっせーじ
605デフォルトの名無しさん:02/06/07 15:59
>>604

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

これですか?
でもこれをどう使うのかがわからないです。
>605
えむえすでぃーえぬ
>>602
俺はVB使えないから知らんが、さっきぐぐってたら
VBでホイール制御してるページあったぞ。所望のものとは違うかもしれんが。
http://www.google.co.jp/search?q=vb+WM_MOUSEWHEEL&hl=ja&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
608デフォルトの名無しさん:02/06/07 16:47
>>606
えっと、私がやりたいのは、たとえば、
XXX というコントロールがあって、
それの、hwnd は判明している。
hwnd を頼りに、
XXX_Click というイベントが起きるようにしたいんです。

判明しているのは、hwnd であって、XXX は不明です。
>>608
対応するWindowsメッセージを投げてください。
610 :02/06/07 17:05
>>608
レイズしろ
611即レス ◆ok/f5F1o :02/06/07 18:14
>>608
Windowsはメッセージで動いてるってことを知ってますか?
>>490
以下のプログラムを技術点、速度点、メモリー使用量点の平均で判定するように直せ。

[Form1]
Option Explicit
Private Sub Form_Load()
  Dim marks As clsMarks
  Dim n As Long
  Set marks = New clsMarks
  With marks
    .SetTestData
    For n = 1 To .Count
      With .Item(n)
        Debug.Print (.sProgrammerName & "の得点は" & .nPoint & "点、成績は" & .sMarkString & "です。")
      End With
    Next
  End With
End Sub
[clsMarks]
Option Explicit
Private m_col As Collection
Private Sub Class_Initialize()
  Set m_col = New Collection
End Sub
Public Property Get Item(vIndex As Variant) As clsMark
  Set Item = m_col.Item(vIndex)
End Property
Public Property Get Count() As Long
  Count = m_col.Count
End Property
Public Sub SetTestData()
  Call AddNew("A氏", 60)
  Call AddNew("B氏", 82)
  Call AddNew("C氏", 87)
  Call AddNew("D氏", 50)
  Call AddNew("E氏", 56)
  Call AddNew("F氏", 86)
  Call AddNew("G氏", 89)
  Call AddNew("H氏", 76)
  Call AddNew("I氏", 58)
  Call AddNew("J氏", 68)
End Sub
Private Sub AddNew(sProgrammerName As String, nPoint As Long)
  Dim mark As clsMark
  Set mark = New clsMark
  mark.sProgrammerName = sProgrammerName
  mark.nPoint = nPoint
  Call m_col.Add(mark, sProgrammerName)
End Sub
[clsMark]
Option Explicit
Public sProgrammerName As String
Public nPoint As Long
Public Property Get sMarkString() As String
  'Select Caseでは得点の範囲が分かりづらいため、ElseIf を用いた
  If (nPoint < 60) Then
    sMarkString = "不可"
  ElseIf (nPoint < 70) Then
    sMarkString = "可"
  ElseIf (nPoint < 80) Then
    sMarkString = "良"
  ElseIf (nPoint <= 100) Then
    sMarkString = "優"
  Else
    sMarkString = "対象外"
  End If
End Property
615デフォルトの名無しさん:02/06/07 21:35
ListViewで
「どの項目も選択されていなければ」
というのはどうやってあらわせばいいのでしょうか。
SelectedItemなどを探ったのですがわからず・・・・。
おねがいします。
>>602
601の回答の通りだ。
サブクラス化せい。
>>615
試してないけど、
If listview1.SelectedItem Is Nothing Then
MsgBox "選択されてない"
End If
じゃだめかな?
618615:02/06/07 21:43
>>617
でけますた。
なるほど、Nothingを使って判定すりゃよかったんですか。
すばやいレスありがとうございました。
619名無しさん@ヒラ社員:02/06/07 21:51
winsockを使ってのデータのやり取りをするソフトを製作中なのですが、
データをSENDするときに、
winsock1.SendData Chr(&H65) + Chr(&Hfa) + Chr(&H86) + Chr(&Hed)
とやると送るデータが、パケットエディタで見てみると "65 00 00 00" となって、ぜんぜん

違うデータが送られてしまいます。

そして、送られてきたデータもパケットエディタで見てみると
winsock1.RecvData "86 ed 02" が送られてきたはずなのに
データを受け取るともうすでに"00 00 02"に変わってしまってどうしようもありません。

どなたかこれを打開する方法をご存知の方はいらっしゃいませんでしょうか?


620即レス ◆ok/f5F1o :02/06/07 22:40
>>619
そんなはずはありません。
621デフォルトの名無しさん:02/06/07 23:05
>>619
文字列で暗黙のUNICODE変換が起きるのは常識。
バイト配列を使えばその問題は回避できる。
>>621
言いたいことはわかるが、説明は違ってる。

&HFA、&H86、&HEDのどれももSHIFT JISで(というかASCIIコードで)
未定義だから、送信云々の前に文字化けしてるだけ。

イミディエイトウィンドウで以下のように打ってみるとわかる。
? Asc(Chr(&H86))
623即レス ◆ok/f5F1o :02/06/07 23:14
なるほど。
624名無しさん@ヒラ社員:02/06/07 23:24
ふむふむ、バイト配列で送ればいいのですか。
そうすると、
dim byte1() as byte
winsock1.recvData byte1
で、データを受け取って
ええと、送信時に &H65 &Hfa &H86 &Hed
をSENDするのはいったいどうやったらいいのですか?

625デフォルトの名無しさん:02/06/08 00:54
VBでソートを書く課題がでて
どうソートするかをパラメータで渡そうと思ったのですがうまくいきません。
Cでいう関数へのポインタみたいなのがあればいいんですが・・・。
VBではどうすればいいんでしょうか?
>>624
>をSENDするのはいったいどうやったらいいのですか?
何がわからんのかわからん。受信と同じじゃないか。ヘルプ見れ。

それとWinsockコントロールならrecvDataじゃなくてGetDataじゃないのか?

こういうところも貼っておいてやろう。
ttp://www.cs.k.tsukuba-tech.ac.jp/labo/koba/software/winsock.html
627デフォルトの名無しさん:02/06/08 01:48
>>622
英語版のVB6では、あれでうまく行くんだけど。
>>625
>どうソートするかをパラメータで渡そうと思ったのですがうまくいきません。

どうソートするってのが、比較方法のことを言っているのだったら、
イベントを使うべし。
629625:02/06/08 03:06
>>628
>イベントを使うべし。
イベントって「ボタンが押された」とか「ウィンドウが閉じられた」
ってのですか?
「降順が選ばれた」「昇順が選ばれた」というイベントを作るということでしょうか?
630628:02/06/08 03:35
>>629

Cでならどう作るつもりだったんだい?
qsort関数のように比較する部分を別の関数にしてそれのアドレスを渡すよね。

RaiseEventステートメントでイベントを起こすことができるが、
これはつまり処理の一部を別の関数に渡すようなもの。
ソート処理の途中の値の比較をする部分でCompareイベントを起こし、
Compareイベントには実際の比較を行う処理を書く。

631デフォルトの名無しさん:02/06/08 09:41
現在、開発する時に困っていることが有ります。
コントロールを配置しようとして、フォームにマウスポインタが
入るとポインターが消えてしまうのです。
配置はできるのですが、ポインタが見えない為、非常に困っています。

これといった設定はいらっていない筈なのですが、
VBの環境設定で配置時にポインタを消したり表示したりする項目
が有るのでしょうか?。
自分で設定部分を見回しましたのですが見当たらなかったので
対処できなくて困っています。
ご存知の方対処方法をお教えください。
>VBの環境設定で配置時にポインタを消したり表示したりする項目
>が有るのでしょうか?

ありません。
再起動してもなおりませんか?
最近、入れたソフトとかバージョンアップしたソフトとか環境的に
何か変えませんでしたか?

最悪、VBの再インストール、あるいは、OSからの再インストールくらいですかね。
633631:02/06/08 11:08
早速のレスありがとうございます。
ご指摘の内容から推測して、多分FAVOタブレットドライバを
をインストールしたのが原因なのかもしれません。
先ほど、そのドライバをアンインストールしてみたのですが、
解決しないので、これからVBの再インストールを試みます。
ありがとうございました。
後ほど、あらためて結果報告をします。
634632:02/06/08 11:45
>>633
>ご指摘の内容から推測して、多分FAVOタブレットドライバを
>をインストールしたのが原因なのかもしれません。

うーん、私もFAVO使ってるけど、とりあえずそういう現象は起きてないな。
Win2000SP2+VB5SP3+FAVO F-410
VBで作ったアプリをWin起動時に実行したいんですけど
スタートアップにはいれたくありません。
どうすればよいでしょうか?
>>635

HEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\run
にアプリのパスを登録しとけ。
637625:02/06/08 12:05
>>630
ヘルプで調べてみたんですが、
「イベントに戻り値は存在しません。」
イベントを起こして比較処理をそこに飛ばしたあと
比較した結果をどう得るんでしょうか?

すいません。今日でVB4日目なんです・・・。
>>636
さんくす。
639628:02/06/08 13:57
>>637
イベントの引数は参照渡し(ByRef)にしておけばいい。
ByVal/ByRefを引数に指定しなかった場合は、
VB6まではByRef扱いだから、意識してByVal指定にしてなければ、
引数をイベント内部で変更すれば、そのまま呼び出し元でそれを使える。
640625:02/06/08 14:31
>>639
ありがとうございます。
それでやってみます。

イベントの作り方をしらべないと。
>>637
VB4日目でソートのお勉強か、うちの会社なんて4年もVBやってて
バブルソートもできない奴らばっかりだぜ。
C経験者なのかな?

ICompareインターフェースを用いたソートのソースが
http://www.gj.il24.net/~nakasima/
の「汎用アルゴリズムライブラリ (未完成・開発中) 」
で落とせるよ。
642625:02/06/08 16:46
>>641
サンプルありがとうございます。

VBのことを検索しても、なんか「VisualBasicというアプリ」の使い方
を説明してるようなところが多かったので、そういうページを
教えていただいて助かりました。

Cは少しやってたので、アルゴリズム自体は問題ないんですが、
それをVBでどう書いたらいいのかがわからないんです。

ま、勉強します。
643デフォルトの名無しさん:02/06/08 18:02
質問です。

今、或るフォルダに10000枚ぐらいのファイルがあるんですけど、
そのファイル名を全部取得したいです。

ファイルシステムオブジェクトを使うとやたら遅いので、標準コントロール
のFileListBoxを使ってみました。そうすると無茶苦茶高速に取得できました。

ただ、FileListBoxはコントロールをフォームに貼り付けないとダメみたいです。
実行時にバインディングするような方法はないでしょうか?

結局は、標準コントロールを実行時にバインドする問題だと思いますが。

例えば、
Dim A as FileListBox
のようにして使いたいのです。




>>643
API使ったら?
645643:02/06/08 18:23
使いたいのは、やまやまなんですが、どんなAPIを使ったらいいのか分かりません。

で、今、調べたら、標準コントロールは、実行時にバインディングできないみたい
ということが分かりました。

あ〜〜、うつ・・・・

なんかいいAPIあったら教えてください。
646即レス ◆POP.SOKU :02/06/08 18:24
>>643
Dirの方が速いと思うけど、

Option Explicit
Dim WithEvents O As FileListBox

Private Sub Command1_Click()
Set O = Form1.Controls.Add("VB.FileListBox", "O")
O.Visible = True
End Sub

Private Sub O_Click()
MsgBox "Ouch!"
End Sub

こういうことかい?
コードで生成するなら、はなっからフォームにはっつけといてもいいんではないの?
なんかコードで生成することの利点ってあるの?
648643:02/06/08 18:32
レス、ありがとうございます。

Dirをちょっと試してみます。

Controls.Addの方は、ちょうど今やってみました。

さっき書いていませんでしたが、クラスを作りたいので、
Controls.AddだとコンテナであるForm1が必要になるわけで、
無駄に引数を増やすし、もっと簡便な方法はないのかと思います。

取りあえず、Dirをやってみます。

ありがとうございました。
650649:02/06/08 19:09
お〜〜、ありがとう!!!
と、思ったら、Cですね^^;
頑張って、読んでみます。

Dirできました。高速でした。

いらないかもしれないけど、コード書いておきます。
短時間にいろいろとレスありがとうございました。


'あるフォルダの中にある、ファイル名を取得する。
Public Function GetFiles(ByVal strFolderPath As String, _
Optional strMatch As String = "*.*", Optional isFullPath As Boolean = False) As String()
On Error Goto eh

Dim strA() As String
Dim i As Long
Dim aFile As String

If Right(strFolderPath, 1) = "\" Then strFolderPath = Left(strFolderPath, Len(strFolderPath) - 1)

aFile = Dir(strFolderPath & "\" & strMatch, vbNormal + vbHidden + vbSystem)
i = 0
Do While aFile <> ""
ReDim Preserve strA(i)
If isFullPath Then
strA(i) = strFolderPath & "\" & aFile
Else
strA(i) = aFile
End If
i = i + 1
aFile = Dir
Loop

GetFiles=strA()

Exit Function

eh:

End Function
Form1で全体に宣言した(Form1のコードの一番上に書いた)
変数があるのですが、これを別Formから読み取りたいんですけど
どうすればいいんでしょうか。コントロールの値とかなら
Form1.Label1.Caption という形でとれますが
変数の場合はどうやったらいいのか・・・。
それともまた別のところで宣言しておかなければならないのでしょうか。
VB始めたばっかなんでふざけた質問だと思うんですが
よろしくお願いします。
標準モジュールとかでパブリックな変数として宣言、とか。
関数で渡す、とか。
public a as string



form1.a

でOK
>>652
できますた。ありがd!
おっとみす。 >>652-653 だね。また頑張ってみます
656デフォルトの名無しさん:02/06/08 23:07
>>614
>'Select Caseでは得点の範囲が分かりづらいため、ElseIf を用いた
>ElseIf (nPoint < 70) Then
ずっと見やすいと思うけどなあ。
Select Case nPoint
  Case 0 To 59
  Case 60 To 69
  Case 70 To 79
  Case 80 To 100
657デフォルトの名無しさん:02/06/09 03:44
質問です。

動的配列が割り付けられているかどうかを判断するような方法はないでしょうか?
例えば、

Dim a() as Byte

といった場合、isArray(a)を使うと、割り付けられていなくても、Trueを返してしまいます。

Nullかな?と思ったけど、違いました。

一筋縄じゃいかないということなのでしょうか?
>657
VBはよく知らないが 
Dim a() as Byte で a は BYTE配列の属性となるので(多分)
isArray でなく配列の要素数を得るメソッド/プロパティが
あるんじゃないの?
659デフォルトの名無しさん:02/06/09 07:55
>>657
UBound+エラーで判定。
660657:02/06/09 10:47
>>659
なんかすっきりしないけど、それしかないのでしょうね。
う〜〜ん・・・。
661即レス ◆POP.SOKU :02/06/09 10:53
>>660
SafeArrayGetDim。(未確認)

>>641のリンク先にソースがあったよ。
662デフォルトの名無しさん :02/06/09 11:26
Inetコントロールについてっす。

今、cgiを使ったHPの結果として次のようなアドレスを持つHPが表示されたとします。
http://www.aaa.co.jp/cgi-bin/bbb.cgi?ccc=ddd&eee=fff&ggg=hhh

この操作をInetコントロールで実現しようとした場合、

Inet.Execeute "http://www.aaa.co.jp/cgi-bin/bbb.cgi",POST,"ccc=ddd&eee=fff&ggg=hhh"
をして、
Inet1_StateChangedのicResponseCompletedのあとに
GetChunkをやればいいようですが、どうもうまくいきません。

自分としては、POSTの後の引数の&が引っかかるのですが、解決方法が分かりません。

むずかしい・・・

663631:02/06/09 11:38
結果報告。
VBをアンインストールして、
その後インストールして試しました。
結局、カーソルの表示がされないままでした。
次のOS再セットアップまで、我慢して使うことにします。
>>660
即レスさんのSafeArrayGetDimでやったことあるけど、
UBoundをエラートラップするのが一番シンプル。
665625:02/06/09 16:11
前にソートのことで質問した者です。

何種類かのソートを書いて実行時間をはかりたいんですが、
時間をはかる関数は

start = 今の時間
ソートする
end = 今の時間
end - start を返す

という流れになるので、何ソートなのかは関係ないですよね?
こういうのもイベントを使って処理するのですか?

いまは、各ソート関数毎に上のような処理があってきれいでないです。
666_:02/06/09 16:18
PopupMenuについて質問です。
Form1上では Popupmenu メニュー名 でちゃんとポップアップメニューが出るんですが
Form2(vbModal付きで呼び出した)で同じようにPopupを出そうとしても
なぜかメニューが表示されません。
Form1、Form2では別々にメニューを作って
表示させない(VisibleをFlase)ようにしてそのメニューをPopupMenuで
呼び出しているのですが・・・。

こういうものなのでしょうか。それとも本当はこれで出来るはずなのでしょうか。
もしこれではうまくいかないはずなら、対処法を教えていただきたいです。
>>665
1.Sortメソッドを持ったインターフェースなんかを作っておいて、
各ソートはそのインタフェースを実装したクラスにする。
2.Collectionにあらかじめそれらのソートを登録しておく。

Dim sorter As ISort
Dim sortCollection As Collection

For Each sorter In sortCollection
  データ用意
start = 今の時間
sorter.Sort(引数)
end = 今の時間
end - start を返す
Next
とかどう?
668_:02/06/09 16:48
すみません。ShellExecuteをつかってファイルを開くことをやっているのですが
これだと関連付けされていないファイルだと何も起こりませんよね。
そこで
関連づけされているかされていないかを調べたいのです。
もちろんVBのコード上から(w どうやればいいのでしょうか。

VB6です。
669688:02/06/09 16:49
age忘れた・・・
670625:02/06/09 17:11
>>665
一度にすべてのソートの実行時間をはかるのではなく

「バブルソート」ボタンでバブルソートをして時間をはかり表示
「クイックソート」ボタンでバブルソートをして時間をはかり表示

という風にしたいんです。

でも、教えてくれた方法をちょっと変えて
ISortが
public sub Sort(target() as long)

ISortをimplementsした各ソートクラスをつくり

時間をはかる関数の引数を
public sub getSortTime(target() as long, sorter as ISort)
として
呼び出すときに
Call getSortTime(myarray, new BubbleSort)

Call getSortTime(myarray, new InsertionSort)
とするようにしてみました。

ありがとうございました。
671625:02/06/09 17:20
>「クイックソート」ボタンでバブルソート
「クイックソート」ボタンでクイックソート
です。
672_:02/06/09 18:01
ファイルをリネームしたいんですけど
何か簡単な方法があるのでしょうか。
コピーしてから元を削除、とか危険っぽいのでやりたくないのですが。
673デフォルトの名無しさん:02/06/09 18:15
>>668
ならFindExecutableで分岐すべし。
674即レス ◆POP.SOKU :02/06/09 18:22
>>672
Name oldpathname As newpathname
675コー:02/06/09 19:36
昨日の夜からVBはじめた中2のコーです。

すっごい初心者の質問ですみませんが、簡単に書きますと、

Sub Command1_Click()
Message "Command1"
End Sub

Sub Command2_Click()
Message "Command2"
End Sub

Sub Command3_Click()
Message "Command3"
End Sub

……
のようにCommandボタンが50個ほどあって処理はすべて同じなのですが、
こういう場合はどうしたら簡単にまとめられるのでしょうか。
Command1〜Command50のコマンドボタンのうち、どのボタンが押されたかという
条件をつくればいいのでしょうか(やり方がわかりませんが…)。
それとも上記のように、サブプロシージャを50個用意しなければいけませんか?
お手数ですが、教えていただければ助かります。
>>675
コントロール配列を調べれ。
677糞レス ◆9lhU6w7. :02/06/09 19:46
Messageとはなんぞや???
678_:02/06/09 19:54
Msgbox とやりたいんだろ・・・。
679デフォルトの名無しさん:02/06/09 19:59
すみません、他のアプリケーションで表示させるためにMassageと使っています。
他の アプリケーション で 表示 させる ため 

・・・?
681コー:02/06/09 20:11
えと、htmlにvbsを埋め込んでCommand1というボタンの画像が押されたら
アプリケーション側でそのボタンが押されたというメッセージを表示するという
スクリプトを作っています。
Massageを使うと、アプリケーションログに表示されるのでアプリケーション側で
用意されているものでした。

上記の例ではMsgboxで書けばよかったですね。混乱させてすみません…。
682 :02/06/09 22:12
ほとんどのコントロールにある Tag プロパティは、どのような用途に使うのがベストでしょうか。
そのコントロールと全く関係無い「情報の置き場所」として使うのはやはり邪道ですか?
683即レス ◆ok/f5F1o :02/06/09 22:52
そんな
ことは
ない
>>682
Tag は訳すと「札」
札にはお経を書こうが、値段を書こうが、名前を書こうがなんでもいい。
なのでTagには何を書いても(・∀・)イイ!と思われる。
だから「何がベスト?」と言われても答えれん。
685デフォルトの名無しさん:02/06/09 23:07
>>662
URLエンコードしてみたら?
Tagプロパティという存在がある意味邪道だから、
何を入れてもOK。
687682:02/06/09 23:37
ありがとうございました。
何に使ってもいいけど、濫用は禁物ってとこですかね。
(´-`).。oO(……誰も濫用は禁物なんて書いてないと思うんだが……)
689デフォルトの名無しさん :02/06/10 01:47
>>685
ん?
URLエンコード???
どうするんですか?
690 :02/06/10 02:05
>>675
どこかにCommandとかいうコマンドボタンおいといて
Private Sub Form1_Load()

Dim I As Long

For I=1 To 50

Load Command(I)
Command(I).Vislba=True

Next I

End Sub

Private Sub Command_Click(I As Integer)

Msgbox "Command" & I

End Sub

Command(1)から(50)までは同じ座標に出されるので注意。
>>682
そのうちわかる。
693デフォルトの名無しさん:02/06/10 16:43
質問です。

DataReportを使ってACCESS2000(MDB)からのレコードを抽出したいのですがどうしてもうまく行きません。

ソースはこんな感じです。
特にバグは出ないのですが、最後の一個(一行)しか表示してくれません。

ListBoxで選択された物(No)をレポート表示すると言う物です。
-----------こんな感じのソース--------------
Private Sub sql_module()
  For n = 0 To List1(Klist).ListCount - 1
  If List1(Klist).Selected(n) Then
    List6.AddItem List1(Klist).List(n)
    Add1 = List1(Klist).List(n)

  K_sql = "SELECT * FROM 製造受付表 WHERE No='" & Add1 & "'"
  Set K_Connect = CreateObject("ADODB.Connection")
  K_Connect.ConnectionString = K_PROVIDER
  K_Connect.Open

  Set K_recordset = New ADODB.Recordset
  K_recordset.Open K_sql, K_Connect

  ' レコードセットを取得する
  Set K_recordset = K_Connect.Execute(K_sql)

  Set DataRep3.DataSource = K_recordset
  With DataRep1.Sections("Section1")
    .Controls("Text1").DataField = "日時"
    .Controls("Text6").DataField = "No"
  End With
  End If
  Next n
  DataRep1.show
End Sub
---------------------------------------
694コー:02/06/10 16:44
>>691さんありがとうございます。

どうも、htmlに埋め込んだVBSではできないようです…。
ちょっと先の例だと、VBになってしまうのでもういちど書きますと、

html上でボタンの画像を50個配置します。それぞれの名前をCommand1、Command2、… Command50にします。
このボタンのいずれかが押されたときにそのコマンドの名前を取得したいのです。

Sub Command1_OnClick
Msgbox "Command1"
End Sub

Sub Command2_OnClick
Msgbox "Command2"
End Sub

単純にこの方法ならわかるのですが、VBSで「Sub Command2_OnClick」の「2」をコントロール配列の
要素番号のように区別する方法がわかりません。
htmlの画像にはどうもVBのように配列要素の番号はつかないためどのようにすればいいのでしょうか…。
695ちぃこ:02/06/10 18:38
INIファイルから情報を取り出そうとして、
GetPrivateProfileString Lib "kernel32"
というAPIを使ってみたんですが、
予想される文字列の長さよりもあらかじめ長いバッファを取っておくために、
帰ってくる文字列は後ろに・・・みたいなのがくっついてきます。

これをきちんととるにはどうすればいいんでしょうか?
696ちぃこ:02/06/10 19:12
Text1.Text を通すと後ろのゴミが切り取られるようなので、
とりあえずそれにしておきました。
>>696
それ以外の方法確認してない
698ちぃこ:02/06/10 19:53
strValue = Left(strbuf, InStr(strbuf, vbNullChar) - 1)

これがよかった。
699_:02/06/11 00:26
構造体の質問なんですが。
type aaa
Name As String
Flag As Long
Size As Long
end type
dim wka as aaa
・・・とかって宣言した変数の値を、配列に時みたいに記述して取得する方法ってありますか?
 たとえば、「Size」の値を取得したいとき、「wka(1)」とかって書きたいんですけど。

 バージョンは、VB6SP5で OSはWIN2000SP2です。おねがいします
 
700ごみレス ◆WuzDVM0M :02/06/11 00:37
>>699
無理じゃないかな・・・。わからんけど。
どんなメリットがあるんだろ?
701_:02/06/11 01:21
>>700

 固定長のテキストを読み込む処理なんですが、レイアウトが8種類ほどあるんです。扱うデータは同じなんですが、、、
 
 実際には、、、
type aaa
  Name As String(10)
  Flag As String(2)
  Size As String(10)
end type
type bbb
  Name As String(12)
  Flag As String(4)
  Size As String(8)
end type
 という構造体を用意して、Getでそれぞれに読み込んで使用してるのです。
 で、読み込んだ値を参照するときに、今は、
dim wka as aaa
dim wkb as bbb
sub subuu(kubun as integer)
dim NameDisp as string
  select case kubun
    case 1
      NameDisp = wka.Name
    case 2
      NameDisp = wkb.Name
  end select
end sub
と書いているんですが、レイアウトの種類が今後さらに増えた時に対処が
このままだと大変かなかなぁと思ったもので、、、

type aaabbb
  wka as aaa
  wkb as bbb
end type
という構造体を追加して、
dim wkab as aaabbb
sub subuu(kubun as integer)
dim NameDisp as string
  NameDisp = wkab(kubun).Name
end sub
と記述できないかと思ったわけでした。

ありがとうございましたです。
702699:02/06/11 01:30

 ちなみに、すなおに構造体の変数を配列に入れようとすると、
 「パブリックオブジェクトモジュールで定義されたユーザー定義型に限り、変数に割り当てることができ、
実効時バインディングの関数に渡すことができます。」っていうコンパイルエラーになりますよね。
 
>>701
Name Flag Size という名称は、変わらないわけね。
面白いアイデアだけど、8種類レイアウトがあるという仕様がアフォ。
704699:02/06/11 02:39
>>703

 まぁ、ふつうこんな仕様にはしないですよね・・・
 でも、1999年のデータから、年のフィールドが4バイトになっているあたりは、
しょうがないかぁ、と思って書いてたりしてますです。
705デフォルトの名無しさん:02/06/11 05:54
皆さん、木構造を作るときはどうされてるんでしょうか?
ポインタ無しだと、配列でやるしかないですよね。一応VB6です。
>>705
ポインタが無い代りに参照がある。
>>701
いまいち内容を理解していない気がするが、

共通の構造体を作って、
type kyotu
 Name As String
 Flag As String
 Size As String
end type

読み込んだ値を参照するときに、それぞれの構造体から見るんじゃなく、
共通構造体への代入関数をレイアウトごとに作って、最初に共通構造体
に入れておけばいいんじゃないの?
音量をコントロールしたいのですが、
簡単なやり方を教えてください。
709デフォルトの名無しさん:02/06/11 11:20
msiでインストールした任意のアプリケーションのフォルダを、
VBアプリから検索するにはどうすればいいんですか?
>>709
おやすみなさい。
>>708
キャプションに「音量コントロール」と書かれたボタンをフォームに貼り、
ボタンが押されたら「ボリュームのつまみを回して音量を調節してくだい」と
メッセージボックスを出す。
712デフォルトの名無しさん:02/06/11 13:26
>>708
耳に両手をあて、
音量を小さくしたいときは密着させるように、
大きくしたいときは離すようにする。
フィルター効果で特定の周波数域をカットする効果もあるので一石二鳥。
713デフォルトの名無しさん:02/06/11 13:26
>>710
あら?もう寝ちゃうの?
おやすみなさ〜い♪
714デフォルトの名無しさん:02/06/11 14:48
UNIXにはgettimeofdayというUNIX 時間を求める関数があるのですが、
同じ機能を持つ関数はVBにありますか?
1970年1月1日0時0分0秒からの経過時間ということはわかっているので
TimeとDateを使って自前で計算するしかないでしょうか?
>>714
そだね。
>>715
わかりました。
GetSystemTime APIも視野に入れてみるか…
どうもです。
717デフォルトの名無しさん:02/06/11 17:17
VBから、cabファイルを解凍しよと思い、

Public Declare Function ExtractFileFromCab Lib "vb6stkit.dll" (ByVal Cab As String, ByVal File As String, ByVal Dest As String, ByVal iCab As Long, ByVal sSrc As String) As Long

というのを使うことにしました。
ところが、引数に何を入れればいいかよくわからず、
いろいろ試してみましたがうまくいきません。

どうしたらよいのでしょうか?
718717:02/06/11 18:35
結局わからなかったので、CAB32.DLL の方にしました。
こちらの方はweb上に参考になるのがたくさんあったので。
719おねがいします:02/06/11 19:29
VBでコマンドプロンプトを操作することは可能ですか?
例えばボタンを押したらコマンドプロンプトのDIRを実行するとか、
すごく簡単なことかもしれませんがお願いします。
>>719
Shellで
cmd /k dir
を実行すればいいんじゃなかろか。
>>701まったく意味不明だ。
設計が間違ってると思うとかそういうのはおいといて・・・
というかコンパイルより前に文法的にそのコードは通らないと思うが。
722デフォルトの名無しさん:02/06/11 20:33
formにwebbrowserコントロールを追加して起動時に同じディレクトリにある
index.htmlを表示させたいのですが、実行するとファイルの一覧が表示されるだけ
になってしまいます。どうやったらindex.htmlを表示できるでしょうか?
コードはこう書きました。
Private Sub Form_Load()
WebBrowser1.Navigate App.Path
End Sub
10 rem
20 dim a(20),b(20)
30 for i=i to 20
以下略

で数値をいくつか入力するとその数字と順位が表示
されるようにしたのですが平均値も表示するには
どうしたら良いのですか?
724722:02/06/11 20:53
WebBrowser1.Navigate App.Path & "/index.html"
にしたら解決しました。
725723:02/06/11 20:57
スレッド間違えました
726デフォルトの名無しさん:02/06/11 21:06
>>714-716
VBにはDateDiffっつうチョー便利な関数があるですよ。
俺も昔はこの関数の存在を知らないでDateとTimeで計算してた。カコワルイ。
727デフォルトの名無しさん:02/06/11 23:04
>>723
合計して、データ個数で割る。
728 :02/06/12 09:47
>>723
平均値を計算して表示するといいよ
729厨房です:02/06/12 12:42
VB6のランタイムセットをインストールしようとすると
not found になります
過去すれ見ても乗ってません
誰か教えてください
ちなみにXPです
>>729
PC初心者
http://pc.2ch.net/pcqa/

相手してやるから来い。
731VB初心者:02/06/12 15:05
お聞きしたいのですが、
CreateMenu
CreatePopupMenu
AppendMenu
上記の3つのAPIを利用してメニューを動的に生成する関数を作ったのですが、
ショートカットの割り当て方がわからないのです。
最上位階層メニューのキャプション名に"メニュー1(&h)"と言う風に指定すると確かに
ALT+h でショートカット起動できるのですが、下の階層のメニューを起動しようとしても
できないのです。
メニューエディタではショートカットを選べ Ctrl+A と言う風に指定できるのですが、
その設定はメニューのどのプロパティを指定すればいいかわかる方おられましたら
お教え下さい。
よろしくお願いします。

732デフォルトの名無しさん:02/06/12 16:00
WIN2000上で、vb上からワークフォルダを作成して、
その後rmdirなどで削除しようとしても削除できません。
そのvbアプリ起動中は、時手動でも削除できなくなってます。

削除するにはどうすればいいですか?
>>732
ファイル開いて閉じてない。
中にファイルが残ってる。
なんで削除の時だけ外部コマンドやねん。
734732:02/06/12 16:18
>>733
当然中のファイルは
kill Path & "*.*"
ですべて消してからの出来事です。

RemoveDirectory でもだめでした。

アプリでフォルダをつかんでるためだと想われるんですが、
どうやって解放すればよいかわかりません。
735732:02/06/12 16:44
らっきー♪
解決しました。
736731:02/06/12 19:34
731ですが、C++プログラマに聞いてみたところ
LoadAccelerators
というAPIを使うとメニューにショートカットが追加できるみたいです。
でも、このAPIはVBから呼べるのでしょうか?
お知りの方おられましたらお願いいたします。
>>736
VBから呼べないAPiってあんまり無いと思われ。
取りあえず聞く前にAPIビューアで登録して試して見なされ。
738デフォルトの名無しさん:02/06/12 20:39
一昨日から始めました。
試しに電卓作ることにしました。
8進も16進もあるのに
どうして2進変換だけ標準関数にないんですか・・・?
なんとか作れましたが無駄な労力を使った気がして納得行きません・・
>>738
滅多に使わないもんって言うのが理由泣きがします。
740木村 キタキタマシーン:02/06/12 21:04
>>738
作者がアルゴリズムを思いつかなかったからです
>>729
not foundってなんじゃい。何が見つからないのかわからんじゃないか。
Path Or File Not Foundじゃないのか?
だったらFAQだ。

>>738
HexやOctは旧時代のBASICからあるからね。
マシン語を普通に直打ちしてた時代からな。
742名無しさん@ヒラ社員:02/06/12 22:14
こんにちは!
2つほど質問させてください!
1、F1キーを押してもいないのに押した状態にするにはどうしたらいいでしょうか?
2、ExitWindowsEx(API)でWindowsXPを終了させようとしているのですが、「電源を切れる状態になりました」になってしまい、電源がおちません。これはなんとかならないのですか?
>742 1.
ハンドル取得して、SENDMESSAGEではいかが。
あれ・・・んっ?まさか、物理的にF1キーが自然に沈む状態を希望してるのかっ。
744木村 キタキタマシーン:02/06/12 22:44
>>742
2.OSにタスクを返せばヨシ!
Sleep()使ってミソ
>まさか、物理的にF1キーが自然に沈む状態を希望してるのかっ。
不覚にもワラタ
746デフォルトの名無しさん:02/06/12 23:14
1.のやり方(関数)の説明
http://www68.dns.ne.jp/~bbs2/upload3/helen/OB00014094.jpg
747名無しさん@ヒラ社員:02/06/13 00:01
>743
ハンドル取得して、SENDMESSAGE
ごめんなさい、ネットでしらべてはみたんですが、その辺の情報が見当たらなかったのでよろしければもうすこし詳しく書いていただけませんか?
>744
Sleep()って関数ないみたいなんですが・・・
>>742
(回答1)
1.セロハンテープ(超極薄)で微妙に固定。
2.コンセントを抜く。
------------------
(回答2)
1. keybd_eventかSendInput関数でどうだろう。
2. 権限ある?EWX_POWEROFFを指定してる?
http://www.bcap.co.jp/hanafusa/VBHLP/tap_winEnd.htm

>>744の意図は知らんが、
SleepはAPI関数だぞ。>>747
749えーさく:02/06/13 06:40
質問ですVB上からアクロバットを起動させるプログラムを作りたいんですが
そのためにインストールしてあるパスを取得させたいんです。

アクロバットの場合VerごとにEXEまでのパスが違くなってしまうので、
何処にインストールされても起動できるようにRegOpenKey関数を使ってみたんですが
これだと最初に"\\パス\ファイル名.pdf"の形で渡してやらなければインストールパスを
返して貰えず必要の無いダミーのPDFファイルを用意することになってしまい
よろしくなさそうです。

どなたか良い方法があればアドバイスお願いします。
>>749
VBは知らないが、Win32API で直接レジストリから引っ張ってくればよい。
>>749
オチの予測 RegOpenKeyをファイルをオープンする関数だと思っている。
752えーさく:02/06/13 07:41
だぁーすいません
使っていたのはこっちの関数です。
FindExecutable()

RegOpenKey関数は使ってませんでした。
753 :02/06/13 07:42
数値データをテキストで保存する方法教えてください。
読み出す方法も教えてください。
>>753
プログラマやめろ。日曜でもそうじゃなくても。
755 :02/06/13 08:44
>>754
プログラマではなく高校生です。
>>755
じゃ高校中退して、何か体を動かす仕事でもしなさい。
757デフォルトの名無しさん:02/06/13 09:47
>>753
openでファイル開いてputで書き込んでcloseでファイルを閉じる
読むときはgetで読み込む
ガッコいけよ、、、
>>754
なんでここはそういうヤシが多いんだ。
純粋に勉強始めたばっかかもしれんだろうが。
君にだって最初はあったはず。
最初にそういうころはあった。当然あった。誰にでもあった。
でも、そんな基本的なことはそこらへんに情報が腐るほど転がってる。
それを自分で調べることは当たり前。
でも、いきなり聞いてきた。
だから叩かれた。
それを理解しないとネ。
まぁ、言い方きつすぎるとは思うけど。
760デフォルトの名無しさん:02/06/13 12:42
引数に、ロングファイルネームを使うにはどうしたら良いか分かりません。
調べる手がかりだけでもいいので教えてください。お願いします。


Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "xxxx aaaa"

という感じで、xxxx aaaaの部分をロングファイルネームで書きたいのです。
761760:02/06/13 12:49
WshShell.Run """xxxx"" ""aaaa"""

で動きました。お騒がせしました。
>>760
問題を分けるために、
1) c:\temp\aaaaaaaaaaa.exe みたいな簡単フォルダ名+ロングファイル名で試す
2) c:\a b\a.exe みたいな間にブランクをはさんだフォルダ名で試す
で試してみるといいかもしれん。
763デフォルトの名無しさん:02/06/13 14:44
Windows で、検索を行っている時などにでる、
虫めがねがくるくるしているやつを利用したいんですが、
Visual Studio のどっかにあるんですか?
>>763
検索の時に出てくるのはShel32.dllのカスタムリソース"AVI"の151だな。
Shel32.dllじゃなくてShell32.dllだ。
766763:02/06/13 15:37
>>765
丁寧な解説ありがとうございます。
でも取り出しかたがわかりませんです。
767764:02/06/13 15:58
>>766
Win32APIでやるならLoadLibraryしてGetProcAddressだがVBは知らん。スマソ
ついでに>>764の情報はWin 98での場合だ。NTとかはもしかすると違うかもしれないが
手元にNTマシンがないから未調査。
>>767
APIビューアで宣言探してきてソースにコピー。
769 :02/06/13 16:41
>>757
ありがとうございました
>>763
C:\Program Files\Microsoft Visual Studio\Common\Graphics\Videos
に似たようなのがあったが、これじゃだめ?
771デフォルトの名無しさん:02/06/13 17:27
コントロール配列を使ってるんですが、
特定のindexのコントロールが存在するかどうかを判定するにはどうすればいいでしょうか。
エラートラップするしかないですか?
>>771
ループって言う便利な構文がある。
773771:02/06/13 17:29
うお、めちゃめちゃレス早いですね。
ループは当然回します。
そのループの中で、そのindexが使われてるかどうかを知りたいわけです。
774  :02/06/13 17:30
変数の前にたまについてる$ってなに?
>>774
文字列。
>>773
もしある値のindexがあれば

条件分岐と言う便利な構文がある。
777デフォルトの名無しさん:02/06/13 17:36
>>770
ありがとうございます。
私のは、
Common以下にそのようなフォルダがありませんでした。
インストールされてなかったのかな。
778デフォルトの名無しさん:02/06/13 17:37
>>776
用はそのコードが知りたかったわけです。
存在しないindexのコントロール配列のプロパティをいじっちゃうとエラー出るので。
779デフォルトの名無しさん:02/06/13 17:40
「知りたかった」
じゃなくて
「知りたい」
か、まだ分からない。

For i=0 to command1.count
 if iのindexあったら then
  command1(i).caption="なんか"
 end if
next i

ってしたいわけです。
ifのぶぶんの、”iのindexあったら”って部分の書き方がわからんのです。
780デフォルトの名無しさん:02/06/13 17:40
>>778
でもコントロール配列はデザイン上で自分で決めるから、
実行中に変更されることはないだろ。
>>779
For i=0 to command1.count - 1

この範囲のインスタンスは保証されてないか?
>>780
Load コントロール名(index)
ってやると動的に生成されますが何か?
783デフォルトの名無しさん:02/06/13 17:45
ユーザーが動的にスキなindexのコントロールをunloadしたりloadしたりできるんです。
だから123があって4がなくて5があって6がなくて78があるとか、バラバラで。
784デフォルトの名無しさん:02/06/13 17:47
>>779
それをやるなら、

For i=0 to command1.UBound

だよ。
785即レス ◆ok/f5F1o :02/06/13 17:47
>>783
その情報をプログラム内で管理しとけばいいだけのことじゃないのか?
786デフォルトの名無しさん:02/06/13 17:50
>>785
ええ、そうやってるんです。今は。
だから知的好奇心で聞いてるだけです。
「そのindexが使われてるか知ることができるのかなー?」って
わざわざ自分でユーザーのunloadやloadを管理しなくても、
if文一発で使われてるかわからんかなー?と。
Dim cmd As CommandButton
For Each cmd In Command1
Debug.Print cmd.Index
Next cmd
788デフォルトの名無しさん:02/06/13 17:54
エラートラップした関数を用意すれば一発だ。
789771:02/06/13 17:58
うーん、やっぱり簡単な方法はないみたいですね。
色々参考になりました。
ありがとうございました。
790デフォルトの名無しさん:02/06/13 17:59
行き詰まり中です。
Win2000の環境で、LAN接続状態をVBでひろいたいのですが
何か良いAPIとかないですか。
なにか良い方法があればご教授キボンヌ。
791デフォルトの名無しさん:02/06/13 18:04
790ですが。ホントにすんまぞん。API板に逝ってきます。
792791:02/06/13 18:06
APIスレ、でした。鬱
793デフォルトの名無しさん:02/06/13 18:17
>>789
こういう関数用意すれば IF 文で一発だよ。

Private Function isExists(obj As Object) As Boolean
On Error GoTo M_Error

Dim lngRet As Long

lngRet = obj.TabIndex
isExists = True

M_Error:
End Function
794711:02/06/13 18:22
>>793
今私もちょうどそんな関数を作ってみたところでした。
↓こんな感じで。

Function ExistenceIndex(CheckObject As Object, Index As Integer) As Boolean
On Error GoTo err

dim temp
temp=CheckObject(Index).tag
ExistenceIndex = True
Exit Function
err:
ExistenceIndex = False
End Function
795787:02/06/13 18:37
Private Function IsExsist(ByVal obj As Object, ByVal index As Long) As Boolean
Dim o As Object
For Each o In obj
If o.index = index Then
IsExsist = True
Exit Function
End If
Next o
IsExsist = False
End Function
どっちの方が早いんだろうね。
エラートラップ方式と>>795方式。
俺は試す気ねーけど。
797793:02/06/13 18:50
>>795
はループ回数が多くなって遅そうだけど、
エラートラップも実は気に入らない。。
っていうか、それなら最初から、

Dim o As Object
For Each o In Command1
o.caption="なんか"
Next o

ってやるのが一番いいんじゃない?
798787:02/06/13 19:22
>>796
はぁ、そんなこと書くから試してしまったじゃねーか。
比較したのは>>794>>795のコード。
ただし>>794はTagがいやだったのでIndexに変更(もちtempの型もね)

Indexが存在する場合、ループの方がエラートラップ方式の最低で3倍かかる。
ループの方はIndex番号が大きければ大きいほど、時間が増える。
Indexが小さい順に取得されることが保証されているなら少しは改善できるけど。
エラートラップの方はIndex番号に関わらず一定。
ハッシュでも使ってるんだろうな。

Indexが存在しない場合、、ループの方がエラートラップ方式の3倍かかる。
Indexが存在する場合に比べてエラートラップ方式が極端に遅くなる。

まぁ、適当な測定なので信用しないでくれ。

ループ方式は遅いがエラートラップ方式は設定により停止することがあるからデバッグがしづらくなる。
俺のお勧めは、IDE実行時はループ方式、EXE実行時はエラートラップ方式に自動切換え。
799仕様書無しさん:02/06/13 20:16
唐突に質問。
VBから起動したExcel(名前はまだなし)を
プログラムで所定のフォルダに名前を付けて保存するには
どうすりゃいいの?
初心者につきコード希望です。
800デフォルトの名無しさん:02/06/13 20:31
>>799
http://www.bcap.co.jp/hanafusa/
ここにVBでエクセル扱う方法載ってるからみれ。
801仕様書無しさん:02/06/13 20:33
>>800
あんがと!
行ってくる。
どうもExcelとかWordとかの多いんだな
>>801
マ板で質問してた奴だね
教えてください

VBでソケットコントロールを使ってサーバプログラムをつくりたいんです
TCPで教えてください

手順1 sock.localport = 4545
手順2 sock.listen

これでホントにいいんですか?
バインドがないようなきがします。

ちょっと手順おしえてください
           ∧ ∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
         ∩( ゚Д゚)∩ < あげ
         //  ̄ ̄ | |  \________
        //       | |
        | |     //
        | |      //
        | | __ //
        \     |
          |    |
          |    /
         /    /
          |   /
        ∫|  | |
         | || |
          | / | |
         // | |
        //  | |
       //   | |
         ∩       ∩       ∩       ∩
         //       | |        | |     //
        //        | |        | |     //
        | |      //        | |   //
        | | ∧ ∧ // / ̄ ̄\  |ΛΛ//
        | |( ゚Д゚)// <  あげ  > |('∀`)/
        \     |   \__/   ( : )
          |    |          ( : )
          |    /           ( : )
         /    /           ( : )
          |   /            ( : )
        ∫|  | |     
>>758
少なくとも俺は基本は本で学んだ。
今はWebと言うすばらしいツールがあるにもかかわらずこんな所で質問する始末。
自分で調べて考えられない奴にプログラマとしての未来はない。
808ごみレス ◆WuzDVM0M :02/06/14 00:10
bindはudpと思われる。
それでよいと思われる。
|
|⌒彡
|冫、)  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|` / < BINDは複数のセッション管理で使用するのか?
| /   \_________________
|/
|


|
|  サッ
|)彡
|
|
|
>>808
どうも
WINSOCKコントロールを使うなら2つはりつけてね。
812  :02/06/14 07:45
Open "sample.txt" For Output As #1

↑この#1ってなに?
>>812
ファイル番号。ファイルポインタのようなもの。
814  :02/06/14 08:07
>>813
ありがとうございました。
815デフォルトの名無しさん:02/06/14 09:14
VB6の質問
If 1 = "0001" Then
この場合式は True で問題ないようなのだが
文字列は Clng("0001") みたいに数値に変換しとくほうがいいの?
>815
俺ならする
コーディングした者の意図を明確にするためにも、やっておくべきだと思う.
818おねがいします:02/06/14 11:01
以前シェルについてお聞きしたのですが例えば
Private Sub Command1_Click()
Shell "command.com /c dir /w", 1
End Sub
を実行するとコマンドプロンプトの画面は処理を実行してスグ消えてしまうのですが
この画面を消さないで残すことは出来ますか?

あと申し訳ないんですけど , 1 ってどういう意味を持っているのでしょうか?
819おねがいします:02/06/14 11:03
ごめんなさい。馬鹿をしました。
解決しました。
820デフォルトの名無しさん:02/06/14 11:05
質問です

文字列のなかから、特定の文字列が含まれるときにtrueを返す関数って
ないでしょうか?

たとえば、
str1="ようこそ2ちゃんねるへ"
str2="ようこそ15ちゃんねるへ"
str3="2ちゃん"

で、str1とstr3で比較するとtrue、
str2とstr3で比較するとfalseが返る感じです。

おながいします
821おねがいします:02/06/14 11:07
やはり勘違いでした。, 1はウインドウスタイルであって
画面を残す動作はしませんよね?
どうやったら画面は残るのでしょうか?
822デフォルトの名無しさん:02/06/14 11:27
vbアプリで、必要なocxやDLLが存在しない場合、プログラム自体が起動できませんが、
sub main 内などでocx,dllのチェックをし、任意のメッセージを出して終了するようなのは出来ないでしょうか?
>820
instr使って自作しる!
824815:02/06/14 12:27
>>816 >>817
ありがとう!今後はやることにするよ
825818:02/06/14 18:07
>>818なんですけど
やはりどこを探しても画面を残す方法は書いてないみたいです。
もしかして私の環境だけがそうなのでしょうか?(win2000 vb6)
出来るか出来ないのかだけでも教えて下さい。お願い致します。
>>825
win2kならcommandでなくcmdでもいいのかしらん?
cmdなら/kつうオプションがありますぜ。
827  :02/06/14 18:21
複数のポリゴンを動かしたとき
あるポリゴンとあるポリゴンが衝突した時にだけ
値を返すようなプログラムを作りたいのですが
どのような関数を使えばよいのでしょうか?
828ごみレス ◆WuzDVM0M :02/06/14 18:21
&pauseも
>>825
VBで2chブラウザを作ろうと思いテストプログラムを書きました。
でも、NotFound404になってしまします。
どこがだめでしょうか?

Option Explicit

Private Sub Command1_Click()

Screen.MousePointer = vbHourglass

Winsock1.RemoteHost = "pc.2ch.net"
Winsock1.RemotePort = 80
Winsock1.LocalPort = 0
Winsock1.Connect

End Sub

Private Sub Winsock1_Connect()

Winsock1.SendData "GET /mobile/dat/1020619860.dat HTTP/1.0" & vbCrLf
Winsock1.SendData "User-Agent: Monazilla/1.00 (test/0.01)" & vbCrLf
Winsock1.SendData vbCrLf

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim strData As String

Winsock1.GetData strData
Text1.Text = strData

Screen.MousePointer = vbDefault

End Sub
コントロールにちゃんと名前付けないような奴は何やったってダメだ。
831デフォルトの名無しさん:02/06/14 18:54
>>829
HTTP/1.0" & vbCrLf
ここの改行は、vbCrLf でいいの?
vbLF のみはどうかな?
832ごみレス ◆WuzDVM0M :02/06/14 19:12
2ch鯖の仕様ではないかと言ってみるテスト。
dat直読みはどうたらこうたら・・・。
833デフォルトの名無しさん:02/06/14 22:31
すみません。
VB6でFileCopyでファイルをコピーすると
ReadOnlyなどの属性が取れてしまうのですが
属性を保持したままファイルをコピーする方法って無いのでしょうか?
>>822
OCX(ActiveX)の場合は参照設定せずにCreateObject、Controls.Add等でインスタンスを作成する。
ActiveXでないDLLの場合は、使用時にエラーが出るからそれでどうこうする。
さすがに、VBアプリを起動するときに必要なVBランタイムのチェックはできんがな。
835ごみレス ◆WuzDVM0M :02/06/15 00:16
>>833
getattrで先に属性取っとくとか。
836833:02/06/15 00:20
>>835
レスありがとうございます。
やっぱりgetattrで取って、setattrで設定するしかないのですか・・・
数千ファイルもあると処理速度が心配・・・
>数千ファイルもあると処理速度が心配・・・
大した事無い。
838便乗質問:02/06/15 00:39
>>833
FileSystemObject だとどうなるの? と聞いてみる。

839833:02/06/15 01:05
>>838
早速、試してみました(笑)
FileSystemObject だと、属性は保持されるようです。
ただ、使い方が少し面倒そうなので、もう少し比較してから
どちらにするか決めたいと思います。

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

>>839
機能、エラー処理などなども考えるとFileSystemObjectの方が簡単だと思うが。
841デフォルトの名無しさん:02/06/15 01:22
http://henachoko.homeip.net/uploader/updata/20020615002526.jpg
です。JPGをrarにして解凍してください。
左のカイリとはキャラの種類です。
passは hellscaper iiiiIIIiiIi
の二つがあって、二回入力します。
それでiiiiIIIiiIiの方はダミーらしいです

シェアウェアじゃなく、作者が音信不通になってしまいました。
解析してくれませんか!
842ひよこ名無しさん:02/06/15 01:24
私、PCQAで回答者をやっておるものです。
この度はアフォな>>841がご迷惑をおかけしました。
こんなレベルの人間がネットをやるなんて言語道断。
見ているだけで吐き気がするとは思いますが、すぐに連れて帰りますので
どうかお許し下さい。申し訳ありません。
843841:02/06/15 01:25
VBで作られています。
ウィルスとかは無いようです。
成功すると
http://www.geocities.co.jp/AnimeComic-Ink/3009/aaa.jpg
のウィンドウみたいになるみたいです。
844841:02/06/15 01:29
だめですか?
845829:02/06/15 13:41
ヤター
取得できたYO-!
846デフォルトの名無しさん:02/06/15 14:14
質問なのですが、VB.NETで、テキストから入力した数値を初期値として
計算し、出力したいのですがどうすればいいのでしょうか?

入力する数値は、[0010]という風に頭に0がつく場合もあります。
そして、計算して表示するときに、[0020]という風に出したいのです。

Integerにすると前についている0がなくなってしまうので困っています。
>質問なのですが、VB.NETで、テキストから入力した数値を初期値として
>計算し、出力したいのですがどうすればいいのでしょうか?

意味不明。数値を入力してるのに何を計算すんねん。
(123 + 45←こういうのは式だ。)

>入力する数値は、[0010]という風に頭に0がつく場合もあります。

そういうのを数値と呼びません。数値とみなしたいなら0は省くのは当然。

>そして、計算して表示するときに、[0020]という風に出したいのです。

値まで変わってるがな。

> Integerにすると前についている0がなくなってしまうので困っています。
Stringで扱え。
848デフォルトの名無しさん:02/06/15 14:26
214 名前:213 :01/10/20 12:02 ID:fFGjQToc
先程お願いしましたが、まだ削除されていません
事実無根です
早急に削除して下さい
http://kaba.2ch.net/test/read.cgi/company/997171282/699

215 名前:削除屋三太郎 ★ :01/10/20 12:09 ID:???
>>213-214
http://www.2ch.net/guide/adv.html#saku_guideに
>法人・公的機関の取り扱い
>原則放置
> 法人・企業については、社会・出来事カテゴリ内では、批判・誹謗中傷、
>インターネット内で公開されている情報、インターネット外のデータソースが不明確なもの、は全て放置です。

とありますので、放置とさせていただきます。

260 : :01/10/23 10:54 ID:iMDesK4O

> 法人・企業については、社会・出来事カテゴリ内では、批判・誹謗中傷、
>インターネット内で公開されている情報、インターネット外のデータソースが不明確なもの、は全て放置です

おいおい、データソースが不明確だからこそ削除するんだろうが(苦笑
849デフォルトの名無しさん:02/06/15 16:28
>>847

単純に言ってしまえば、

0010 + 10 = 0020 としたいんです。

そのやり方がわからないということです。
>>849
Int32.Parse();
String.Format();
851即レス ◆POP.SOKU :02/06/15 16:30
>>849
Debug.Print format$(val("0010")+10,"0000")
これで分かる?
>>850
Int32.ToString()でもいいな。
バリアント型みたいな厨房型が存在するおかげで
>>846みたいなのが(以下略)
>>853
同意。
文字列と整数の区別が付いてないとなるとVBの高級さ故の弊害であると言うしかない。
855初心者:02/06/15 17:45
大変初心者な質問で申し訳ないのですが、
False は何と読むのですか?
「ファルス」「フォルス」どちら?
>>855
フォー留守。
>>853 >>854
型あり言語しかつかったことがない厨房
>>857
Perl、Javascript etcetc...。使えますが?お馬鹿さん。
>>858
それなら、バリアント型がけして厨房型ではなくて文字列と整数の区別が
ついていないのはVBのせいではなく単に初心者だからってのがわかるだろ。
>>859
VBそのような勘違いを招くため入門用言語とするのは間違いです。
VBは初心者を潰します。まる。
ここって.NETもOK?
>>855
あ、同じような悩みを持つ人ハケーン
目上の人が「ファルスファルス」言ってるから、
いまさら俺も「フォルス」と言えず、その人と話す時は「Trueでない」と言ってます。
863デフォルトの名無しさん:02/06/15 19:19
なんでForm_Unloadの引数にCancelがあるの?
QueryUnloadで十分だし、そのほうがいいと思うんだけど。
UnloadのCancelになんか使い道ある?
>>860
うむ、賛成。
ついでにPerlやJavaScriptなんかも初心者はやめたほうがいい。
>>864
Perl、JavaScript:特定の問題を解決するための言語。それには方という概念が本質的でなかった。
VB:型が必要にも関わらず(APIを使う以上)関わらずVariantなどという謎の型が生きている。
>>865
ププッ。がんばってるなぁ。APIを使うから型が必要か。
Variantは値型、参照型両方入れられる基本型とでも考えてみたら。
867866:02/06/15 20:03
× 基本型
○ 基本クラス
ようするにObject型(Javaにもあるね)のようなものだ。
868デフォルトの名無しさん:02/06/15 20:59
>>850-852

851さんの方法でできました。
ありがとうございます。

ただそれだと、0000の場合しか対応できないので、lenで文字列の長さを調べて
0で埋めたいのですがどういった関数を使えばいいのでしょうか?
>868
気前よく15個くらい0を足しといてから、Rightで必要な分だけ切り出す。
無駄なのがイヤだったらString$。
>>861
OK

>>865
Variant型は複数の型の変数を持った構造体みたいなもんだ。
PHPの変数と同じだな。
>Variantなどという謎の型が生きている。
Variantを有効に使えてないへたれと判明。

>>868
String関数で指定の文字を任意の長さだけ繰り返したの文字列を作成
Right関数で任意桁だけ取り出す。
文字列関数を一通り調べてみ。
871デフォルトの名無しさん:02/06/15 21:40
>>869-870

ふむふむ
.NETだとString$が使えないです。
「キーワードに型文字を使うことはできません。」とでてしまいます。

Format$(10, String$(Len(StartNum.Text),"0"))
こんな風になると思ったのですが・・・。
Stringの代わりになる関数が見あたらないし(T_T)
どうしたらいいのでしょう??
872ごみレス ◆WuzDVM0M :02/06/15 21:51
.ToString
873ごみレス ◆WuzDVM0M :02/06/15 21:56
↑関係ない
874ごみレス ◆WuzDVM0M :02/06/15 22:03
strdupとかどうよ?
ms-help://MS.VSCC/MS.MSDNVS.1041/vblr7/html/valrfStrDupFunction.htm
>>870
共用体って知ってるか?ブビ厨。
876VB初心者:02/06/15 22:40
質問です。
Image コントロールの Stretch プロパティを True にして、
ロードした画像を拡大・縮小した際、その画像をファイルに保存したり
他のコントロールの Picture プロパティに割り当てたりすることは可能ですか?
要は拡大・縮小後の画像を利用したいのです。
よろしくお願いします。
877デフォルトの名無しさん:02/06/15 23:04
>>876
そういう時は、PictureBoxコントロールでPaintPictureメソッドを使う。
878デフォルトの名無しさん:02/06/15 23:21
>>874

使ってみたらできました。
ありがとうございます。

みなさんどうやって調べてるのかな?
検索する文字が悪いから見つからないのかなぁ。
うむむ
879876:02/06/15 23:40
>>877
回答ありがとうございます。
さっそく試してみましたが、うまくいきません。

イメージコントロール imgDummy に画像がロードしてあり、
Stretch = True で、マウスドラッグにより自由に拡大・縮小できるようにしてあります。
これを ピクチャーボックス picMain にそのまま移したいのですが、

picMain.PaintPicture imgDummy.Picture, _
0, _
0, _
imgDummy.Width, _
imgDummy.Height, _
0, _
0, _
imgDummy.Width, _
imgDummy.Height

これを実行すると元サイズの画像が転送されてしまいます。

フォームと picMain の ScaleMode はピクセルにしてあります。
picMain の AutoSize は False です。

たびたび申し訳ないです。
よろしくお願いします。

880863:02/06/16 00:03
>>863です。
結局、UnloadのCancelには使い道が無いっていうことでいいの?
881876:02/06/16 00:05
876です。
すいません。出来ました。
>879 の書き込みは無視して結構です。
失礼しました。
882870:02/06/16 02:05
>>871
すまそ。.NETでの話しだったな、そういえば。
じゃあString関数じゃなくてStringクラスの
コンストラクタ(Char, Integer)のやつでどうぞ。
あるいは、String関数にこだわるなら、StrDup関数になってるよ。・・・って874で回答ついてた(汗
Right関数は引き続き使える。StringクラスのSubstringメソッドでもOK。

>>878
.NET Framework SDK
 - リファレンス
   - コンパイラおよび言語リファレンス
    - Visual Basic
以下のドキュメントくらいざっと目を通した方よいと思われ。

>>875
>共用体って知ってるか?ブビ厨。

知ってるよ。実装から言えば、確かに構造体じゃなく共用体だ。すまそ。

といっても、イメージの問題だからさ、
「複数の型を持つ構造体のようなもの・・・」でいいじゃん。

せっかく「PHPの変数と同じだな。」と書いたことだし、
スレ違いだが、PHPでの変数の実装を紹介しとく。
http://cvs.php.net/co.php/php3/php.h?r=1.70&Horde=9690b933cf7eb309485752989e00b398
で構造体の_pval_structや共用体のpvalue_valueをご覧あれ。


883デフォルトの名無しさん:02/06/16 02:30
VB5 CCEはもうダウンロードできないのでしょうか。
VBを始めたいのですが、高いので・・・。
やっぱり、体験版のついた参考書を買うしかないのでしょうか。
学割版買おう。
886sage:02/06/16 02:49
質問です

他のアプリに「Alt+CTR+SHIFT+2」といったキー操作を送るには、どうしたらいいのでしょうか?

Private Sub Image1_Click()
AppActivate "Ultima Online" ←ネトゲーです
SendKeys "%(^+2)"
End Sub

とやってみたのですが、成功するときもあれば失敗するときもあります。
「%(^+2)」が間違ってるのでしょうか?
「%^+2」でも送れることがあります。
それとも、問題はもっと違うところにあるのでしょうか?
よろしくお願いします。
む、下がらなかったな…
888デフォルトの名無しさん:02/06/16 02:58
>>886
微妙なタイミングが原因。
AppActivateされても、実際にアクティブになるまでには、
時間がかかることがある。Windowsの状態によってはね。

たとえば1秒くらい待ってから、SenkKeysしてみたら?
早いレス、ありがとうございます。
時間ですか…
MSDNを見るとIntervalとなっていますが、これを使うのでしょうか?
また、そのときにタイマーコントロールを追加する必要があるのでしょうか??
>>883
.NETやればー。SDKは無料だし。
VS.NET体験版(60日限定)もあるよ。
日経ソフトウェア7月号とかの付録(DVD-ROM)に入ってる。

>>889
API関数のSleepで待て。
う。。。APIですか。。。
「常に前面に表示する」以外では使ったことないや。
とりあえず、いろいろいじくってみます。
ありがとうございました。
892883:02/06/16 03:44
みなさまありがとうございます。
885さん
あったんですね。いろんなリンクを辿ったんですけど無くなってたので
諦めかけてました。
890さん
.NETは考えてなかったんですが、日経ソフトウェア買って調べてみようと
思います。
>>890
ありがとうございました。
APIの使い方等はあまりわからないのですが、
「Visual Basic Tips 1000+」のサンプルコードを見て、なんとか動くようになりました。
ところで、標準モジュールを
Option Explicit
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

フォームの方で
Private Sub Image1_Click()
Dim magicwait As Long
magicwait = 100
AppActivate "Ultima Online"
Sleep magicwait
SendKeys "^(+%2)"
End Sub
としたのですが、これってあってるのでしょうか??
894デフォルトの名無しさん:02/06/16 07:59
>>893
100だと0.1秒になるね。
それでよければ、べつにいいんだけど。
つーかSendKeysなんか使っている時点で安定動作は望めない。
896デフォルトの名無しさん:02/06/16 12:57
>>882

.NET SDKをざっと目を通してみます。
かんばってVBを使えるようにしたいですな。
(高かったし・・・・。)

ありがとうございます。

>>896
なんでわざわざVB.NET・・・。
898 :02/06/16 16:06
ものスゴク初歩的な質問ですみませんが、
VB.NETスタンダードを購入したんですが
DISK1のインストールでつまずいてます;;
セットアップのダイアログボックス
「インストールコンポーネント〜この処理に1〜2分かかり〜」

のところで止まってしまいます。タスクを開いてみると、
応答なしと出ています。原因がまったく分かりません。
うまくインストール出来るよう是非ともお教え下さい。
真剣に悩んでます。
899ギャルギャル集合:02/06/16 16:07
http://book-i.net/dankann/ まるごと女子中高生PC

http://go.iclub.to/yewssio/  まるごと女子中高生 iモ−ド

http://go.iclub.to/ttyui/ マンピ〜のGスポ PC

http://go.iclub.to/qppl/    マンピ〜のGスポ iモ−ド  

http://go.iclub.to/ffrqw/   ピチピチ女学院 PC

http://go.iclub.to/ggoute/ ピチピチ女学院 iモ−ド
>>898
根気強く待つ。

後、>>897
901 :02/06/16 16:13
>>900
早速の返答ありがとうございます。
2時間程待ってはいたんですが、全然変わらないのです。
それ以上待ってみた方がいいのでしょうか?
ちなみにインストールに必要な条件は
全てクリアしています。
>>901
まずはOSをクリーンインスト
>>901
すべてクリアしてるという説明だと本当かどうか怪しいな。
スペックやOSやら書きなさい。

今の時点でできるアドバイスは、OSから再インストールだな。
904 :02/06/16 16:23
OSはWinXP HOMEで
メモリ256MBのHDD30GBです。
空き容量16GBです。
ちなみにプリインストール製品のノートパソコンです。
(´-`).。oO(CPUは・・・)
906 :02/06/16 16:26
忘れました!
プロセッサはペンティアム3の900MHzです。
907 :02/06/16 16:36
やはり再インストールに
なってしまうのでしょうか?
それとも気長に待つのでしょうか?
MSの関連HPお見ても載ってませんし・・・。

>>907
2時間待ってるのなら気長は撤回。
909ごみレス ◆WuzDVM0M :02/06/16 16:43
新品だと考えにくいがCD-ROMに傷がついてるとか、
CDROMドライブがおかしいとかかもね。。。

何のソフトのCDだったか忘れたが、
DVDROM/CDR/RWのやつで、
インストールしてる途中、ある場所で必ず止まる。
傷が付いてるからかなぁ。ハァと思って、
純正(?)CDROMドライブに切り替えたらすんなり読み込めた。

そんなこともあるからね。原因を特定するのは至難の技ではないかと。

そういや、最後の一分ってのが異様に長かった。
と言っても10分、20ぷんぐらいだけどね。
確か応答なしになってたと思うが、IOのところ見てたら大丈夫っぽかった。
910 :02/06/16 17:04
もう3回挑戦したんですが、
1発目から止まってしまうといった症状に
なってます。
そんなこんなで微笑なり傷が付いてしまってます。
パッケージにも原因がありますね・・・。
初めのコンポーネントCDでは普通にインストール
出来たんですけど。

1つ1つ原因を探ってみます。
長々どうもありがとうございました。

911893:02/06/17 08:02
>>894
ゲームでは、魔法詠唱が遅れると死を招くので、これからいろいろ時間を試してみたいと思います
>>895
そうですか…
sendkeyは安定動作しないんですね。
やはりAPIも勉強しないとダメか…
まぁ、作ったソフトを公開するというわけではないので、何十回に1回とかの割合で失敗してもよしとします。TT
912デフォルトの名無しさん:02/06/17 11:50
>>834
遅くなりましたがありがとうございます。
多量のOCXのコントロールを使っている場合だと、
コードが繁多になってしまい有効じゃないですね。
913デフォルトの名無しさん:02/06/17 13:56
標準モジュールから、呼出ものとのフォームのイベント(マウスダウン等)
を発生させる方法をおしえてください。

複数のフォームから呼ばれるので、フォーム名きめ打ちはできないです。
ちなみに、標準モジュールの関数呼出の際、フォームのhWnd だけはわかるものとします。
>>913
で、VB独自のドリブンシステムとWindowsのWindowの識別ハンドル。
ハンドルじゃなくてオブジェクト渡す方が確実だと思われ。
915デフォルトの名無しさん:02/06/17 15:20
関数呼出で変数を用いることが出来るでしょうか?

たとえば、
GetGirlsPicture
という関数を呼ぶとき、
strG = Girls
で、
Get & strG & Picture
って感じで行いたいんですが。
916デフォルトの名無しさん:02/06/17 15:30
strG = "Girls" で
917デフォルトの名無しさん:02/06/17 15:33
>>913
hWndを使うと面倒の元。
あるフォームから標準モジュール内のプロシージャを呼ぶ時に、
呼び出し元のフォームを"me"として引数にすればよし。
標準モジュールプロシージャ側では、引数として渡された
フォームオブジェクトのイベントプロシージャをコール。

意味ちがった?
>>915
フォームやクラスのメンバ関数なら、CallByNameで出来る。
919デフォルトの名無しさん:02/06/17 16:13
>>918
CallByName Me, "Click", VbMethod
こんな感じで試してみました。
でもこれだとエラーになるみたいです。
どのようにやるんですか?
920デフォルトの名無しさん:02/06/17 16:19
>>917
ありがとうございます。
その後、919になりました。
教えてください!!
ExcelのVBAでマクロ作ってるんですが、コンパイル時にComboBoxのItemDataとNewIndexがないと言われてしまいます。
で、自動的に入力してくれるやつの選択枝にも入っていません。

こんな経験ある方いませんか?
ItemDataとNewIndexがないと困ってしまう。。。
教えてください!!
ExcelのVBAでアフロ作ってるんですが、コンパイル時にComboBoxのItemDataとNewIndexがないと言われてしまいま
す。
>>913
そもそも、なんで標準モジュールから
フォームのイベントを発生させたいのか疑問。
普通の感性では気持ち悪くてやりたくないはず。
924921:02/06/17 18:50
やっぱりできないな。。。
もしかして、普通のVBとExcelのマクロとかで使うVBAって仕様が違うんですか?
普通のVBは使ったことないんだけど
925921:02/06/17 18:57
事故レスです。
やっぱりVBAはVBと同じではなくて、プロパティとかも少ないんですね。
これまでVBのマニュアルしか読んでませんでしたので。

で、VBAでItemDataの変わりになるものってあります?
ないとけっこう不便だと思いますが
926921:02/06/17 19:01
ないっぽいですね。スレ汚してスマソ
927デフォルトの名無しさん:02/06/17 20:30
>>923
サブクラスの関数からイベント発生させたいんですよ。

通常の関数だと、呼出時に返値をもらいそれを場合わけして、
単に Form_Click で呼び出せばいいわけですが、
それが出来ないので、

hWnd から、そのフォーム名を割り出して、
"任意のフォーム名".Form_Click
なんて出来たり、
とにかく、どのフォームからでも参照されて、
参照されたフォームの Form_Click でもなんでも、
そのフォームの Private な関数を実行したり、イベントを発生させたいわけです。
>>927
>Private な関数を実行したり
オブジェクト指向の勉強が必要かと。
VBでホームページの内容を取得したいのですが、下のソースを実行す
ると、エラーがでます。誰かデバッグしてください。

Option Explicit

Private Sub Command1_Click()

Dim b() As Byte
Dim strURL As String
Dim strFilename As String

strURL = "http://www.aa.alpha-net.ne.jp/gfababa/"
strFilename = "C:\AAA\a.txt"

' 処理中マウスカーソル
Screen.MousePointer = vbHourglass

' 操作が途中の場合キャンセルする
Inet1.Cancel

' プロトコルを HTTP に設定
Inet1.Protocol = icHTTP

' 対象のURLを指定する
Inet1.URL = strURL

' バイナリ配列としてURLを取得する
b() = Inet1.OpenURL(, icByteArray)

' 取得したデータをファイルに書き出す
Open strFilename For Binary Access Write As #1
Put #1, , b()
Close #1

' マウスカーソルを通常に戻す
Screen.MousePointer = vbDefault

' 処理完了メッセージを表示する
MsgBox strURL & " を " & strFilename & " に保存しました。"

End Sub
>>929
index.html
>>930
いや、なんか変数が宣言されてないとかなんとか・・・
>>931
文法エラーごときで来ないでくれるか・・・。
>>932
じゃ、どうやってInetを宣言するか教えてくれ。
inetコントロールを張り付けるにきまってる
>>927
"任意のフォーム名".Form_Click と書いているけど、
任意のフォーム名を持つフォームが複数ある場合があるのを知ってる?

あと、イベントプロシージャを直接呼ぶのはやめとけ。
イベントプロシージャ内をPublic関数にして、それを呼べ。
できればPublic関数にするだけじゃなく、インタフェースを持たせるとベスト。

それとMeの使い方を調べよう。
小汚く行くなら、
すべてのフォームのClickイベントのイベントプロシージャをPublicにして、
その標準モジュールに渡す引数をMeにする。
937デフォルトの名無しさん:02/06/18 00:35
VBで逆ポーランド技法を使いたいんだけど
実現方法を教えてけれ。サンプルソースを
書いてくれるとうれしいよ〜
938デフォルトの名無しさん:02/06/18 00:47
>>937
勉強になるから、自分でやれ!
939デフォルトの名無しさん:02/06/18 00:54
そんなこと言わずに教えてよ〜、いけず〜
940デフォルトの名無しさん:02/06/18 09:30
DirectX8.1のSDKにIM、RMコントロールが入っていないのですが、
7.0aSDK落としてくれば、Direct3D8からでも使えますか?
941 :02/06/18 10:09
>>939
教えてやらんこともないから,なぜ逆ポーランド記述が必要なんだ?
何に使うんだ?ということを書け。クレクレ君は嫌われるぞ。
ただし,宿題だとか論文に使うとかがばれんようにな。
942デフォルトの名無しさん:02/06/18 10:30
逆ポーランド記述って、昔の電卓みたいに
演算子を数字の後につけるやつ?

電卓プログラム作るにはこっちのほうが実は楽なんじゃないかと
思うけど・・・
943ミニグラマー:02/06/18 11:59
単発で質問スレッド書いたらえらく叩かれてしまいました。
ですので、ここに書かせてもらいます。

エクセルVBAで保守を行って保存しようとすると、
「&H8000FFFF(-214748113):システムエラー。致命的なエラー」と130回くらい
エラーメッセージがでます。
色んな方向からパソコンを叩いてはみたのですが、いっこうに直りません。
ちなみにヘルプファイルはないので、エラーコードだされてもって
感じです。
一応、上書き保存はできているしプログラムは動きます。

お分かりになる方、是非教えて下さい。
今夜もミニグラマーさんの夢で今、目が覚めたよ。汗だくだよ。
恥ずかしいけど中二のくせにオネショしちゃったみたい…
でも、オシッコじゃないみたいなんだよね…
パンツがゴワゴワ、ヌルヌルしている感じなんだ…
何でだろう。漏れ、ひょっとして病気かな?

一度オシッコしたら気持ち悪いのでパンツを履き替えて、また寝ます。
明日も早朝練習があるのでしっかり睡眠を取らないと朝起きれないです。
>943
130回も数えたのはすごいと思うが、
パソコンを叩くのはやめなさい(w
あと、なんでヘルプファイルないの?
>>945
ピーコだから。なんてね(w
>>943
分かったぞ! そいつは致命的なエラーだ!
つまり助かりません。

------------- 終了 ---------------
948デフォルトの名無しさん:02/06/18 12:43
>>943
130回ぐらいたたいてみてはどうでしょうか?
>>943
ハンマーで思いっきり叩くと出なくなるよ。なんにも。
943
パソコン130回叩く前に他で再現するかどうか確認汁。
それらイタチ害と思われ。
951 :02/06/18 13:11
>>943
叩くだけじゃ駄目だ!窓から投げ捨てろ!
952 :02/06/18 13:12
>>943
ちゃんと先祖供養はしていますか?
953デフォルトの名無しさん:02/06/18 13:25
>>944
pants1.reflesh
954デフォルトの名無しさん:02/06/18 13:26
>>953
pant1.refreshだった、、、
ここまではできました。レスの差分取得をするにはどうすればいいでしょうか?

Private Sub Winsock1_Connect()

If getMode = 0 Then
Winsock1.SendData "GET /tech/subject.txt HTTP/1.0" & vbCrLf
End If
If getMode = 1 Then
Winsock1.SendData "GET /tech/dat/" & strDatName & " HTTP/1.0" & vbCrLf
End If

Winsock1.SendData "Host: pc.2ch.net" & vbCrLf
Winsock1.SendData "User-Agent: Monazilla/1.00 (test/1.0)" & vbCrLf
Winsock1.SendData "Accept: */*" & vbCrLf
Winsock1.SendData "Accept-Language: ja" & vbCrLf
Winsock1.SendData vbCrLf

End Sub
956デフォルトの名無しさん:02/06/18 13:57
Set objPants = Nothing
新スレの話題でないね。
ってな訳で、960番ゲッターの方は新スレおながいします。
>>956
俺のはAs Newで宣言されてるから、次のが自動装着されるのだ!ワハハハハ
959デフォルトの名無しさん:02/06/18 14:02
hWnd は何かわかったんだけど、
hIMC ってなんですか?
960デフォルトの名無しさん:02/06/18 14:12
msgboxのダイアログが表示されたとき、
IMEが利用不可(右下で、ツールバーが消えるか、禁止マークがかかる。)
となりますが、これはどうやるんですか?

単にIMEモードをOn, Off する方法はわかったんですが、
これが出来ません。
>>960
次スレよろ
962デフォルトの名無しさん:02/06/18 14:45
VBで Declare して使用するDLLは作成できないのでしょうか?
>962
無理。VC使え。
964962:02/06/18 14:54
>>963 了解・・・ VCで頑張ります
966デフォルトの名無しさん:02/07/11 02:57
1000トリガセーン モウスグダネ
早く1000までいtt毛
968デフォルトの名無しさん:02/07/11 06:12
おはようございます
いい天気ですね。
台風や嵐はすきなんです。
VB始めると友人にいったら(パソコン詳しい人C#にしろといいます
ネットが瞳孔といい、
インターネットソフトにいいですが、
あまり興味はありません。
VBはいろいろとあるらしいので、
なにかあるならおしえてください
>>968
どこを縦に読めと?
971デフォルトの名無しさん:02/07/13 11:33
はじめまして、VBを始めて半年ほどです。
Accessのデータを日付の条件で抽出するときのsql文について分からないことがありますので、
どなたかおわかりでしたらご教授願います。
(VBは6.0、Accsessは2000、ActiveXdataObject2.1で作っています)

dim cnct as new adodb.connection
dim rs as new adodb.recordset



dim sql as string
sql = ""
sql = sql & "selest sir_tokui" '(仕入れMの得意先名)
sql = sql & "from sir " '(仕入れM)
sql = sql & "where sir_date >= " '(仕入れMの仕入れ日)
sql = sql & DTPsiireStart.value '(画面で指定される日付開始)
sql = sql & "and sir_date <= " '(仕入れMの仕入れ日)
sql = sql & DTPsiireEnd.value '(画面で指定される日付終了)

Open rs, sql, cnct



画面で指定された値が02/07/01の場合、
(DTPpickerのプロパティでformatはYY/MM/DDです。)

これ(sql)をインミディエイトウィンドウで見ると
select sir_tokui from sir where sir_date >= 2002/07/01 and
sir_date <= 2002/07/01

となっています。
エラー等は出ないのですが、該当データが0軒(BOFとEOFがtrue)で
返って来ます。

データは存在します。

どのようにしたらきちんと抽出できるのでしょうか?
またデータ0軒になる理由は何なのでしょうか?
過去ログもみてみましたが分かりませんでした。
どなたか、よろしくお願いします。
972デフォルトの名無しさん:02/07/13 11:35
すみません。
長すぎました・・。
でも、どなたか回答お願いします。
>>973
って逝っても、もう終わりかけてるね
975即レス ◆POP.SOKU :02/07/13 17:29
>>971
違うかもしれんが
×2002/07/01

○#2002/07/01#
にしてみれ。
976791:02/07/14 23:18
回答ありがとうございます。
でもDTPpickerのvalueはdate型なので、date型に変換しなくても良いのかと、思ったのですが・・。
977初心:02/07/15 00:01
すいません。SQLの話になるんですが、文字列の中にシングルコーテーションを含む
検索はシングルコーテーション2こ並べてクリアできますよね。でも%_を検索
したいときってどうすればいいですか。