(*´д`*)ウッ… VB初心者質問スレ Part15

このエントリーをはてなブックマークに追加
1エロチカセブン
  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/tech/kako/1020/10208/1020830472.html
  Part10 http://pc.2ch.net/tech/kako/1022/10221/1022127528.html
  Part11 http://pc.2ch.net/tech/kako/1024/10243/1024380249.html
  Part12 http://pc3.2ch.net/test/read.cgi/tech/1026642565/
  Part13 http://pc3.2ch.net/test/read.cgi/tech/1029241786/l50
Win32 API関連スレ
  Win32API 質問箱 Build4
  http://pc.2ch.net/test/read.cgi/tech/1023361418/
心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調べてみる。
参.VBScript もこのスレでOK。
4.インストーラーなどの質問もOK。
五.下ネタもたまにならOK
(゚Д゚≡゚Д゚)
ドピュ
4前スレ990:02/09/23 00:03
もたもたしてる間に勃ってしまった……手を煩わせてスマソ>>1&モツカレー

一応前スレ
Part14 http://pc3.2ch.net/test/read.cgi/tech/1030947162/

         |   |      \
         |   ̄| ̄    \
         |  _|_     |       \
         |/|/    / /  \    ̄|
                           /
              ∧             ∧
              / ・           / ';,
            . /  ';          ./  ';
            /   ;______/   ;
          /                  \
         /    /          \     \
        /´       |____|          |
        |  /////    |     |    /////    |
       |        .|     |           |
        |         |    |            |
        |        ';    /           /
         \        \/        .. /
           ヽ             ........:::::::<
VBの小ネタとかTipsとかもOK。前スレ1000は綺麗に終わったね。
7前スレ979:02/09/23 00:10
とりあえず、スレの最後だったので途中になってしまったみたいなので、
前スレでの質問を答えると同時に、もう一回載せます。
−−−−−−−−−−−−−−−−
A,B,C,Dという四つの変数(整数型)を作って、(1 ≦ A, B, C, D ≦ 100 )
それぞれを乱数にして
A>=B And A>=C And A>=D And A+B+C+D=100
の条件を満たすA,B,C,Dの値を作りたいのですが

Do While A>=B And A>=C And A>=D And A+B+C+D=100
A=int(rnd*100)+1
B=int(rnd*100)+1
C=int(rnd*100)+1
D=int(rnd*100)+1
loop
と書くと非常に効率が悪いです。
もっと効率のいいプログラムってあるでしょうか?
私にはどうしてもこれしか思いつきません…
−−−−−−−−−−−−−−−
是非とも知恵を貸してください
(*´д`*)アハァ… のほうがよかった
9デフォルトの名無しさん:02/09/23 00:16
Winsockコントロールについて質問があります。
サーバと複数のクライアントとの間でデータのやり取りをしているのですが、
ループなどを使ってサーバから複数のクライアントに一気にデータを送りたい
のですが、どのような方法があるでしょう?
例えば、
For i = 0 To 5
  Winsock( i ).SendData "test"
Next i
みたいに書いても、最後のクライアント(5個目)には送られるのですが、
それ以前のクライアントには送られないのです。
前スレ>>984
977ではないが、VBのCurrency型はかなり癖があるぞ。
VB5では「Int(100@/1@)」がP-Codeでは100,ネイティブでは99になったりする。
(開発環境か実行環境かの判断に使えたりするw)
ちなみにVB6ではどっちも100なんだよな。(まぁ仕様らしいが)
その他にもCurrency型の挙動不審はあったとおもう。(まぁ仕様だろうが)

・Currency型は保存と計算以外には使わない。
・Currency型以外と計算させない。(変換させるときは細心の注意)
・ネイティブできっちり検証する。
ってのがおいらの脳内ルールだな。
(Currencyに限らんがな。ヘルプに書いてあったと思うし)
>>1
そのAAはアハァ…だろ。
文字変える余裕あるならAA変えてみせろ。
>9
Winsock( i ).SendData "test"
の後にDoEventsいれたら?
>>7
サンプルを作ってみた。

Private Sub Command1_Click()
Dim A As Integer
Dim B As Integer
Dim C As Integer
Dim D As Integer
Dim n As Integer

Dim datenow As Date

A = Int((100 - 0 + 1) * Rnd() + 0)
B = Int(((100 - A) - 0 + 1) * Rnd() + 0)
C = Int(((100 - (A + B)) - 0 + 1) * Rnd() + 0)
D = 100 - (A + B + C)

datenow = Now()

Debug.Print datenow; "A ="; A
Debug.Print datenow; "B ="; B
Debug.Print datenow; "C ="; C
Debug.Print datenow; "D ="; D
Debug.Print datenow; "A + B + C + D ="; A + B + C + D
End Sub

これじゃだめなのかな?
1413:02/09/23 00:29
やべえ、nが意味ないよ・・・
Dim n As Integer
を脳内あぼーんして読んでください。
スマソ
15前スレ977:02/09/23 00:31
前スレの978、984へ
>Currency型の変数をFor文の制御変数に使っちゃだめよん。
の理由は、正常にループできない範囲があるから。

214748辺りの値からおかしくなるらしい。(V友より)
以下のコードを試すと暴走します。

Dim i As Currency
For i = 214747 To 214748
Debug.Print i
Next
前すれ >>999
> A,B,C,Dが自然数だったら、
> n = 100
> A = int( rnd * ( n - n / 4 -2 )) + n / 4
> B = int( rnd * iif( A >= n / 2 - 1, n - A - 2 , n / 2 - 1 )) + 1
> C = int( rnd * iif(( A + B ) >= n / 2, n - ( A + B ) - 1, n / 2 - 1 )) + 1
> D = n - A - B - C
> かな ?

ダメ。A = 25, B = 1, C = 1, D = 73 とかなるよ。B, C, D の下限値も必要。
A が決まっている時は、n = A + B + C + D ≦ 3A + B だから、n - 3A ≦ B が下限値となる。(もちろん 1 ≦ B も必要だよ。)
同様に、A, B が決まっている時は、n = A + B + C + D ≦ 2A + B + C だから n - 2A - B ≦ C が下限値。
17前スレ978:02/09/23 00:45
>>10 >>15
ありがとう。(まず使わないけど)覚えとく。
>>12
( ゚Д゚)お!出来ました。
ありがとうございます。
>>15
おいおい今さら何を。
>>19
>前スレの978、984へ
これ読める?
21前スレ999:02/09/23 02:58
>16
n = 100
D = int(rnd * (n / 2 - 1)) + 1
C = int(rnd * ( n / 2 - D )) + 1
B = iif((D + C) =< (n + 2)/ 3, int(rnd * (int((n - (D + C))/ 2))) + 1, int(rnd * (n - 2 * (D + C) + 1)) + 1)
A = n - D - C - B
これでどう?
心配なので50000回ぐらい試してみたけど、一度も例外なしだった。
22デフォルトの名無しさん:02/09/23 11:12
前すれの

1000 名前:デフォルトの名無しさん 投稿日:02/09/23 00:00
次スレ
http://pc3.2ch.net/test/read.cgi/tech/1032706491/l50

なんかすげー
23前すれの1000:02/09/23 11:16
ありがとう。でも、その話題はもういいよ。
24HAIRETU:02/09/23 12:41
dim add(16*32) as byte
sub Fget
for l=0 to 15
call Lget(l,add(l*32))
next
end sub
のように配列のN番目を引数にして、addのNからN+31にLgetで値を設定したいのですが
Lget(i,add())のように配列全体をわたすのはできますが、
配列の途中を渡すことができません。
Lget(i,add(),i*32)としてインデックスを別に引数として渡すことは
できますが、VBではこのような方法しかないのでしょうか?
25デフォルトの名無しさん:02/09/23 12:42
VB上からフォルダに共有をかけるっていうはいったいぜんたいどうすればいいんでしょうか?
2617:02/09/23 13:00
ぐぐって一発検索>>25
2725:02/09/23 13:06
>>26
いや、
http://vbvbvb.com/jp/gtips/0251/gNetShareAddFolder.html
これは見つけたんだが、NT以上対象らしく、
98で試したらだめだったんだ。
>>27
> これは見つけたんだが、NT以上対象らしく、

MSDN では...

Import Library: Use netapi32.lib (Windows NT) or svrapi.lib (Windows 95).

ってなってるから、単に API 定義している Declare 文の Lib オペランドを "svrapi.dll" にするだけじゃないの ?
新山(へろぱ)さんを抱きたい
きしょ。
VBで作ったアプリを、、NT系等のタスクマネージャのアプリケーションの
タブの所に表示しない様にするにはどうすれば良いのでしょうか?
(プロセスのタブには表示されるが、アプリケーションのタブの、
 タスクと状態の表示に、アイコンや実行中、等の表示が無い様に)

例えば、タスクトレイに常駐しているアプリがタスクマネージャに
表示されないのと同じ様にしたいのですが…
色々プロパティやAPIを試してみたのですが、上手くいきません。
どうか宜しくお願いします。
3225:02/09/23 14:43
>>28
svrapi.dllに置き換えていろいろ試してるんだけど、全然成功しないです。
SHARE_INFO_2 の構造体の定義が、上のURLとMSDNでは違う気がして
そこの部分を変えたりしてるんですが一向にうまく行く気配を見せないです。
>>32
> SHARE_INFO_2 の構造体の定義が、上のURLとMSDNでは違う気がして

確かに違うね。svrapi.h と lmcons.h では..

#define LM20_NNLEN 12 // LM 2.0 Net name length
#define SHPWLEN 8 // Share password length (bytes)

struct share_info_2 {
char shi2_netname[LM20_NNLEN+1];
char shi2_pad1;
unsigned short shi2_type;
char FAR * shi2_remark;
unsigned short shi2_permissions;
unsigned short shi2_max_uses;
unsigned short shi2_current_uses;
char FAR * shi2_path;
char shi2_passwd[SHPWLEN+1];
char shi2_pad2;
}; /* share_info_2 */

となってる。netname[] なんかは、Unicode か Ansi かよくわからないので、両方試す必要があるかも...。
>>21
> これでどう?

単純に数値を求めるだけなら OK だと思うけど、これでは n = 100 の時に A = B = C = D = 25 とかはでてこなくなるよ。
新山(へろぱ)さんのことを抱かずにはいられない
36デフォルトの名無しさん:02/09/23 18:48
Sin(0)は0
Cos(0)は1をちゃんと返してくれるんだけど
ほかの数だと値がおかしくなる
例えばsin(180)は0のはずなのに-0.801152...となる
角度からsin,cosを求めるにはSin,Cosじゃだめなのか?
どうしたら求められるか教えてくれる親切な人、教えてください
37デフォルトの名無しさん:02/09/23 18:50
ListViewコントロールで、アイテムを選択した時を検出したいのですがうまくできません。
エクスプローラーみたいに、ファイルを選択すると容量とか表示されるようにしたいです。
もちろん、マウスでドラッグしての複数選択や、Shift,Ctrlキー押しながらの複数選択も検出します。
どうやればよいでしょうか?
>>36
> 例えばsin(180)は0のはずなのに-0.801152...となる

ねぇ、「ラジアン」って言う単位知ってる ?
知らないから聞いてるんですよ、たぶん
>>39
> 知らないから聞いてるんですよ、たぶん

知らないなら調べろ。
42デフォルトの名無しさん:02/09/23 19:02
ここに書き込んで調べてるんですよ、たぶん
4339:02/09/23 19:03
「ラジアン」っていう言葉を知らなかったら調べようがないでしょう?
>>43
> 「ラジアン」っていう言葉を知らなかったら調べようがないでしょう?

MSDN 読んだことないの ? Sin 関数の一番下に...

角度の単位を度からラジアンに変換するには、度にπ/180 を掛けます。ラジアンから度に変換するには、ラジアンに 180/πを掛けます。

と書いてある。これでわからないなら、プログラマー辞めたほうがいい。
4539:02/09/23 19:10
>>44
私は37ではありませんよ、一応。
46nobukiti:02/09/23 19:49
VB6 + Oracle で本社と各拠点をOCNエコノミーの128kbpsで常時接続し
普通のクライアントサーバーシステムを作りたいのですが、問題点等は
ありますでしょうか?
本社にOracle Serverを置いて、各拠点からoo4oで繋いでデータの参照、
更新等するつもりです。データ件数的には1000件未満を想定しています。
速度面、パフォーマンス等で遅かったりするのでしょうか?
今までLANでの普通の10Base-Tで使用する事を前提とした開発しか経験した
ことがないので、128kbps程度の回線速度だとどうなるかよくわからないのです。
ご面倒でしょうが、お知りの方おられましたらお教え下さい。
47デフォルトの名無しさん:02/09/23 19:51
ADOでMDBにアクセスするVBアプリ作ってマス!
日付型の項目がNULLの場合のSQL文書いてるンですけど

WHERE 日付 = ##

ではないのですか?
48nobukiti:02/09/23 19:51
答えろオラ
4946:02/09/23 19:54
>>48
名前がかぶってますよ。
50デフォルトの名無しさん:02/09/23 19:59
>>46
そりゃ、LANよりは遅いけど、気を配って作れば問題なし。
51nobukiti:02/09/23 20:01
>>50
ご返答ありがとうございます。
ちなみに 48は私じゃないです。

そうですか、、、
>気を配って作れば問題なし。
この、気を配ってというところはストアドとかを使って
できるだけネットワーク上のトラフィックを減らした
作り込みが必要という意味ですかね?
ストアドはあまり組んだことがないので不得意なので
どうしようか迷っています。
>47
Is Nullじゃないの?
53nobukiti:02/09/23 20:06
私という戦うバディ♪
54デフォルトの名無しさん:02/09/23 20:15
質問があります。
VBSでGifヘッダーを取得したいのですが、セーフアレイなバイト配列を
どうしても文字列にする事が出来ません。
s(0)〜(5)までを6文字の文字列に変換したいのですが。

Set astImage = WScript.CreateObject("ADODB.Stream")
Set oFS = WScript.CreateObject("Scripting.FileSystemObject")
Const adTypeBinary = 1
astImage.Type = adTypeBinary
astImage.Open
WScript.CreateObject("WScript.Shell").CurrentDirectory = oFS.GetParentFolderName(WScript.ScriptFullName)
astImage.LoadFromFile ".\fileStock\test.gif"
Dim s()
ReDim s(12)
For i = 0 To 12
s(i) = astImage.Read(1) '←これ
Next
>>51
もちろんストアドにするのも大事だ。
例えばOO4Oをよく理解してる?
ダイナセットひとつとってもいろいろパラメータあるでしょ?
あれも、最適なものを指定してやるとか。
56nobukiti:02/09/23 20:27
>>55
やはり、色々あるんですねー
パラメーターとか調べてみます。
ありがとうございました
>56は苦労しそう
>>54
一文字ずつ格納汁
5925:02/09/23 21:13
ぎゃーだめだー。
バックアップはサーバ機のみで取れるという仕様にしよう!
>58
ありがとうございます。
For i = 0 To 12
s(i) = AscB(astImage.Read(1))
Next
で、出来るようになりました。
61デフォルトの名無しさん:02/09/23 23:20
NULLで埋めるってどういうことですか?
NULLってなんですか?
62デフォルトの名無しさん:02/09/23 23:27
タクスバーのプロパティ「自動的に隠す」を切り替える、VB関数か、
APIを教えてください。見つからないよぅ(つд`)
WINSHELLAPI UINT APIENTRY SHAppBarMessage(
DWORD dwMessage,
PAPPBARDATA pData
);

Parameters
ABM_ACTIVATENotifies the system that an appbar has been activated.
ABM_GETAUTOHIDEBARRetrieves the handle of the autohide appbar associated with a particular edge of the screen.
ABM_GETSTATERetrieves the autohide and always-on-top states of the Windows taskbar.
ABM_GETTASKBARPOSRetrieves the bounding rectangle of the Windows taskbar.
ABM_NEWRegisters a new appbar and specifies the message identifier that the system should use to send notification messages to the appbar.
ABM_QUERYPOSRequests a size and screen position for an appbar.
ABM_REMOVEUnregisters an appbar, removing bar from the system's internal list.
ABM_SETAUTOHIDEBARRegisters or unregisters an autohide appbar for an edge of the screen.
ABM_SETPOSSets the size and screen position of an appbar.
ABM_WINDOWPOSCHANGEDNotifies the system when an appbar's position has changed.
64デフォルトの名無しさん:02/09/23 23:56
>>63
キタ━(゚∀゚)━( ゚∀)━(  ゚)━(  )━(  )━(゚  )━(∀゚ )━(゚∀゚)━!!!!!
ありがとうございます。
現在実験中です、AppBarDataがちょと難しいです・・・がんばります。
>>61
その文字列をすべてChr(0)の文字にする、ということだと思われ。
>>63
君の資料は古いと思われ。

>>64
ABM_SETSTATUSを使う。ただし、WinXPでしか効かない。
Win95、98、NT4、2000でダメなことは確認済み。

それ以外の環境だと10個くらいのAPI駆使して、
無理やり設定ダイアログだして「自動的に隠す」を切り替える方法を
取ろうとしていた人もいたがうまくいったかどうかは知らない。
68デフォルトの名無しさん:02/09/24 00:34
>>66
win98です、だめそうですね・・・
あきらめます、ありがとうございました。

69 :02/09/24 08:59
VBってさ、メモリリークを 起こすかな?

配列とか 確保しても 解放しなくてもいいよね?

誰か 教えて。
循環参照がだめなんじゃなかったっけか。
71 :02/09/24 14:14
VB6のSP5を入れてます。

画面を作るときに、リストボックスの大きさをFORMの大きさにより
変更したいのですが、標準でそのようなコントロールは、あるのでしょうか?
教えてください。
72デフォルトの名無しさん:02/09/24 14:17
>>69
その配列を private で使用しているフォームのunload時に、
set frmXXX = Nothing
とすればそのfrm内の配列は開放される。
逆にこれを入れないとform内の全ての保持値がメモリに残ったままになっているので
(VBアプリを終了するともちろん解放されるが)
保持しておく必要がないなら入れるべきだろう。
73デフォルトの名無しさん:02/09/24 14:18
>>66
WinAPI使うたびに思うんだけど、なんでもっと便利関数にしないのかな。

TaskBarAutoHide(TRUE);

みたいなAPIを用意してくれればいいのに。
74 :02/09/24 14:19
追記
フレームみたいに 二つのリストボックスの大きさを調整したいんです。
7574:02/09/24 14:20
追記は 71に対してです。
76デフォルトの名無しさん:02/09/24 14:25
>>72
プ
77デフォルトの名無しさん:02/09/24 14:51
VB.Netでつくったアプリは、
Win98以下は対応にならないんですか?
>>72
勝手に仕様を作るな
>>71 >>74 >>75
何をやりたいのか意味不明です。

>画面を作るときに、
もしやデザイン時に、って事?

>リストボックスの大きさをFORMの大きさにより変更したいのですが、
普通に変更すればいいんじゃ・・・

>標準でそのようなコントロールは、あるのでしょうか?教えてください。
どのようなコントロールかわからないので答えられないです。

>フレームみたいに 二つのリストボックスの大きさを調整したいんです。
フレームもリストボックスもサイズ変更の仕方は同じでは。
80デフォルトの名無しさん:02/09/24 15:42
>>78
じゃあどういう仕様だよ。
教えれ.
>>72 >>80
Unload時にNothingを代入しても配列は解放されていませんが何か?
ヒント Main関数のDim〜の行をコメントアウトすると解放されるけどね。

<Module1>
Sub Main()
  Dim Form1 As New Form1
  Form1.Show vbModal
  MsgBox Form1.arraysize
End Sub

<Form1>
Private m_a() As Long
Public Property Get arraysize() As Long
  On Error Resume Next
  arraysize = UBound(m_a)
End Property

Private Sub Form_Load()
  ReDim m_a(100)
End Sub

Private Sub Form_Unload(Cancel As Integer)
  Set Form1 = Nothing
End Sub
82デフォルトの名無しさん:02/09/24 16:16
誰か教えてください…
マウスの右クリックとctrlキーの使用が禁止されているアプリケーションから、
テキストデータをコピーするプログラムを作成中です。
しかし、上記の禁止事項の為に、クリップボードの中にテキストデータを持ってくることが
出来ません。
コピーを行いたいテキストを反転させる事までは可能です。

使用言語はVB6.0とVC++6。0です。
上記の禁止事項に引っかからずにクリップボードの中にテキストデータを持ってくるような仕組みを作りなされ。
84 :02/09/24 16:54
>>79

エクスプローラーとかで フォルダが出てる部分とファイルが出てる部分がありますよね。
そのフォルダのフレームの大きさとファイルのフレームの大きさは、
両方の真中にある区切りで調整できます。
また、エクスプロラー自体の大きさを変えても、
フォルダやファイルの部分の大きさが変わります。

こういうのをやりたいのですが、その真中の区切りみたいなのは
何かコントロールでできないかと いうことです。
>>84
アプリケーションウィザードで、エクスプローラースタイルのを
作ってみてコード見てみ。やってること分かるから。
>>84
真中の区切りというのは左右のコントロールの境い目という事ですね。理解しました。
左のコントロールのWidthプロパティ、右のコントロールのLeft及びWidthプロパティを調節すればOKです。

ちなみに「フレーム」というと通常VB組み込みのフレームコントロールの事を指すと思います。
混同するので>>74>>84のような意味では使わない方がよろしいかと。
87デフォルトの名無しさん:02/09/24 17:10
あぅ
8882です:02/09/24 17:29
>>83
教えて貰えませんか?
89デフォルトの名無しさん:02/09/24 17:39
Split 関数のデリミタに2個以上の文字を指定する事は可能ですか?
1個ずつ指定した Split 関数を何回か呼ばないとダメかな?
90デフォルトの名無しさん:02/09/24 17:46
誰か教えてちょー。
画像をクリックしたりして移動させたり特定の場所にくると吸い付いたり
その他の場所だと元にもどたっりするようなソリティアみたいな感じの・・
9183:02/09/24 18:21
>88
教えるもなにも、仕様の問題だから何ともいえないよ・・・
パッと思いつく方法としては、テキストを選択すると、その周辺にコピーボタンが表示されるとか。
Officeみたいな奴ね。
>>91
他のアプリケーションって書いてあるだろ。ちゃんと読んでやれよ。
Shift+Deleteの切り取りを使えるならそれ
94:02/09/24 18:50
>>89 一方の区切り文字をReplaceでもう一方の区切り文字に置き換えてからSplit
9583:02/09/24 18:51
>92
取得元が他のアプリだと何か不都合でもあるの?
どっかのパッケージで中身が一切さわれません、ってならともかく。
9689:02/09/24 18:55
>>94
おおっ! かしこい!
そんなやり方があったんだ。感謝。
>>95
だからどっかのパッケージで中身が一切さわれないんだろ。
98デフォルトの名無しさん:02/09/24 18:57
プロージャ内で
Dim str as String
などと宣言しておいてからにまったく使用していなければ、
コンパイル時にこの str の領域をわざわざ確保しないようにしてくれますか?
9982です:02/09/24 18:57
ええと、ctrlキーまたはshiftキーを押下げ、または
右クリックをすると、「そのキーは使えません」、
と言ったメッセージボックスが出るようになっていて、
コピーをすることが出来ません。今のところ、
clipboard.settext screen.activecontroll.seltext
でやってみようと思って居るのですけど、このままでは動かないみたいです。
フォーカスがあっていないみたいなのですが、それに関する記述が
必要なのでしょうか?
100:02/09/24 19:11
>>82 = 99
著作者がコピーさせたくないと思ってるであろうものをコピーしようとするのはどうなんでしょう・・・
てのは置いといて、パッと思いつくのは
そのアプリが使用しているデータファイルを直接読み込んでそのアプリの機能も統合したソフトを作る(w
>ええと、ctrlキーまたはshiftキーを押下げ、または
>右クリックをすると、「そのキーは使えません」、
>と言ったメッセージボックスが出る

そのてのキーを無効にするってんならともかく、いちいちメッセージ出すあたり
そのへんの糞シェアウエア並みの仕様だなw
>>101 別に普通の仕様じゃん。
配列はEraceで消すんだよ
× Erace
○ Erase
105デフォルトの名無しさん:02/09/24 20:05
37なんですが。
誰か教えて。。
>>105
ヘルプみろ
10737:02/09/24 20:28
とっくにみてますよぉ。
>>107
リストボックス特有のイベントになにがあるか言えるか?
それを全部試せ。
>>107
ListView_ItemClickかな。
罠があった気がするけど。
>>81
> Unload時にNothingを代入しても配列は解放されていませんが何か?

ったく、VB 厨はいつまでたっても進歩しないな。
お前が、Form1 の Form_Unload() で代入している、Form1 は Module1 の Form1 じゃねーぞ、ヴァカ。
11181:02/09/24 21:33
>>110
わかってるよ。お前は文章も読めないのか? 勝手に三行目を消すな。
112ヴァカはお前:02/09/24 21:40
>>110
( ´,_ゝ`)プッ
11366:02/09/24 21:53
>>73
そうするとAPIの数が数十倍に膨れ上がる罠。
>>77
>VB.Netでつくったアプリは、
>Win98以下は対応にならないんですか?

Win98は対応している。Win95が対象外。
>>82
その糞ソフトの名前晒せ
116デフォルトの名無しさん:02/09/24 22:47
BorderStyleを可変や固定-実線にすると、
タスクバーに切り替えボタンが表示されますよね?
BorderStyleをなしにしてそのボタンを表示させたいのですが、
どうしたらいいでしょうか?
>>111
> わかってるよ。お前は文章も読めないのか? 勝手に三行目を消すな。

真からヴァカだな。大体、VB 厨の >>81 が Set Form1 = New Form1 なんてことするから、わからなくなるんだよ。
Set FormX = New Form1 とかしてみれ、ヴォケ。
念のために言っとくけど、その下もちゃんと修正するんだぞ。その行だけ変えて、ププッとか書いてくるなよ。
(Form1 の Form_Unlaod の中をどう修正するのかが、楽しみだよ。)
>>117
お前>>72読んでないだろ。だから文章読めないって言われるんだ。
>>81>>72に対する皮肉。わざと問題のある例をだしてるんだよ。
日本語から勉強しなおして来い。
> その行だけ変えて、ププッとか書いてくるなよ。

( ´,_ゝ`) ププッ
120118:02/09/24 23:53
皮肉というより問題定義と言った方がいいな。
> 真からヴァカだな。大体、VB 厨の >>81
仲間割れですか?
>>121
ヴァカは仲間ではありません。
123デフォルトの名無しさん:02/09/25 00:07
ていうか、Unload時にちゃんと = Nothing しても、
そのフォーム以外からの参照されるコーディングがあれば
= Nothing
の記述の時点では実は解放されていないだけ。
他から参照されるコーディングがなければちゃんと解放されてる。

formsコレクションでどういう場合にフォームが残っているか確認してみそ。
124123じゃないけど:02/09/25 00:38
UnloadでSet FormX = NothingなんてしなくてもFormsコレクションを含め
参照しているものがなくなればフォーム内の配列なんかは自然と解放される。

自分のフォームがたまたまグローバルなFormXで作成されているときはUnload時に
グローバルな参照を解放することによりその時点でフォームが削除されるけど、
自分のフォームがグローバルなFormXじゃない時にグローバルなFormXにNothingを
代入するのは意味ない。むしろ関係ないものをNothingしているからバグといってもいい。

Set FormX = Nothingで万事解決みたいな言い方をするのはよくわかってない奴の言うことさ。
>>72
1つ賢くなったね
12637:02/09/25 01:51
ItemCheckだとそれらしい感じだけど
選択数を増やしていくのは問題ないけど減らしていくときイベントが起きないです。
あと、なんか選択している数分イベントが起きてしまいます。
MouseMoveでやろうとしたら、なんかドラッグしても最初しかイベントが起きなかったです
127デフォルトの名無しさん:02/09/25 02:04
VB.NETについて質問させてください。

.NET FrameworkのCLR上で動作する.NETアプリケーションでは、
VB6.0まではレジストリに記録していたパラメータを「メタデータ」
なるものに記録することで、レジストリの操作が不要になったと本で
読みました。これは、どのような手法によって実現するのでしょうか。
例えば、ウィンドウの位置や大きさなどを、レジストリに頼らずに
起動時などに読み込みたいのです。基本的な記述方法を教えて
いただけるとありがたいです。よろしくお願いします。
>>126
とりあえず、Timerと組み合わせて誤魔化せ。漏れはそうした。
12937:02/09/25 08:15
Timerはさけたいなぁ
130:02/09/25 09:19
>>129
要はやりたい事がListViewの仕様と合ってないんでしょ。
なら違うコントロール探すか、無ければ作るか、
または他のもので代用するか、やりたい事をある程度妥協するか。
131nobukiti:02/09/25 09:20
画面を常に最前面に表示ってSetWindowPos使うしかないんでしたっけ?
プロパティちょちょっといじってできませんでしたっけ?
132:02/09/25 09:28
>>130補足
B表形式のコントロールを使うに0.7票 Cに0.3票
133nobukiti:02/09/25 09:37
答えろオラ
134nobukiti:02/09/25 09:38
>>133は僕ではありません。
自分で調べろオラ
136 :02/09/25 09:53
>>98

先頭に ' をつけとけば 大丈夫(w
>>131
何故SetWindowPosじゃダメなの
138135:02/09/25 10:05
>>135は僕ではありません。
∧             ∧
       /.::ヽ           /.:: ヽ
      /.::: ヽ          /.:::: ヽ
      /.:::  ヽ         /.::::  ヽ     このスレは一体
     /.::::::.  ヽ,,,,,,,,,,,,,,,,,,,,,,,,,,,/.::::::::.  ヽ
    /.:::::::::::                 ヽ       何なのですか         
    /.:::::::::   /        ヽ     ヽ
   /.:::::::   / ‐・‐     ‐・‐\     ヽ
   ヽ.::::::       .::::            /
    ヽ.:::::      .:::::            /
     ヽ.::::     \__/      /
      ヽ.::::      \/       /
       \.:::::            /
>139
その耳のズレは一体何なのですか?
141135:02/09/25 10:53
frm_呼び先.Show 1, frm_次画面

で最前面表示できるべヨ?
142135:02/09/25 10:53
>>141
これ僕です。
自分がつくってるソフトにいつのまにか
Microsoft Data Formatting Object Library( MSSTDFMT.DLL)
に参照設定がついてしました

ランタイムにはこれがはいってないものもあるらしくつかわないで済むなら
使いたくないのですが どのようなものに必要とするのでしょうか?
また参照設定をはずしても問題なさそうなのでそのままコンパイルしましたが
環境によって MSSTDFMT.DLL がないとエラーがでて起動しませんでした
前なったことがあるけど普通に切った。なんとも無い。
145nobukiti :02/09/25 13:56
ちんこ
146 :02/09/25 14:11
VBで作ったActiveXのDLLなんですが、VBでは使用するとちゃんと
DLL内でイベントを発生するんですが、ExcelのVBAで用いると
イベントが 発生しません。
どうしてか どなたか わかりますでしょうか?
147デフォルトの名無しさん:02/09/25 14:25
質問させてくださいませ。
chck_cntの値が◆の時点で消えちゃうんだけど、
原因は何なんですかね?こんな現象初めてで、
困ってます。。。

function checkbox()
   dim iDatLoop
   dim iDatArray
   dim chck_cnt
   chck_cnt = 0
   Response.Write chck_cnt▲
   iDatArray=session.Contents("GHERLST_Dat")
   for iDatLoop = 0 to session.Contents("GHERLST_Cnt")-1
      if request("ErrSend" & iDatLoop)="1" then
         iDatArray(iDatLoop,0)=1
         chck_cnt = chck_cnt + 1
         Response.Write chck_cnt◆
      else
         iDatArray(iDatLoop,0)=0
      end if
   next
   Response.Write chck_cnt○
   session.Contents("GHERLST_Dat")=iDatArray
   checkbox=chck_cnt
end function
取り敢えずLongとか型宣言しろ
149147:02/09/25 14:46
ASPなんですが・・・。
「消えちゃう」ってスゲェよ。
次はハトが出そうだなヲイw
151nobukiti:02/09/25 14:51
>>147
?さんの登場を待て。
彼ならなんとかしてくれる
ずびばぜん、
フォーム上でExcelのワークシートを表示したいのですが、
どういう方法で実現できるのでしょうか。。

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("hogehoge.xls")
Set xlSheet = xlBook.Worksheets("Sheet1")
xlApp.Visible = True

↑これだと、Excelが起動してシートがひょうじされますが、
そうでなくて、フォーム上にグリッドのように表示したいのです。
全ての値をグリッドに放り込むしかないのでしょうか??
153146:02/09/25 15:08
解決しました。
エクセル側での入力ミスでした〜〜

宣言した時に設定したオブジェクト名が 間違えてました。
154:02/09/25 15:27
>>147
消えちゃう、でなくてゼロになるとかNullになるとか具体的に言う癖付けたほうがいいかも。

で、こんな感じになってないかな?
Option Explicit
Dim flg As Boolean

Sub a()
  Dim cnt As Long
  cnt = 0
  If flg = 0 Then
    cnt = cnt + 1
    b cnt
  End If
  MsgBox cnt
End Sub

Sub b(cnt As Long)
  flg = 1
  a
End Sub
155147:02/09/25 15:47
>>154
自己解決しますた(*´д`*)

IISの環境にデバッガが導入されてなかったから
見つけ出すのに苦労しました(*´д`*)

session.Contents("GHERLST_Dat")に代入する
変数のRedim時に値の入ってない変数を使ってた(*´д`*)
変えたの誰だよ!って感じです(*´д`*)
156 :02/09/25 15:56
ODBC経由(DAO3.6)で AccessのMDBを使用しています。

この時、このMDBに含まれるテーブル名をすべて 取得するには
どうしたらいいのでしょうか?
15737:02/09/25 15:58
う〜ん、そうか。
実現できないわけはない気がするけど。
158 :02/09/25 16:00
ListBoxで リストに加えた文字列がリストボックスから はみ出すほど長い
場合、下に スクロールバーとか出ればいいなと思うのですが、出せないでしょうか?

また、このようなコントロールは ありますでしょうか?
15937:02/09/25 16:31
>>158
わしが今悩んでるListView使えばいいんでないかいな?
160教えて!!:02/09/25 16:37
ACEESSでフォームを開く時に最大化するモジュールを教えて!!
>>158
SendMessage分かる?
ListBoxに「横スクロールバー表示しろやゴルァ!!」ってSendMessageすれば表示されるよ。
162156:02/09/25 17:00
156の続き

オラクルで テーブル名を取得する場合、
select * from tab;
とかやります。
こういうの ないでしょうか?
163nobukiti:02/09/25 17:17
164ぽん太:02/09/25 17:19
165nobukiti :02/09/25 17:20
ぽん太氏ね
166158:02/09/25 17:23
>>161
おおっ できた!
さんきゅ〜〜

http://www2.synapse.ne.jp/waka/Tequ02.htm
167162:02/09/25 17:32
>>162

ADODB.ConnectionとADODB.Recordset を使っては 可能でしょうか?
168デフォルトの名無しさん:02/09/25 17:47
Windows2000とかXPだと、確か英語版のランタイムがインストールされていましたよね?
ときどき文字化けしますってメールとかくるので、英語版のランタイムが入っていたら
「日本語版にしろやゴルァ」ってメッセージをだしたいのですが、
どうやったら判断できるでしょうか?
表示先ですけど、MsgBoxなら化けないですよね?
169デフォルトの名無しさん:02/09/25 18:06
教えてください。
フレキシブルグリッドコントロールってMAX何行まで逝けるんですか?
12501行目に行を追加しようとするとあぼーんしてしまいす。
170のの太:02/09/25 18:12
12500件も一度に表示させる必要あるの?
表示件数の上限を超えましたとかメッセージだして
アプリ側で表示件数制御させたら?
>>167
SELECT MSysObjects.Name FROM MsysObjects where type=1;
で出来ると思います。
172デフォルトの名無しさん:02/09/25 19:16
よ〜しらんけど、表示も遅くなりそうだし、
配列で保存しておいてある程度スクロールしたら書き換えるようにするもんじゃないの?
>フレキシブルグリッド
173分かる人お願い:02/09/25 20:28
花見.bmpをPicture1.pictureにセット
"a"をかく
Picture1.ScaleMode = 3
Picture1.FontSize = 100
Picture1.CurrentX = 0
Picture1.CurrentY = 0
Picture1.Print "a"

'Picture2にPicture1をコピーする
Picture2.PaintPicture Picture1, 0, 0

このときPicture2には花見.bmpだけで、
プリントした"a"が表示されません。
どうしたら"a"も表示できるか教えてください。
174デフォルトの名無しさん:02/09/25 21:21
すいません、質問させて下さい。
test.mdbというMDBにTESTとTMP_TESTという2つのテーブルがあります。
(二つのテーブルはまったく同じ形です)
TESTには一件のレコードがあり、SELECT文の実行でrs_testに取得します。
rs_testに格納されたレコードをrs_test2にコピーして
TMP_TESTテーブルにINSERTを行いたいのですが、どうしたら良いのでしょう?
色々試行錯誤してみたのですが、駄目でした。
どなたかアドバイスお願いします
175174:02/09/25 21:22
これがソースです。

Dim cnn As New ADODB.Connection ' ADOコネクションオブジェクト
Dim rs_test As ADODB.Recordset
Dim rs_test2 As ADODB.Recordset
Dim str_SQL As String

' 接続
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\test\test.mdb;"

Set rs_test = New ADODB.Recordset
Set rs_test2 = New ADODB.Recordset

str_SQL = ""
str_SQL = "SELECT * FROM TEST"

rs_test.Open str_SQL, cnn, adOpenStatic, adLockPessimistic
rs_test2.Open "TMP_TEST", cnn, adOpenStatic, adLockPessimistic

Set rs_test2 = rs_test.Clone

rs_test2.AddNew
rs_test2.Update

rs_test.Close
rs_test2.Close

' 切断
cnn.Close
>>126
正直に言えよ。ホントはItemCheckじゃなくてItemClickなんだろ?
>>127
VB.NETネタは専用スレにお願いしまふ。
でもって、マルチポスト先でレスついてまふ。
17837:02/09/25 21:47
>>176
うぉ、ホントじゃん。その通りって言うかなんでItemCheckなんて書いたんだか全く分けわからんです
>>178
何で書いたかわからないだと? ただの誤植だろ。heとliの違いしかないからな。
間違えても当然だ。それくらいわからんのか。
18037:02/09/25 21:57
うむ、まぁそうではありますが。。
>156 (= >162)
SQLDMOでも使ってくれい。
182:02/09/26 09:27
>>174
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\test\test.mdb;"
cnn.Execute "insert into TMP_TEST select * from TEST"
cnn.Close
183162:02/09/26 09:31
>>171

これが 一番 妥当そうですね。
http://www.zenko3.com/tips/access_system_object.html
に 詳しくかかれてました。
184 :02/09/26 10:09
[Access2000]

VBからMDBへADOで接続し、
MSysObjects内のNameプロパティ値を取得しようと思ったのですが、
「MSysObjectsの読み取り権限がない」
というエラーメッセージが表示されてしまいます。
全てのオブジェクト名(テーブル、レポート、モジュール)を取得したかったのですが、
なにかよい方法はありませんか?
185 :02/09/26 10:52
テーブル名一覧取得

Dim cnnDB As ADODB.Connection
Dim rstList As ADODB.Recordset

Set cnnDB = New ADODB.Connection

' 接続を開きます。
With cnnDB
.Provider = "MSDASQL"
.Open "DSN=DSN名を書く"
End With

' テーブル スキーマ行セットを開きます。
Set rstList = cnnDB.OpenSchema(adSchemaTables)

' 結果をループして、イミディエイト ウィンドウ
' に名前と種類を出力します。
With rstList
Do While Not .EOF
If .Fields("TABLE_TYPE") <> "VIEW" Then
Debug.Print .Fields("TABLE_NAME") & vbTab _
& .Fields("TABLE_TYPE")
End If
.MoveNext
Loop
End With
cnnDB.Close
Set cnnDB = Nothing
186184:02/09/26 10:59
答えろオラ
DAOツカエ
DAO最強
DAOマンセー
188:02/09/26 11:32
>>184
Dim str As String
Dim ac As Access.Application
Dim ag As Object

Set ac = New Access.Application
ac.OpenCurrentDatabase "c:\db1.mdb"
For Each ag In ac.CurrentDb.TableDefs
  str = str & ag.Name & vbNewLine
Next
For Each ag In ac.CurrentProject.AllReports
  str = str & ag.Name & vbNewLine
Next
For Each ag In ac.CurrentProject.AllModules
  str = str & ag.Name & vbNewLine
Next
MsgBox str
アクセスが入ってないとダメぽ?
190:02/09/26 11:59
>>189 = >>184
持ってないんですか?
191184:02/09/26 12:48
>>189
>>190

オフィス2000が インストールしてあります。
あと、OSは XPです。
192デフォルトの名無しさん:02/09/26 13:09
DataGridの列数はどうやって増やすのですか?
プロパティ上にColumnなどのプロパティが見当たらないんです。
どなたかよろしくおねがします。
TWAINを使ってしてスキャナーを操作したいのですが、どうしても上手くいきません。
プレビューは出来たのですが、パソに取り込む事が出来ません。
取込する前に関数から戻ってきてしまっているみたいです。
よろしくお願いします。

また、TWAINの操作方法のサンプル等が有りましたらこちらも教えて貰いたいのですが・・・
194うきくん:02/09/26 14:33
自分のPCのシステム秒が50になったときに、
実行させてる画面で、テキストボックスと
コンボボックスが消えちゃうんですけど。。。
visibleがfalseになる感覚です。

助けてください。
195184:02/09/26 14:47
システム病ってなによ?
いまさらですが...

>>120 :118 :02/09/24 23:53
>>皮肉というより問題定義と言った方がいいな。

問題提起の間違いですか?ププ
197 :02/09/26 15:07
? len("3333123")
とやると
7が表示されます。

? lenb("3333123")
とやると
14となります。

実際、バイト数は11のはずなんですが、どうしたら11と取得できるのでしょうか?
>>197
VBはUnicodeで文字を管理しているので半角も2バイトです。
>>188
どうでもいいことだが、strという変数名はいやだなあ。
>>197
FAQだけど
LenB(StrConv(文字列, vbFromUnicode))
>>197
普通は LenB(StrConv("hogeほげ",vbFromUnicode)) かな。
他に方法あったかな?
202 :02/09/26 16:19
ActiveXDLL側で、そのDLLを呼び出した側のウィンドウのハンドルを
取得できるのでしょうか?
203デフォルトの名無しさん:02/09/26 17:53
スタンダード版を買ってきてインストールしようとしたのですが、
最初の方のコンポーネントチェックでIE6でなと駄目と言われて
無理矢理インストールされそうになります。

2chのAAの関係でどうしても今使ってるIE5.01を残したいのですが、
IE6を入れてからIE5.01に戻すなんてことはできるのでしょうか?
ひょっとしてIE6を入れなくてもインストールできる方法があったりします?
204デフォルトの名無しさん:02/09/26 18:01
>>203
VMwareで解決!
>>203
.NET?
206デフォルトの名無しさん:02/09/26 18:20
>>204
何のことか分からないので検索してみます。

>>205
はい、VisualBasic.net Standard です 
>>203
.NETって事は、OSは2000かXP使うんだろ?
だったらIE6でも何もせずにフォント設定できるからAA問題なしじゃん。

仮に9x系でもズレを直すパッチってあるぞ。

つうわけで、IE6いれなされ。
208203:02/09/26 18:37
え、IE6でもずれないんですか?
OSはWindows2000の英語版使ってます。
とりあえず試してみますね。
駄目だったらそれまでということで(^^;
みなさんありがとうございました。
209みやさん:02/09/26 19:07
VB(Access)ではNULLと空の文字列("")って同じですか?
210デフォルトの名無しさん:02/09/26 19:16
・オ・ヨ・ヘ・テ・ネ・゙・ケ・ッ、霹タ、ケ、?、ヒ、マ、ノ、ヲ、キ、ソ、鬢、、、、ホ、ヌ、キ、遉ヲ、ォ。」
211デフォルトの名無しさん:02/09/26 20:16
>>209
 「VB(Access)では」っていう書き方が気になるが
 違うものだろ 普通 <NULLと空の文字列("")

212ふぅ:02/09/26 21:25
VBで、FlashGetや、Irvineにあるような
分割ダウンロードを実装するにはどうしたらいい?
ちなみにもう普通のダウンロード部分は出来てるんですが・・・。
まず最初に普通にGET投げてContent-Lengthを得る。
その値を分割数で割り、
それぞれRangeヘッダ付けて分割数ぶんだけコネクション張りってな感じでは。
214ふぅ:02/09/26 22:03
>>213
あんたデキるナ?
215デフォルトの名無しさん:02/09/26 22:23
サブネットマスクを得るにはどうしたらよいのでしょうか。
そりゃやろう思えばできるんじゃないかな。
でも既存のソフトに対抗できるクラスのものをVBで作ろうとしたら、
無謀とういうもので、やろうとは思わん。
217ふぅ:02/09/26 22:43
>>213
どうもです。
>Rangeヘッダ付けて分割数ぶんだけコネクション張り
ここが私が知りたかった核心部分でした。助かります。

ちなみに、こんなことしてる理由はといいますと、実は
ダウンロードツールを作ろうとしているのでは無いです。
とあるオンラインゲームを作ってるんですが、そういうのってソフト側から
自動でパッチ落としてきて適用しますよね。
そのパッチを落とすときに必要っぽいんですわ。
218216:02/09/26 23:08
あ、>>214は「あんたデキるナ?」って書いてあったのか。
「あんたデキる?」って聞かれたのかとオモタ。
219デフォルトの名無しさん:02/09/27 01:03
>>217
なあVB初心者スレだぜ。
>>219
だからなに?
>>220
人工無能ですか?
>>221
質問に答えるのを拒絶したか。答えられないなら別にそれでいいがね。
>>222
コマンドまたはファイル名が違います.

C:\>
224デフォルトの名無しさん:02/09/27 02:15
VisualBasic6.0でクラスにMultiUseプロパティを定義してActiveXDLL
を作っています。

おもに、IIS上のASPからCreateObjectで関数を呼び出して使うた
めです。その関数は、別のWebサーバへHTTP通信をして値を取得
するという動作をします。

HTTP通信をするためにWinsockコントロールを使用しました。開発環境
(Windows2000)では動作しましたが、それをWindows2000Server上
で動かそうとするとWinsockのConnectでコケてしまうんです。

セットアップ媒体を作成したり、ocx周りの不足は散々確認したのですが
どうしても動きません。同じソースをNT4.0Server上で展開してステップ
実行して確認すると動作します。pingも通ります。他のコントロールは
使っていません。

なにか考えられることはありませんか・・・。
225224:02/09/27 02:38
コケるというのは、間髪入れずに、接続エラー番号9を受信して
しまうと言うことです。
226 :02/09/27 09:19
プログラムは ベテランですが VBは 最近、始めたので
初心者ですが、何か?
>>226
お前、ふぅ?
228FIGHT:02/09/27 09:50
現在VB6.0SP5.0を使用しております。TreeViewコントロールでエクスプローラのような階層の
表示をさせております。
例)
+神奈川県
 +蒲生町
 +米五町
+東京都
 +安芸町
 +三輪町
のように上記のようなデータがあるとします。(100件ほど上記のデータが続きます)そこで検索
の画面をだして該当する場所を指定したいのです(カーソルが移る)「神奈川県」の「米五町」を指定
させた場合そこの階層が開いてわかるようにしたのです。何かよい方法はないでしょうか?
サンプルなどがあればそこのHPなども紹介して欲しいのですが・・・。
よろしくおねがいします。
229 :02/09/27 10:12
>>228

町名が 複数ある場合は、どうするんだ?
230FIGHT:02/09/27 10:14
>229
ユーザー側に検索させる時は、「県」と「町名」を必ず指定させます。
町名の重複はあっても県名の重複はないですよね。
231 :02/09/27 10:17
県のすぐ下が町ってのも変だに。

東京は
東京都なんとか区なんとか 1−1−1
というふうに 町名がつかない場合がある。
神奈川県なんとか市なんとか町 なんとか 1−1−1
というパターンもある。
また、田舎だと
なんとか県なんとか郡なんとか町なんとか大字なんとか小字なんとか 1
とかいうのもある。
つーか
配列に 階層に入ってるもの(入れるときに)別に入れてやって
その配列で、何番目か調べて 開けばいいじゃん。

っーか TreeViewの何番目を開けってのは知らん(爆)
232:02/09/27 10:17
>>230
ツリービューにノードを追加する時にキーを設定する。
キーは検索入力させるデータ("神奈川県米五町"など)と同じにする。
あとは検索画面(テキスト検索ならInputBoxでいいんじゃない)を表示して
その返り値をtre.SelectedItem = tre.Nodes("神奈川県米五町")って感じにすれば出来上がり。
>>228は中島みゆきオタ
234FIGHT:02/09/27 10:23
>231
>232
なるほどそういう手もありますね。
早速参考にさせていただきます
ご教授ありがとうございます。
>233
えっと、中島みゆきの歌の「ファイト」ですかね?
ギリギリわかりました。ちょっとかんがえてしまいました。
結構古い歌ですね。なつかしい。ちなみにオタではありませんyo。

235:02/09/27 10:26
232補足
存在しないキーを指定した場合はエラーになるのでその対応も忘れずに。
>>235に補足
キー文字列には罠があるので注意。勝手に文字の同一視したりする。
できればHexエンコードなどを行った方が安心。
237:02/09/27 10:29
>TreeViewの何番目を開け
TreeViewを追加すると自動的に追加された順番でインデックスが付加されます。
後は同様にtre.SelectedItem = tre.Nodes(インデックス)って感じです。
238:02/09/27 10:30
237訂正 TreeViewを追加→TreeViewにノードを追加
239 :02/09/27 10:42
ループ処理で ListBoxにアイテムを追加しているんですが、
追加する件数が多いので、ListBoxの表面に出てる部分の数を追加した
時点で、一旦表示したいんですが、可能でしょうか?

なお、表示後、listbox1.AddItemを 続けます。
240224:02/09/27 11:10
>>225の続きです・・・。

同じクラスをPrivateにしてexeを作成したら
アッサリ動作しました。ActiveXDLLではダメな
ようです・・・。
VB6.0でWebBrowserを使いVBのフォームの中にページを表示させるようにしました。
それでなんですが表示されたページの懸賞などの入力フォームなんかに自動入力させたいのですが
教えてください、お願いします
VisualBasic6での質問です。

コモンダイアログで選択した複数のファイルを、
1つずつ取り出したいのですが、うまくいきません。
実際、選択したファイル群は、

"パス ファイル名1 ファイル名2 ・・・"

のようにスペースで区切られた形で取れるのですが、
Split関数を使って以下のようにしたいのですが、だめでした。
(1番目の配列にすべて入っています・・・)

F() : 配列
Files : ファイル群

F=Split(Files," ")

Split関数の使い方の間違い、またはその他のよい方法がありましたら
お教え願います。
>>242
それホントに半角スペース区切り? NULLだったりしない?
コモンダイアログコントロールは使ったこと無いから知らないけど、
APIならNULL区切りだから、Split(Files,vbNullChar)ってやらなと
駄目だと思うが。
244 :02/09/27 12:38
>>242
スペース区切りだったら C:\My Documents や C:\Program Filesは
どうなる?
>241
君の文章には「何を」という言葉がぬけているぞ。
>>242
ロングファイル名を有効にするフラグを立てた場合はNULL区切り、
無効にする場合はスペース区切りだな。
ちゃんとコモンダイアログのヘルプ(Flags プロパティ)に載ってるよ。
APIの場合でも同様だな。
247241:02/09/27 12:48
あ、すいません。
自動入力させたいのは、iniファイルから読み込んだデータです。
懸賞なんかであれば名前や住所などです。
では改めてお願いいたします。

>245さん、ご指摘ありがとうございます。今自分で文章読んでみてアホだなと思いました。
248242:02/09/27 12:49
MSDNより
---
[ファイル名]ボックスで複数のファイルを選択できるようにします。
ユーザーは、実行時に Shift キーと上下の方向キーを使って複数の
ファイルを選択できます。
複数のファイルが選択されると、選択されたすべてのファイルの名前を
含む文字列が FileName プロパティに設定されます。
FileName プロパティの文字列内のファイル名は、スペースで区切られます。
---
のようになっています。
特にスペースとしかかかれていません。一応全角、半角、space(1)で
確認しましたがだめでした。

実際の戻り値は、debug.printしたところ、
C:\Documents and Settings test.txt test2.txt
のようになっています。

C:\Documents and Settingsの部分はどうなるんでしょう?
249242:02/09/27 12:54
>>243 さん
>>246 さん

cdlOFNLongNamesを設定して、vbNullCharでSplitできました。
ありがとうございます。

>>244 さん

実際上記の方法で取得したときには、
1番目の配列 "C:\Document and Settings"
2番目の配列 test1.txt
・・・
となりました。
>>249
>>248のMSDN、下の方の「解説」の部分にちゃんと書いてあるので読んでおくよーに。

もしかしたら、OSのバージョンなどでcdlOFNLongNamesかcdlOFNExplorer
あたりが勝手に立ってしまうことがあるのかもしれない。無いかもしれないが。
251:02/09/27 13:49
>>239
Refresh(かDoEvents)すればいいんじゃないかな。
でもひとつ追加するたびにRefreshするととても遅くなるので
ループカウンタがいくつになった時、とかにすればいい。
もしくはループを分割してしまえばループ内で分岐判定する必要も無くなる。
コード汚くなるけど。
252 :02/09/27 13:55
>>251

そのボックスに表示できる数にいったら、一旦 Refreshさせてるけど
ダメなようです。
その後は、Refreshさせてませんが。
DoEventsはよ。
254 :02/09/27 14:26
>>253
ああ なるほど!

DoEventsでokだ。
さんくすこ
255 :02/09/27 14:28
>>251
Refresh(かDoEvents)って 書いてあったらから 同じもんかと
思っちゃったヨ!

Delphiだったら どうやったらいいか知ってたんだけどね。
VBは あんましやってなかったからさ。
おかげで 表示が 速くなったヨ。
Winsockコントロール使って、サーバアプリケーションを作っています。

ConnectionRequestイベントの中で、acceptしたあと、
すぐにErrorイベントが2回続けて発生することがあるんですけど。

エラーの内容は、エラーコード=10053 「タイムアウトまたは他の問題によって、接続が中断されます」。

具体的になにが原因なのでしょうか?

257デフォルトの名無しさん:02/09/27 14:47
LAN上にあるVB製exeを起動したら、
ランタイムやコンポーネント(ocx)などは、
そのLAN上のマシンから読みとられるんですか?
それとも起動したマシンから読みとられるんですか?
258 :02/09/27 14:59
Dim lRtn As Long
lRtn = SetWindowPos(form1.hWnd, -1, 0, 0, 0, 0, &H40)

これで 最前面に表示させようとしてますが、
実行すると タスクバーにもうひとつバーが表示されて
ほかの画面をクリックすると それが 最前面になってしまいます。

常に 最前面にするには どうしたらいいのでしょうか?
>>257
よみとられません。
>>256
サーバーアプリはVBじゃないほうがいいと思う
>>258
Private Const HWND_TOPMOST = -1
Private Const SWP_SHOWWINDOW = &H40
Private Const SWP_NOACTIVATE = &H10
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_NOMOVE Or SWP_NOSIZE

多分、SWP_NOMOVEとSWP_NOSIZEを入れてないせいでしょう。
262258:02/09/27 15:20
lRtn = SetWindowPos(Me.hWnd, -1, 0, 0, 0, 0, &H43)
とやったら OKでした〜〜

ActiveX DLLだと Form1のハンドルという取得の仕方ができないらしい
263秋山蓮:02/09/27 15:32
>>262
はしゃぐな!!
264デフォルトの名無しさん:02/09/27 15:37
VB画面(frmAA)上からコマンドボタンを押したら
MDBへのデータ登録を行い、
登録が上手く行ったら
その画面(frmAA)のForm_Load処理を通すようにしたいんですけど、
その場合、

unload me
frmAA.show

と書く以外に良い方法ありますか?

>>264
単純にForm_Load呼び出したら?って言うかその仕様妙かも。
VB6+ADOでアプリを組んでいます。

あるレコードのフィールドAが更新されたら、その値に応じてフィールドBを更新しようと、
FieldChangeComplete イベント内に
pRecordset.files("B").Value=hoge
と言うコードを書いたのですが、「コンシューマのイベントハンドラはプロバイダの再
入不可能なメソッドを呼び出しました」となりうまくいきません。WillChangeFieldイベ
ントでも同様でした。

いい解決方法があれば教えていただけませんか。

OLD DB Provider は ODBC 、サーバはPostgreSQLを使用しています。
>>241
無視されてかわいそうだから教えてあげる。
でもその手の垢取りツールまがいのものはあんまり好まれないから
こういう場で堂々と質問するのはちょっとマズったね。

それで、質問についての回答だけど。
ずばり、良い方法は無いと思って良い。俺も前やったことあるので。
無理矢理やるなら、WebBrowserコントロールにフォーカスを当てて
SendKeysでTabキーを送ってやれば、WebBrowser内で次のフォームか何かにフォーカスが移る。
そうして{TAB}{TAB}{TAB}{TAB}とやっていって、入力欄にフォーカスが行ったら
これもスマートな方法じゃないが、一旦入力したい文字列をクリップボードにコピーし
SendkeysでCtrl+Vを送る。(貼り付け)
こうすることでWebBrowserのフォーカスのある項目に文字列をセットできる。
次の項目にまた文字列を入れたい場合は、一旦クリップボードの内容をClearしてから
その項目に入れたい文字列をクリップボードにまたコピー、SendKeysでCtrl+V。
みんなよけろ あきやまれん だけは ゆるせない!
269デフォルトの名無しさん:02/09/27 17:30
VBでシステム時刻(通算秒)を取りたいのですがどうしたら良いでしょうか?
わかる方教えてください。お願いします。
Time関数ちゃうのン?
271デフォルトの名無しさん:02/09/27 19:05
>>241
受け取ったHTMLのStringを解析し、
input タグ内の value プロパティを任意の文字列に入れかえたHTMLを表示ってのが好きそうなやりかただけど。

何に使うのかわからないけど、決まりきったフォーム内容なら
最初からPOSTメソッドを作成して送るほうが手っ取りばやいと思うけど。

その場で図書券のスリーマンモスの時はそれにしたなぁ(藁
クッキーデータも取得して作成しなければならなかったけけど。
272デフォルトの名無しさん:02/09/27 19:08
>>271
ユニックスタイムスタンプみたいに、
通算秒にできればいいんですけど。
TIME$ でふたつの時間さを求めるには、秒や分が60までしかなかったり、
23の次が0だったり、
2月が28や29だったり30や31の月があったりするところで大変なので。
273271:02/09/27 19:11
つづき。
または、onLoad関数に、

document.forms[0].name.value='hoge'

とかいうのを付加してHTMLを表示させるとか。
274デフォルトの名無しさん:02/09/27 19:17
>>272
timerじゃだめなのか?
275デフォルトの名無しさん:02/09/27 21:23
ディスプレイの解像度を変更してフルスクリーン化するプログラムを作りたいです。
DirectXとか使わないと無理なんでしょうか?
ChangeDisplaySettings?
277241:02/09/27 21:33
>>267 >>271
お二方ありがとうございます!!
>でもその手の垢取りツールまがいのものはあんまり好まれないから
>こういう場で堂々と質問するのはちょっとマズったね。
なるほどそうだったんですか・・。大変勉強になりました。
では、早速両方の方法で試して見ます。本当にありがとうございました!!
>>272
Time関数から時分秒がわかるから、後は掛け算足し算だけじゃん。
279デフォルトの名無しさん:02/09/27 21:55
サブネットマスクの取得はどうすればいいのでしょうか。
280デフォルトの名無しさん:02/09/27 21:58
サブネットマスクって洗濯機に入っているゴミを集めるあれですか?
281   :02/09/27 22:02
>>280
煽りで程度がわかるな。
282デフォルトの名無しさん:02/09/27 22:09
ある絵の上にマウスポインタを持っていくと、別の画像に切り替えるようなことはできますか?
283デフォルトの名無しさん:02/09/27 22:24
>>282
できます。
284初心者:02/09/27 23:02
質問させていただきます。

フォーム上にコントロールがいくつかある時、現在フォーカスを持っている
コントロールは Screen.ActiveControl で確認できますが、
「今現在の"一つ前"にアクティブだったコントロール」を取得するにはどうしたらよいですか?
グローバルな変数を用意して、全てのコントロールの LostFocus 時に
コントロール名を保存しておく……と、これくらいしか思い浮かびません。

よろしくお願いします。
285デフォルトの名無しさん:02/09/27 23:15
Window98なんだけど、どういうシリアルキーで登録したかみるにはどうしたらいいでしょうか?
>>284
なんでそんなものを取得したいの?
何をやりたいのかわからんけど、
たぶん別のアプローチで解決できると思うよ。
どうしても!ってことなら、
サブクラス化とかで方法がない訳でもないだろうけど。(思いつき発言)

一つ前のアクティブコントロールなんて
普通必要がないから簡単に取得できないんだと思わない?
287284:02/09/27 23:31
>>286
ありがとうございます。
一つ前のアクティブコントロールを取得したい訳は、
「あるボタンが押されるとある処理が走るが、それがエラーになった場合、
 フォーカスを元の位置(ボタンをクリックする前の位置)に戻したい」
という仕様にしたいのです。

別のアプローチとはどういうことでしょうか。
>>287
「状態」を保存しておく変数をひとつ持ってそれをもとにアクティブにするコントロールを割り出すとか。
各コントロールの状態からアクティブにすべきコントロールを返す関数を用意しておくとか。
いろいろあるじゃん。
>>287
タイマーコントロールでグローバル変数にアクティブコントロールを
保存しとくってのがVB房らしくていいぞ
>>287
タイマーコントロールで1秒おきにグローバル変数にアクティブコントロールを
保存しとくってのがVB房らしくていいぞ

291284:02/09/28 00:03
>>288
ありがとうございます。

>「状態」を保存しておく変数をひとつ持って〜
つまり、状態Aならこれ、状態Bならこれ……という感じですかね。
その状態の"変化"を感知するにはやはりすべてのコントロールのイベントプロシージャが
必要になってくるのかな、と思いますが、どうでしょうか。

>各コントロールの状態から〜関数を用意しておく
その関数内ですべてのコントロールを調べて該当のものを返す、と。
つまりコントロールになにかしらの目印(フラグ)が必要になってきますね。(Tagプロパティを使ったり)
だとするとやはり、各コントロールのイベントプロシージャを記述する必要が……(?)。
292284:02/09/28 00:09
>>289 >>290
ありがとうございます。
タイマーを使うとは考えつかなかったです。
確かにこれで要件は満たせそうですが、極力無駄なイベントを発生させたくないのと、
タイマーコントロールは規約で使用不可だった気が……スイマセン。
293デフォルトの名無しさん:02/09/28 00:22
>>292
タイマーはおそらくネタだから無視しろ。
294284:02/09/28 00:25
>>293
あっ、そうなんですか(笑)
失礼しました。
「そういう方法もあるな」とマジメに思ってしまいました(笑)
>>269
UNIX時間が欲しいなら、
UnixTime = DateDiff("s", #1/1/1970#, dateVB) - 32400 'JST-9
で取れる。
296:02/09/28 04:47
>>291
フォーカスの移動自体を無くせばいいと思います。
イメージコントロールはフォーカスを取得しないので、
押されてない状態のボタンの絵と押された状態のボタンの絵を
イメージコントロールで切り替えてそれをコマンドボタンの代わりにすればよろしいかと。
>>294
ネタじゃねーぞ
キーボードで操作できないボタンってのも、VBらしくてス・テ・キ。
>>297
マジだったのか。これだから VB 厨は...。
300デフォルトの名無しさん:02/09/28 15:26
VB初心者スレ
歴代1位の厨は誰ですか?
?はドラマ板のロッカーの花子さんスレにも書き込んでたな
VB6でFormのタイトルバーを独自のものにしたいです。(色とか)
どうやれば出来ますか?簡単には出来そうもないので質問してみます・・・
>>300
お ま え
>>302
タイトルバーなしにして、自分で描画すればー。
305300:02/09/28 17:51
>>303
そんなバナナ
306284:02/09/28 21:06
>>296
ありがとうございます。
イメージを使った「偽コマンドボタン」ですか。
おもしろいかもしれませんね。

結局、「一つ前のコントロールにフォーカスを移す」仕様はやめました(笑)。
そこまで要求されませんでした。
皆さんありがとうございました。
307デフォルトの名無しさん:02/09/29 00:59
すみませ〜ん。
ピクチャーボックスで文字を表示してるのですが、
ピクチャーボックスに自動改行機能を付けるには
どうしたらいいのでしょう?

それと、適当な文字が左から何ドット上から何ドットの
位置にあるか取得できたら、自動改行ができるような
気がするのですが、取得方法はありますか?
308デフォルトの名無しさん:02/09/29 01:06
>>307
プログラムしろよ!
なにかわからないところがあるならそれを質問しろ。
309:02/09/29 02:22
>>298
キーボード操作なんて簡単に実装できますよね?
>>299
タイマー使うのそんなに実害あるかな?そんな事より、
使う使わないはともかく、一番短いコードで実現できる点を評価したい。

自分じゃ何も思いつかない能無しが見当違いの煽りしてんじゃないよ。
とかたまには言ってみたりしていいですか?

>>301
別の人ですね。今のところ?はこのスレでしか使ってないです。
でもあのドラマは何回か見ましたよ。面白かった。
>>307
TextWidthで文字幅がわかるから、文字の描画位置は自己管理しる。
311310:02/09/29 04:12
APIのDrawText関数を利用する手もあるかな。
3121:02/09/29 08:35
文末の vbCrLf を削りたいのですけど、どういった方法がいちばんスマートでしょうか。

たとえば、Foo = "ABC" & vbCrLf & "DEF" & vbCrLf の場合の、
Perl で言うところの chop Foo や、Foo =~ s/\n$// です。
313312:02/09/29 08:36
すんまへん。あげます。
>>312
hoge = Replace(hoge,vbCrLf,"")
じゃ駄目なの?
315312:02/09/29 08:58
>>314
それだと文中の vbCrLf も削られます。
>>315
あぁ、なるほど。
If Right$(hoge,2)=vbCrLf Then
  hoge = left$(hoge,Len(hoge)-2)
End If
ってやって地道にやるしかないよーな…。
>315
hoge = Left(hoge, Len(hoge) - 2)& Replace(hoge, vbCrLf, "", Len(hoge) - 1, 2)
か?
Perlと同じように正規表現使ってやればいいじゃん
319312:02/09/29 10:15
>>316-317
うへえ。泥臭いことしなくちゃいけないんですね。

>>318
.NET ぢゃないんです。
320318:02/09/29 10:17
>>319
> .NET ぢゃないんです。
わかってるって。
>320
Microsoft VBScript Regular Expressions 5.5を参照設定しる。(WSH5.6必要)
でもたかだかそのためだけにって感じも無きにしも非ず。
322デフォルトの名無しさん:02/09/29 11:56
VBSってここで聞いていいでちゅか?
>>307
マルチポストかよ。
>>322
おっけ。
325デフォルトの名無しさん:02/09/29 21:32
>>309
実害以前に、耐えられない仕様だ。
1秒おきの場合、
最後にTimerの関数が実行された後、ボタンが押されるまでに、
フォーカスが複数移動したらどうするんだ?

ってことは思いつかなかったんでしょうか?

すなおに TabStop = True であるコントロールの GotFocus イベントに書くのが余計な負荷をかけない。
>>325
まあまあ、VBだから許してあげてよ。
GotFocusにイベントを書くとめんどくさいから、クラスを作って
コントロールごとインスタンスを割り当ててそこから、
フォームに通知した方がいいね。
>327
サンプルきぼん
>>328
適当に作ったけどこんな感じかな。
Formにいくらコマンドボタンを置いても共通のIAllGotFocus_AllGotFocusが発生する。
この例はコマンドボタンだけ対応。他のコントロールに対応したかったら、
それ専用のClass1を作成するか、Class1を改造したり、まぁ他にも色々工夫してくれ。

<Form1>
Implements IAllGotFocus
Private m_controls As New Collection

Private Sub IAllGotFocus_AllGotFocus(ByVal ctrl As Control)
  Debug.Print ctrl.Name
End Sub

Private Sub Form_Load()
  Dim ctrl As Control
  For Each ctrl In Controls
    If TypeOf ctrl Is CommandButton Then
      Dim c1 As Class1
      Set c1 = New Class1
      c1.SetControl ctrl, Me
      m_controls.Add c1
    End If
  Next ctrl
End Sub

Private Sub Form_Unload(Cancel As Integer)
  Set m_controls = Nothing
End Sub
330つづき:02/09/29 22:13
<Class1>
Private WithEvents m_cmd As CommandButton
Private m_AllGotFocus As IAllGotFocus

Public Sub SetControl(ByVal ctrl As Control, ByVal AllGotFocus As IAllGotFocus)
  Set m_cmd = ctrl
  Set m_AllGotFocus = AllGotFocus
End Sub

Private Sub m_cmd_GotFocus()
  m_AllGotFocus.AllGotFocus m_cmd
End Sub

<IAllGotFocus>
Public Sub AllGotFocus(ByVal ctrl As Control)

End Sub
要するにDecoratorパターンだな。
332328:02/09/29 23:08
>329
thx−
なるほど。たしかにスッキリしてていいすね

Implementsってこう使うのか。。
へ〜そんなことができるんだ。
<IAllGotFocus>
↑ってどういうこと?モジュールかな?
いちばん便利なのはGoToだ
335みのもんた:02/09/30 10:53
>>334
正解!
336:02/09/30 11:37
>>325
>実害以前に、耐えられない仕様だ。
つまり目立った実害は無いという事ですか?
タイマーイベント内もたった一行だし余計な負荷がかかると言ってもたかが知れてますしね。

>1秒おきの場合、最後にTimerの関数が実行された後、ボタンが押されるまでに、
>フォーカスが複数移動したらどうするんだ?ってことは思いつかなかったんでしょうか?
インターバルを調節すればいいってことは思いつかなかったんでしょうか?

>すなおに TabStop = True であるコントロールの GotFocus イベントに書くのが余計な負荷をかけない。
だったらそう書けばいいのになんで余計な煽りするんですか?
質問者が他に手段はないかと聞きに来てる時に手段の1つとして上げてる、適切なレスだと思いますが。

つまらない言い合いしてすみません。。。
でも自分的にはくだらない煽りより面白い意見を聞きたいと思うんです。

>>329
そんなことが出来るんですか。勉強してみます。
>>336
> インターバルを調節すればいいってことは思いつかなかったんでしょうか?

インターバルを調整しても、本質的には解決しませんよ。
Timerは優先順位が低いので、負荷がかかるとイベントが後回しになり
取りこぼすことになります。
338デフォルトの名無しさん:02/09/30 15:05
date型の変数の初期化ってどうするのが最良ですか?
339デフォルトの名無しさん:02/09/30 15:11
ファンタジィと呼ばれるピンク色の汁を出すよ
340338:02/09/30 15:17
Emptyを代入。それでいいのだな?
341325:02/09/30 15:34
>>336
以上のような理由でネタもしくは、
質問者を混乱させようという悪意かと思っただけ。
なので、質問者が混乱しないようにネタだと注意をしておいただけ。
あおってはいない。

>>337にもあるとおり、実際取りこぼしのないようにインターバルを
を小さくすればするほど余計な負荷がかかる上に、
どれだけ小さくしても完全ということはない。

>質問者が他に手段はないかと聞きに来てる時に手段の1つとして上げてる、適切なレスだと思いますが。
質問を良く見てみろ。
この手法はすでに質問者が自分で言っていて、他にいい手段はないのかと問ういている。
だからわざわざ質問者に対して書くべきことでもなかったのだ。
342デフォルトの名無しさん:02/09/30 15:44
質問です。

Dim Date1 As Date
Dim Date2 As Date

Dim Min As Integer

Date1 = "2002/09/30 12:00:00"

で、Date2にDate1のMin分後の日時を入れたいんですが、
スマートな方法教えてください。
お願いします。
343デフォルトの名無しさん:02/09/30 15:47
>>342

DateAdd 関数
344デフォルトの名無しさん:02/09/30 15:51
>>343
ありましたね。
ありがとうございました。
345327=329:02/09/30 16:43
>>333
あぁ、そうか。使ったことが無い人にはいきなり名前だけ書いてもわからんわな。

<Form1>はフォームモジュール、<Class1><IAllGotFocus>はクラスモジュール。
ちなみにIAllGotFocusのIはこれがインタフェースであることを表している。
VBはクラスもインタフェースも宣言が同じなので名前でわかりやすくしている。
VB6.0初心者です。相談に乗ってもらいたくて来ました。モマー(;´Д⊂ 
MSDNのヘルプを見ながらTCPのサーバーを作ってます。
クライアントからの通信を、クライアントそれぞれに返したいのですが、
色々いじっても、1つのクライアントにしか返送できませんでした。
(最初に立ち上げたクライアントしか返らない、通信を送ったクライアントにしか
 返送しない。最後に立ち上げた〜以下略。下のソースは、最初に〜の一部です。)

Winsock1(Index).GetData strData
txtData(Index).Text = strData

For i = 1 To intMax Step 1
If Winsock1(i).State = sckConnected Then
Winsock1(i).SendData strData
End If
Next

通信が確立しているソケット全てに対して、データを送っているイメージで、
プログラミングしています。
ちなみにクライアントとサーバ間はどれも通信はできていました。
通信できる状態でも、sckConnected 以外の値を取ったりしているのでしょうか?
それとも何か根本的な間違いをしてるんでしょうか?
わかる方がいたら教えて下さい、お願いします。
347デフォルトの名無しさん:02/09/30 17:46
DeveloperとかProfessionalっていうのはどう違うんですか?
単語の意味はわかるがあらわそうとしているものがわからない。
348デフォルトの名無しさん:02/09/30 18:17
6.0Enterprise Edition に付属のMSDEは配布可能なんでそうか?
349333:02/09/30 18:18
>>345
ヘ〜。
ありがと〜。
>>347

ちゃんとパッケージに書いてあるよ。
(あなたがVBを不法な手段で手に入れたのでなければね)

メーカーのテクニカルサポートサイトにも明示されているはず。
351デフォルトの名無しさん:02/09/30 18:38
>>350
あんがと。
まだ買ってないので<パッケージ
どれがいいかなと。

microsoftのページみてるけど、書いてることがいまいち意味がわからなかったりする。

例:右記の製品インストール時の追加必要システム > Microsoft Data Engine

これがあらわしてることがわからない。
352デフォルトの名無しさん:02/09/30 18:44
それから、6.0にするか.NETにするかもなやみどころ。
>327 (=>329 =>345)
合格です。このスレでコテハンになる許可が下りました。
354346:02/09/30 19:40
http://support.microsoft.com/default.aspx?scid=kb;ja;JP409932
現在上記のページで、winsockをコントロール配列で使う時の制限事項で、
同様の問題の解決方法が載ってました。
Winsock1(i).SendData strData
DoEvents
このようにDoEventsが必要だ、との事です。お騒がせしますた。
355デフォルトの名無しさん:02/09/30 22:55
はじめまして。

RaiseEventを使ってイベントを発生させております。
イベント発生先の処理が終わるまではイベント発生元の処理は
進展しないのでしょうか?

スレッドのように処理を同時に行いたいのですが、
VBではどのような方法があるのでしょうか?

みなさま、宜しくお願いします。
>>355

VBのバージョンを明記すべき。
VB6.0以前と.NETでは、答えが全然違うものと思われ。
(つうか、VB6.0以前では、スレッド並行処理は不可能では??)
357デフォルトの名無しさん:02/09/30 23:15
>>356
できることはできるがサポート外
358355:02/09/30 23:17
申し訳ありません。
VBのバージョンは6.0です。
>>357
それをできるというのはどうかと思うが
360デフォルトの名無しさん:02/09/30 23:18
皆さん、VBの検定は難しいのでしょうか??今年か来年に受けるのですが・・・・経験者の方いますか??
>>360
そんなもんあるのか
>>361
MSがやってるベンダー試験のことじゃないか?
VB以外にもNT ServerとかSQL Serverとか色々有った気がする。
363デフォルトの名無しさん:02/09/30 23:33
VC検定ってのも聞いたことがあったが本当にそんなのがあるのか。
MSぼろもうけだな。
364360:02/09/30 23:41
学校でVBの授業があって、検定に向けて授業をやってるんですけど・・・
どのくらいの難易度なのか分からないんですよね・・3級だからそんなに難しくは
無いと思うけど・・・どうなんでしょう??
365362:02/10/01 00:11
MSのベンダー試験じゃないようだ。
「VisualBasic技術者能力認定試験」っていうのがあるみたいだね。
初めて知った。難易度は知らん。

これの本試験対策講座をやってみたいのだがどうしたもんか(w
http://www.it-system-jp.com/vbkentei3.html
366デフォルトの名無しさん:02/10/01 00:32
始めまして。
WinXP,VisualBasic6.0-SP5でリッチテキストボックスを使ったテキストエディタもどきを作っています。

タブキーを押すと出る空白の長さを標準(半角スペース8コ分?)から変えようと思っています。
で、ここの過去スレッドに書いてあった「EM_SETTABSTOPSメッセージをSendMessage APIでテキストボックスに投げる」
を試してみたところ、普通のテキストボックスだと上手く行ったのですが、リッチテキストボックスだと動作しませんでした。
しかしMSDNにはテキストボックスでもリッチテキストボックスでも動作すると書いてあったので、
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/editcontrols/editcontrolreference/editcontrolmessages/em_settabstops.asp
私のコードが間違っているのかもしれませんけど。。(´Д⊂

ダメだったのでまた探したところ、同じくSendMessage APIでEM_SETPARAFORMATメッセージをリッチテキストボックスに送信して設定する方法というのが見つかりました。
ただ、肝心のパラメータの指定方法が分かりませんでした。それでいまこうして質問させていただいている次第です。

「ここはこうしたほうがいい」、「こういう方法でできる」でも結構ですので、よろしくお願いします。
長文すみませんでした。

以下その方法を使って私が書いたソースです。
367366:02/10/01 00:33
文字数制限に引っかかったので分割しました。
'標準モジュールのコード---------------------
'-- API 定数
Public Const WM_USER = &H400 : Public Const EM_SETPARAFORMAT = (WM_USER + 71)
'-- API 関数
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
'-- 構造体
Type PARAFORMAT2
  cbSize As Long : dwMask As Long : wNumbering As Integer : wEffects As Integer
  dxStartIndent As Long : dxRightIndent As Long : dxOffset As Long : wAlignment As Integer
  cTabCount As Integer : rgxTabs(31) As Long : dySpaceBefore As Long : dySpaceAfter As Long
  dyLineSpacing As Long : sStyle As Integer : bLineSpacingRule As Byte : bOutlineLevel As Byte
  wShadingWeight As Integer : wShadingStyle As Integer : wNumberingStart As Integer : wNumberingStyle As Integer
  wNumberingTab As Integer : wBorderSpace As Integer : wBorderWidth As Integer : wBorders As Integer
End Type

'フォームのコード---------------------------
'-- タブ幅設定
' パラメータをセット
Dim udtParaFormat As PARAFORMAT2
With udtParaFormat
  .dwMask = PFM_TABSTOPS
  .cTabCount = ? 'ここがわからない
  .rgxTabs(0) = ? 'ここがわからない
End With
'SendMessageでメッセージを投げる
Call SendMessage(RichTextBox1.hwnd, EM_SETPARAFORMAT, 0, udtParaFormat)
RichTextBox1.Refresh

'--ここまで-------------------------------
テキストファイルを、任意の行から読み取りたい場合はどうすればいい?

一行のバイト数は不定です。

Line Inputを行分ループするしかないのかなー。
もっと高速に動作させたい。
369デフォルトの名無しさん:02/10/01 01:13
>>365
なんじゃそこは。
ソースにパスワードが書いてある。
>>368
ファイルの最初にインデックスでも持たせたら。
>>366
  .cbSize = Len(udtParaFormat) 'これを忘れずに
  .cTabCount = MAX_TAB_STOPS '=32
  for x=0 to .cTabCount-1
    .rgxTabs(x) = タブ幅 * (x + 1)
  next

タブ幅はtwipsで指定。
ちなみにヘルプにちゃんと書いてある。
>>370
インデックスを持ってもこの場合は意味無くない?

373366:02/10/01 01:28
>>371
ありがとうございます。
もうちょっとよくヘルプを見るようにします。。
374362:02/10/01 01:30
サイト覗いてたらなんかむかついてきたな。
誰かがここに直接アドレスを貼り付けてそこから飛んだら
不正アクセスにはならんよな。
普通ならちゃんとしたアクセス制限かけてあるはずだし。普通なら。
375デフォルトの名無しさん:02/10/01 01:39
>>374
だよな。HTMLソース自体にパスワードが書いてあるものを、
ページ見たからといって不正アクセスだと言われても困る。
>>372
Seek ステートメント使って読みたい位置まで移動すればいいじゃん。
377デフォルトの名無しさん:02/10/01 07:52
フォルダの判定とか、"\"で判定しています。
でも英語のソフトとかだと"/"のが多いですよね。
英語版Windowsで動かすとこの辺の仕様とか変わってくるのでしょうか?
FileSystemObject使えよ
379355:02/10/01 09:11
CreateThreadを使えばできるようなことを聞いたのですが、
VBでCreateThreadは使えるのでしょうか?
>>379
CreateThreadできることはできるのだが、スレッド内で何か操作すると
途端にアプリが落ちる(w
他モジュールやフォームをいじると落ちるんだっけかな。
よって、実際は使えない。VB6の場合ね。
VB5の場合は一応使いようによってはOKらしい。
381355:02/10/01 09:52
>>380
返答ありがとうございます。
スレッドではORACLEへのストアドコールを行います。
数分返答がないようなストアドをコールします。

スレッドが処理中(ストアドコール中)にGetExitCodeThread,
ExitThread等を行うとやはりエラーとなるのでしょうか?

自分で作成したDLL内部でスレッド生成を行いたいのですが、
重い処理をしてもEXEが返答待ち(固まらない)しない事を
実現したいと思っております。
>>381
スレッドを使わなくてもストアドコールとかは非同期で実行できるんじゃないか?
383355:02/10/01 10:06
>>382
本当ですか!
よろしければ実現方法を教えて頂けないでしょうか。
>>355

VBでマルチスレッドにするならActiveX DLLにするしかないかと思います。

http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/0008/com/
385382:02/10/01 10:15
>>383
すまん。しらないんだ。ADOとかで非同期で実行するという引数やらなんやら
あって常識的に考えれば出来そうだなぁと思っているだけ。
今までやったこと無い。個人的にはやりたいんだがなんで要望でないかなぁ(w
>>383
ADO をつかっているなら、 execute メソッドの options に adAsyncExecute
を指定すれば出来ると思います。

やったことないので、外してたらゴメン。
387デフォルトの名無しさん:02/10/01 11:59
すいません、超初歩的な質問なんですが…
ランダム関数で、1〜100までの乱数を発生させるのは

Int(Rnd() * 100) + 1

ですが、50〜100までの乱数が必要な場合はどの様に求めればいいのですか?
388ふなはすです(QOO):02/10/01 12:00
横スクロールのシューティングゲームのソース
(VB) があるサイト教えて♪
>>387
おまえのレスの
> Int(Rnd() * 100) + 1

Int(Rnd() * 100)  は乱数の範囲:0〜99
1 は乱数の最低値

あとは自分で考えてみ。
390デフォルトの名無しさん:02/10/01 12:14
>>389
あ!

Int(Rnd() * 100) + 50

ですよね!?
どうもありがとうございました!
>>390
・・・自信満々で間違うなよw
ネタだよな?
焦っただけだよな?
そうだと言ってくれ!
392デフォルトの名無しさん:02/10/01 12:25
>>391
え!!
違うの…

かなり自身満々だったのに
ウチュ


>>392

>>389の乱数の範囲:0〜99てのを0〜50にしないとな。
>>392
次も自信満々で
Int(Rnd() * 50) + 50
とかやってくるんだろーなー
395デフォルトの名無しさん:02/10/01 12:37
>>393,394
まんまと394の様にしようと思ってたよ…。
('・ε・`)ショボーン
+ 激しく偏り +
           + 激しく失敗 +

Int((Rnd() + Rnd()) * 51 / 2) + 50
397デフォルトの名無しさん:02/10/01 13:02
ゲッ!
俺Rnd関数、0〜1が返ると思ってた。
398デフォルトの名無しさん:02/10/01 13:18
>>396
これが正解なんですか?
ありがとうございます。
使ってみます!
399秋山蓮:02/10/01 13:19
>>390
はしゃぐな!!
Rnd 関数は 0 以上、1 未満の範囲の値を返します。
引数 number の値によって、Rnd 関数が返す乱数が決まります。
初期シード値が変わらない限り、一連の Rnd 関数が返す乱数系列は同じになります。
これは、連続する各 Rnd 関数が乱数系列の中の直前の乱数をシード値として、次の乱数を
それぞれ生成するためです。
システム タイマーから取得した新しいシード値を使って、乱数ジェネレータを初期化するには、
Rnd 関数を呼び出す前に、引数を指定せずに Randomize ステートメントを実行してください。
任意の範囲の整数の乱数を生成するには、次の式を使ってください。

Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

この式では、変数 upperbound には範囲の上限の値を指定し、変数 lowerbound には
範囲の下限の値を指定します。
>>387
おれならこうするな
do while true
r=int(rnd()*200)
if r>=50 and r<=100 then exit do
loop
402デフォルトの名無しさん:02/10/01 13:30
>>398

+ 激しく違う +
403デフォルトの名無しさん:02/10/01 13:40
>>400、401
どうもありがとうございます。
今、Accessでテストデータを1万件作るためのミニアプリ作成中なのです。
  For i = 1 To 10000
rs.AddNew
rs("Key") = Format(Int(Rnd() * 1000) + 1)
rs.Update
Next i

↑こんな感じでにRnd()はループの中にあるのでループはあまり使いたくなくて
質問しました。でも>>394の方法で上手くいきましたけど…
間違ってるのかな??ウーン、ワカラン。
>>403
任意の範囲の整数の乱数を生成するには、次の式を使ってください。

Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

この式では、変数 upperbound には範囲の上限の値を指定し、変数 lowerbound には
範囲の下限の値を指定します。
これでも分かんなきゃ人間やめたほうがいいよ。マジで。
406デフォルトの名無しさん:02/10/01 13:49
>>404
ありがとうございます。
今、その方法で取組中です。
たくさんアドバイスいただけてホント感謝です。

>>405
大丈夫です!何とか理解できました(,,゚Д゚)ギリギセーフ

すいません、入社したばかりのヘタレ女性プログラマです。
どうもアリガトございました。


>>406
(*´д`*)
408 :02/10/01 14:52
>>406

これぐらい カンタンだとレスは たくさんくるよ(w
しかも 突込みどころ 満載だったし。
409デフォルトの名無しさん:02/10/01 15:57
 VB初めて3日の初心者です。
 過去スレで一応調べてみたのですが、訊かせてください。
 どうかよろしくお願いします。
 環境はVB7.0です。

 Module1.vbに構造体を以下のように定義したのですが、

Public Structure data
{
Public x As Double
Public y As Double
}
 
 ビルドすると、
「Public class 'Form1' の外にある Friend 型を公開できません。」
 のようなコンパイルエラーが出てしまうのです。」

 構造体を別モジュールで定義したくてこんなことをしているのですが、
外部Moduleで宣言されている構造体を使うには、どのようにしたら良いの
でしょうか?
>>409
【老若】VB.net質問スレ【男女】
http://pc3.2ch.net/test/read.cgi/tech/1025848458/l50
411デフォルトの名無しさん:02/10/01 17:30
でもさ、Rnd使ってると、な〜んかいまいちランダムじゃないなぁと思うんだけども
どうでほ。
412デフォルトの名無しさん:02/10/01 17:32
カウントしてみ。ランダムさがよくわかる。
400回くらいまでは偏るけどね。(0から9までのとき)
Randomizeしてないだけとか言うなよ。
>>411
Randomizeしても同じ数値が連続したことがあった
415409:02/10/01 21:10
>410
 ごめんなさいわかんないっす…
 (:A;)ハウー

 「作成したモジュールに、フォームのインスタンスを渡す」
 ってところなのでしょうか?
416デフォルトの名無しさん:02/10/01 22:44
shell関数とOpenProcess関数ではどちらの方が
起動時間がはやいんですか?
自分でやってみるのもオツなものです
>>414 何度もRandomizeしたとか言わないでね。
>>414
100回振って、一度も同じ目が連続して出ないサイコロはイカサマです。
420デフォルトの名無しさん:02/10/02 03:29
美容室向けの予約システムを作っているのですが、
どうしてもスケジュール表(時間割)部分の作り方がわかりません。
Gridのコントロールだと時間軸の上に「10:00」というような表示ができないのでこまっています。
横が時間軸で縦にスタッフの名前でただ該当の時間がいろで塗りつぶせて
その上にお客さんの情報を書きたいのですが、
どなたかいいやり方教えていただけませんでしょうか。
よろしくお願いします。
421デフォルトの名無しさん:02/10/02 04:06
今どき
VB6で動作想定環境をWIN98にして開発するのは
VBSのHPを作るようなものでしょうか?w
>>420
いろいろ方法がありすぎて、、、

>>421
VB6でWin98の何がおかしいのか?

.netでだったら問い詰めても良いけどね。
423 :02/10/02 09:01
>>420
表示部は、ラベルを貼りまくってやれ。
表示する中身を管理して 表示しまくれ。

もしくは、文化オなんとか社が出してる スプレッドを使うんだな。
424デフォルトの名無しさん:02/10/02 09:31
ドラッグ&ドロップで質問したいです。
今、ファイル名を指定してそこにあるデータを配列に落としているんですが、
これをドラッグ&ドロップが行われた時にドロップされたファイルを
配列に落とすにはどうしたらいいんでしょうか?今、使っている命令は
こんな感じです。
Open "D:\data\all.txt" For Input As #1
For i = 1 To Ypixel
For j = 1 To Xpixel
Input #1, MOT(i, j)
Next
Next
Close #1

お願いします。
Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Open Data.Files(1) For Input As #1
...
Close #1
End Sub

但しFormのOLEDropModeプロパティを1-手動にしとく。
426424:02/10/02 10:29
ありがとうございます。試してみます。
427デフォルトの名無しさん:02/10/02 11:18
>>423
そういったOCX等使うと、msiインストーラー作るとき、
OCXやらDLLやらがたくさんアプリケーションフォルダにいれられてごっちゃになるんですがいいほうほうはないでしょうか?
428お茶丸:02/10/02 12:28
じつはiMode用のメール保存閲覧ソフトを作りたいと思うのですが、
有効な情報がなかなか得られません。
もしよろしかったら少しでも結構ですので作成のヒント、
関連する情報など教えていただけないでしょうか?
一方的ですみませんが何卒よろしくお願いします。
429デフォルトの名無しさん:02/10/02 12:43
>>428
一方的もなにも、わけわからんぞ。

・必要と思われる機能の定義
・利用しようと思っているOS、開発環境、アプリ

ぐらいは書け。なるべく具体的に。
430598:02/10/02 14:35
まいった
431デフォルトの名無しさん:02/10/02 14:51
教えて下さい

double型の変数の小数点以下を切り捨てたいのですが
「¥」を使うと、以下の様な場合答えが4になってしまいます。

a=3.99
b = a \ 1

何か方法はありませんか?
IntかFix
433デフォルトの名無しさん:02/10/02 15:18
>>432
たすかりました
ありがとうございます
434デフォルトの名無しさん:02/10/02 15:21
VB6 で、フォームの width と height をiniファイルに保存しておいて、
フォームを開くときに保存されていた値を読んでその値にフォームのサイズを変更しておこうとおもって、
Form_Load でiniファイルの値を読んでセットしているんですがうまくいきません。
なにか足りないことでもあるのでしょうか?
435434:02/10/02 15:27
できた。
436デフォルトの名無しさん:02/10/02 15:32
>>432
Int(1.15*100) ではまる罠
437お茶丸:02/10/02 15:54
大変失礼しました(汗)
☆必要な機能
 携帯電話とPCをUSBにて接続し、ウインドウズアプリより携帯に対し、メールを送受信したい

☆希望する動作OS
 WindowsXP

☆開発環境
 Microsoft VisualStudio 6.0 のVBまたはVC、VJ

☆アプリ
 外部アプリは使用しない

以上です。すみません初投稿なもんで(汗)もしご存知でしたらよろしくおねがいします<(_ _)>
438お茶丸:02/10/02 15:59
追加です
現状として、携帯電話になんらかのコマンドを送出すると、対応した情報
(電話帳データ等)が返ってくるのはわかっています。
どんなコマンドを送出するとメール内容が取得できるのか、またクラスやAPI
が提供されているのか、当方では力不足で調べられませんでした。
439デフォルトの名無しさん:02/10/02 16:12
>>438
ここは初心者の館だよ。
>>438
そんなの機種によって違うんじゃないの?一緒なの?
441424:02/10/02 16:27
>>425
うまく取り込めました。ありがとうございました。
442デフォルトの名無しさん:02/10/02 17:25
ヘルプなんですけど、HTMLヘルプ使ってます。
FormとかにHelpContextIDってプロパティーがありますが、この項目は従来のヘルプにしかつかえないんでしょうか?
443デフォルトの名無しさん:02/10/02 18:04
ここってクリスタルレポートとかの質問もありですか?
444デフォルトの名無しさん:02/10/02 18:42
>>443
ありです。
445443:02/10/02 18:52
それではすいません、質問させてもらいます。
詳細に10行だけ出力して改ページしたいんですが、
どこでどういう風にすればよいのかわからないんですが・・・。
ちなみにverは8.5です。
446445:02/10/02 18:53
すいません何に関しての質問か抜けました。
クリスタルレポートに関してです。
>>438
そいうものが公開されてないのにはそれなりの理由がある。
ネタじゃなければ今後気をつけなよ。
448デフォルトの名無しさん:02/10/02 19:07
MOVEFILE_WRITE_THROUGHという定数って値なんでしょう?
手持ちのAPI Viewerにのっていないんですが・・
449デフォルトの名無しさん:02/10/02 19:17
>>445
1.明細にサブレポートを使う。
2.10行印刷されるとちょうどページの縦の幅がなくなるように、ページヘッダ、ページフッタなどの高さを調節する。
3.印刷する前のレコードに、10件づつインクリメントする番号を振っておいて、それでグループ化。
など思いつきました。
>>448
#define MOVEFILE_WRITE_THROUGH 0x00000008

WINBASE.Hにあった。
451448:02/10/02 20:01
お、ありがとございます。
これってようするに8のことですよね?
452デフォルトの名無しさん:02/10/02 20:59
>>448
>手持ちのAPI Viewerにのっていないんですが・・
アホを晒してはいけない....載っていない定数なんていくらでもある
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/movefileex.asp

英語が読めない場合、首を括るなり辞書を引くなりしてくれ
453448:02/10/02 21:17
>>452
おうっと。
ありがと。(w
454デフォルトの名無しさん:02/10/02 21:47
すごく大きな数(倍精度浮動小数点数型)が見にくいので
1.23456E+8
というような表示にして出力したいんですがどうしたらいいですか?
>>454
Format関数で第二引数"Scientific"指定とかどうかね。
456454:02/10/02 22:49
MSDNで調べたんですが
Format関数というのがどういうものかわかりませんでした。
具体的な使い方を教えてくれるとありがたいです。
使っているのはVB6.0です。
>MSDNで調べたんですが
どんな風に調べたんさ。Format関数に辿り着けなかったのかい?
そんなあほな。

イミディエイトウィンドウで下のように打ってみ。
? Format(123.456789, "Scientific")
458454:02/10/02 23:53
イミディエイトウィンドウでは確かにできましたが、
プログラムで出そうとしたらエラーが出てしまいました。
double型が入ったsumという変数の値を
Label2.caption = sum
で出したいんですがどうでしょう?

format関数は出てきたんですがc言語とか書いてあったので違うかなーと
思っちゃったんです。
>>454
どうやったらエラーになるねん。
ヘルプには使用例まで載ってるのに
それでわからん奴にどうやって教えたらええんや?
おいおい…
461デフォルトの名無しさん:02/10/03 00:27
>>458
エラーメッセージを正確に引用する。
必要最低限のコードは見せる。
変数に入れた値を示す。
これ質問者の基本。
462454:02/10/03 01:24
エラーメッセージはコンパイル時にでて
  コンパイルエラー
  修正候補:式
関係しているコードは
  sum = ?Format(sum, "Scientific")
  Label2.Caption = sum
sum は変数で、整数部分が7〜8桁のdouble型が入っています
例えば 70840747.888806 が得られます。

コードの?部分をなくすとコンパイルはできるんですが
有効数字が3桁になっただけで指数表記にはなってくれません。
例えば 70800000 というようにです。
463デフォルトの名無しさん:02/10/03 01:31
>>462
format(num,"0.00E+00")
0の数は自分で好きなように。?ってなんだ?何を読んだ?
464463:02/10/03 01:41
それからformatは文字列を返すんだからね。
気をつけて。
うんこ
466454:02/10/03 01:55
チェックのためにsumを一定にしました。コードは
  sum = 12345678.999999
  sum = Format(sum, "0.00E+01")
  Label2.Caption = sum
こんな感じです。

ここで""の中を"0.00E+00"とすると12300000が得られ
""の中を"0.00E+01"とすると1.23E+71が
""の中を"0.00E+03"とすると1.23E+73が
""の中を"0.00E+10"とすると「オーバーフローしました」とでます。
期待している数字は1.23E+07なんですけどどうしたら得られますか?
467デフォルトの名無しさん:02/10/03 02:04
>>466
だからformatは文字列を返すんだって。
dim sumStr as string
sumStr = Format(sum, "0.00E+00")
とかすればいい。
"0.00E+00" の0は桁数を表しているので
01とか10とかやっても意味がない。
sum = Format$(sum, "#.##E+")
だと思う
469D:02/10/03 02:12
>>462
>sum = Format(sum, "Scientific")
このsumは両方ともDouble型なのでFormat関数で整形してもほぼ同じ値が入るだけです。
この場合左辺はString型で宣言された変数に代入した方がいいと思われます。
あとSumはSQLとData Reportでの予約語なので変数名に使うのもどうかと。
試しに新規のプロジェクトでDim sum as Doubleの宣言をせずに同じコードを
入力すると小文字で入力したはずの"s"が"S"に置換されるはずです。

Dim Total As Double
Dim sTotal As String

Total = 70840747.888806
sTotal = Format$(Total, "0.000000000000E+")
Label2.Caption = sTotal
こんなかんじで。
あ、ヘルプの”プロシージャの引数”でSum関数作ってますね。
470454:02/10/03 02:13
>>467
デキターーーーー!!!
ありがとうございます!ものわかりが悪くてすいませんでした。
●●●●●●●●「オセロさえ納期内に作れない=OO役立たず 」祭り●●●●●●●
/|         |  |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ
  |         |  | ̄ ̄ ̄ /|                    ||
  |         |  |   / /|TTTTTT   TTTTTTTTTT||TTTTT
  |        /\ |  /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|
  |  /  /  |文|/ // /
  |/  /.  _.| ̄|/|/|/         Λ_Λ
/|\/  / /  |/ /           (___)
/|    / /  /ヽ            /〔 非OO 〕〕つ
  |   | ̄|  | |ヽ/l            `/二二ヽ
  |   |  |/| |__|/   Λ_Λ     / /(_)
  |   |/|  |/      ( ´∀`)   (_)    Λ_Λ
  |   |  |/      // /  ^ ̄]゚        (`   )
  |   |/        ゚/ ̄ ̄_ヽ         ⊂〔〔 非OO 〕
472454:02/10/03 02:16
>>468 >>469
いろいろありがとうございます。助かりました。
473D:02/10/03 02:17
あ、ぼやっとしてたら答えてたのね。
遅すぎました
474445:02/10/03 09:11
>449
返信遅れてすいません、ありがとうございました。
とりあえず今教えていただいたのを実行中です。
>>442
使えますよ。
476442:02/10/03 09:50
>>>475
お、そうですか。
なんか
HH_HELP_CONTEXT called without [MAP] section
って表示されたので。
HTMLヘルプの作り方が悪いんでしょうが・・
HTMLヘルプコンパイラみてもどこで設定するのかわからんです。
477442:02/10/03 10:33
できました。
hファイルを作成するんですね。
478 :02/10/03 10:45
ListBOX内の一行 一行 個別に 色を設定する方法を 教えてください。
479デフォルトの名無しさん:02/10/03 11:11
全く同レイアウトのテーブルAA,BBのレコードをAA→BBに移す時に
↓以外の書き方ありますか?レコード中の全ての項目を下記の様に
代入するように書かないと駄目なのでしょうか?

With rs_bbb
   .AddNew
   .Fields("field1").Value = rs_aaa.Fields("field1").Value
   .Fields("field2").Value = rs_aaa.Fields("field2").Value
   .Fields("field3").Value = rs_aaa.Fields("field3").Value
End With
>>479
for i=0 to rs_aaa.fields.count -1
.Fields(i).Value = rs_aaa.Fields(i).Value
next
481479:02/10/03 11:21
>>480
ありがとうございます。
そういうやりかたもありましたか
482デフォルトの名無しさん:02/10/03 15:25
テキストをHTMLのタグ形式に変換したいのですが、
「http」or「ttp」or「www」の文字列を発見すると自動的に<a href〜>のように
変換する関数のようなものは、ありませんでしょうか?
どなたか、そういったものを公開している情報知りませんか?
環境はVB6.0 SP5です。

例:
【変換前のテキスト】猫のページhttp://www.neko.com

【変換後のテキスト】猫のページ<a href="http://www.neko.com" target="_blank">http://www.neko.com</a>
483デフォルトの名無しさん:02/10/03 15:31
windows media player コントロールを使っているのですが、
alt+enterを押すとfullscreenで見れるのですが、
キーを使わずプログラムからfullscreenにする方法はないでしょうか?
また
windows media player コントロールのヘルプや解説が見つからないのですが、
どこにあるのでしょうか。
ASP.NETでWebUserControlを使用した汎用的なツールを作りたいと思っています。
そこで、Webフォームから同画面上のWebUserControlに対して値をわたしたいのですが
どうしたらいいでしょうか?
485483:02/10/03 16:22
自己解決しました。
ヘルプはないのですが、
オブジェクトブラウザでそれらしきものをみつけたので、いけました。
コンポーネントに以下の文を入れました。

MediaPlayer1.DisplaySize = mpFullScreen
486442:02/10/03 16:23
>>482
自分が使ってる奴。あんまよくないかも。
aStr=元の文字列
nTarget=変換したい元の文字列
nChangeTo=返還後の文字列
nOpt=おぷしょん。
Public Function fReplace(ByVal aStr As String, ByVal nTarget As String, nChangeTo As String, Optional nOpt As Integer) As String
Dim oStr As String
Dim nStr As String
Dim nCurPos As Long
oStr = aStr
If Len(oStr) > 0 And Len(nTarget) > 0 Then
Do
nCurPos = InStr(1, oStr, nTarget)
If nCurPos = 0 Then Exit Do
nCurPos = nCurPos - 1
If Not Mid(oStr, nCurPos + Len(nTarget) + 1, Len(nTarget)) = nTarget Or nOpt = 0 Then
nStr = nStr & Mid(oStr, 1, nCurPos) & nChangeTo
Else '改行文字が重なっていたら、改行文字自信に置き換える(nOpt=1の場合)
nStr = nStr & Mid(oStr, 1, nCurPos + Len(nTarget))
nCurPos = nCurPos + Len(nTarget)
End If
oStr = Right(oStr, Len(oStr) - nCurPos - Len(nTarget))
Loop
nStr = nStr & oStr
End If
fReplace = nStr
End Function
487デフォルトの名無しさん:02/10/03 16:29
VB初心者ですが、どなたか教えて下さい。
プログレスバーを使ってファイルの保存状況を表示したいのですが
Label1.Caption = "保存中"
ProgressBar1.Min = 0
ProgressBar1.Max = List1.ListCount
For LoopCnt = 0 To List1.ListCount - 1
SavData = SavData & List1.List(LoopCnt) & vbNewLine
ProgressBar1.Value = LoopCnt
Next
とするとプログレスバーが100%になってから「保存中」と表示されて
しまいます。処理の優先順位みたいなのがあるのでしょうか?
このような場合、どういう風にするのがよいのでしょうか?
環境はVB6 Win2000 です。よろしくお願いします。
>>487
Refresh DoEventsあたりか?
489デフォルトの名無しさん:02/10/03 16:40
>>488
できました。
ありがとうございました!(感謝)
490print():02/10/03 17:16
VBでダウンロード完了のイベントがとれるらしいのだけど、いまいち実装の仕方がわからん

ttp://www2.hos.co.jp/DemoV7/ViewCtrl/c7htmv15.htm#downloaded

に載ってるのだが・・・。どうやるでしょうか?
491478:02/10/03 17:19
ListBOX内の一行 一行に個別に 色を設定するのは Delphi
などでしか できんのかなぁ〜〜〜
492デフォルトの名無しさん:02/10/03 17:26
>>479
Insert Into BB Select * From AA

というのが一番理想。
493デフォルトの名無しさん:02/10/03 17:27
すいません、ちょっとクリスタルレポートに関してお聞きしたいんですが。
グループヘッダの下にページヘッダを表示したいんだけど、なにか方法はありますか?
イメージ的にはこんな感じにしたいんですけど・・・↓

【グループヘッダー】

 請求先 ○○商事
  請求商品金額      消費税      請求合計額
  100,000 5,000 105,000

【明細見出し】

 日付        品名 数量    単価 金額

【ディテール】

2001/01/01      ○○○○ 1 100,000 100,000
494482:02/10/03 17:40
>>486
お返事ありがとうございます。
>>482の書き込み内容と例が悪かったのですが、
http等の頭から問題は最後の文字です。

どこまでをURLとして認識するかが問題でした・・・。
感じとしては、2ちゃんねるの書き込みにURLを含む場合、
あああhttp://www.neko.comいいい
と書き込むと「いいい」の前でURLの認識としては止まりますよね?
他に"("カッコやスペースなんかでもURLの認識が止まると思います。

それをどうやって判断するのか・・・・。
1コずつ全角文字やスペースやカッコがあるかを判断するしかないでしょうか?
それだと、どんな文字でURLの認識が止まるのかを全て把握できなきゃいけないし・・・


>>494
URLには絶対に含まれない文字がある(日本語対応とかで多少状況は変わってきつつあるけど)。
単にその文字移行を認識しなければいい。
>>494
>それだと、どんな文字でURLの認識が止まるのかを全て把握できなきゃいけないし・・・
RFC読んでね。

どうでも良いけど使用できる文字の集合とできない集合を把握するなら明らかに前者の方が楽だと思うが。
497482:02/10/03 17:59
>>495様 >>496
お返事ありがとうございます。

とりあえず、これからRFCを検索して調べてみます。

ただ・・・使用できる文字の集合を把握したら、仮に1000文字だとして、
1000回分、Loop なり If なりで見ていかないとダメですよね?
かなり、厨プログラミング的な質問かもしれませんが・・・
498442:02/10/03 18:08
おっと、ごめんよ。
全然文章読んでなかった(w
文字の比較はLike演算子を使えば楽勝です。多分。
ってかどうやったら1000文字もあるんだ(w
>>497
httpから1文字ずつループを回しながらLikeでチェック。
Likeなら範囲指定できるから幾分楽だよ。
  chrHoge Like "[#-)+-;=?-~]"
って具合かな?
範囲がこれで正しいかは不明(^^; とりあえず実用上は支障無いと思うけど、
RFCをちゃんと調べた方がいいね…。
500デフォルトの名無しさん:02/10/03 22:16
どなたか教えてくだされ〜
SetステートメントのHelpに

>Set ステートメントを使って、オブジェクトへの参照を変数に代入します
と書いてあるのですが、ここで言う"参照"ってメモリのアドレスの事を言っ
ているのですか?それとも他のことですか?
教えてくだされ〜!
501 ◆LqTM395pfM :02/10/03 22:20
VBでOCR技術みたいなのを実装したいです。
無茶なのは100も1000も承知なんですが・・・。
どうにか出来ませんかねぇ?
そもそもフリーソフトでOCRなんて使ってるソフト無いような。
ヤパーリ技術的に相当レベル高いのでしょうか。
502デフォルトの名無しさん:02/10/03 22:39
>>500
ポインタだけど、直接メモリ操作はするなってことだろ。
>>501
不可能じゃないだろうけど、遅くて無茶だと思われ。
>>501
VBだから無茶なわけでないよ。

自分の技術の無さを言語の所為にすんなよ。
505デフォルトの名無しさん:02/10/03 23:31
>>502
やっぱポインタですよね!って事は
-------------------------------------
1:Dim A As Object
2:Dim B As Object
3:
4:Set A = New ClassObject
5:Set B = A
6:Set A=Nothing
7:Set B=Nothing
-------------------------------------
5行目ではAのインスタンスのコピーが作成されるのでは無く、Aに代入された
Objectインスタンスの参照がBに代入される。

したがって、6行目ではClassObjectのインスタンスは削除されずに
7行目でClassObjectのインスタンスが削除されると言う事でよろしいのでしょうか?
グラスには、いくつかの氷が音も鳴くたたずんでいる。
喧騒が過ぎ去り、優雅な時を過ごした証のみが、そこにはあった。
琥珀色の液体と、懐かしい歌声が、少しの間忘れていた感覚を呼び覚ます。
少しの間・・・いや、何年も忘れていたのかも知れない。
夜の空白を埋めるために、ずっと探していた。
今となっては既に過去だが、そんな時の感覚を不意に思い出した。
楽しい未来の夢を見ていたわけではなく、ただ思いを受け取って欲しかった。
>>505
あってるよ。
>>508
レスありがと〜
今日会社の先輩に>>505の事が全否定されたので、
激しく動揺していましたが、ぐっすり眠れそうです。
510デフォルトの名無しさん:02/10/04 00:52
VBのスクロールバーに関する質問ですが
MAX値が32767になっているのですが
これをもっと増やすことってできるのですか?
どなたかよろしくお願いします。
増やさなくてもn倍すればいいじゃん
>>510
マッピング、マッピングやっほ〜やっほ〜。
>>512
本当に初心者質問ですいません。
マッピングとは具体的にどのように
やればいいのですか?
よろしくお願いします。
514 :02/10/04 04:44
株価のデータ集計ソフトを作っています。
株価は単位株でしか買えないので1000株単位なら
10260株−>10000株
10830株−>11000株
のようにある単位で四捨五入したいのですが、FORMAT関数の使い方がわかりません。
今のコードは
KABUSU = Format$(KABUSU, "#.")
とやっていますが何も変わらないのです。上の方の書き込みをみて色々試したのですが。。
vb6.0を使ってます。

KABUSUの値は10526.3157...
という数字が入っており 結果は11000になってほしいのですが。
ある桁数で四捨五入はできないのでしょうか?
515デフォルトの名無しさん:02/10/04 05:05
>>514
そのままでは出来ないから、1000で割ってあとで1000を掛ける。
516デフォルトの名無しさん:02/10/04 06:17
そうかー全然気づかなかった。
どうもありがとうございます。
四捨五入ってできないんですね。EXCELとかはRound関数とかでできたような
気がしたので頑張ってやろうとしていました。
517デフォルトの名無しさん:02/10/04 07:47
>>510
増やしても意味ないよ。
たいてい32767より小さくして使ってる。

>516
Excelの関数と同機能のVB用関数はいっぱい公開されてるよ。
ぐぐってみなはれ。
519デフォルトの名無しさん:02/10/04 13:21
VBからCOBOLを呼ぶことできるの?
VBを部品にしてCOBOLで制御したいんだけど。
>>519
VBからCOBOLを使いたいの?
COBOLからVBを使いたいの?
521デフォルトの名無しさん:02/10/04 14:06
ExcelのVBAでデータ処理をしているのですが、Excel or VBAだからか
やたら処理が遅い。VCがあるので、これをCに変換したらもっとサクサク
動くかなと思うのだが、VB自体よく分かんない。
ということで、VBからCとかJavaにコードを変換してくるフリーのソフトって
ないですかね?
>>521
ない。あったとしてもコードの問題の可能性が大きいからどっちみち速くならないだろう。
523 :02/10/04 14:18
>>521

VBでDLL化などして使ったら エクセルよりは 速いよ。
524519:02/10/04 14:25
説明不足でした。
COBOLから、VB(画面制御部品P)を呼んで、
COBOLに値を返したいんですけど。
525D:02/10/04 15:00
>>514
四捨五入のソースは結構公開されてるんですが、あえてFormat関数を使うなら
Dim D As Double
D = 10830
D = Format(D / 1000, "#0") * 1000
Debug.Print D

という手もあります。ただFormat関数は文字列を返すはずなのであまり誉められた方法では
ありませんが。(cDbl()で変換した方がよいかも)
526D:02/10/04 15:10
>>510
元々プログレスバーは進捗状態を表すのでパーセントに変換してます。
527D:02/10/04 15:23
>>524
どんな種類のCOBOLを使ってるか分からないけどBPCなんかだとCOBOLからプログラムを
実行できたはず。状態によって少し違いますが、
最初に起動するのがCOBOL以外の場合
COBOLランタイムのコマンドラインにexeを指定して起動する必要があります。

COBOLからexeを呼び出すShell関数はあったはず(メーカーによってまちまち)

値を渡すにはファイル経由orDB経由で渡してたと思います。
>521
やたら処理が遅いって、まず何処が遅いのかハッキリさせんと何もできんぞ。
どうせExcelのオブジェクトをムダにグリグリ弄繰り回してるだけだろうけど。
>>525
とあるOS(たしかXP)ではFormatは四捨五入じゃないから気をつけてな。
>>514
KABUSU=((KABUSU+500)\1000)*1000
浮動小数点の丸め誤差にも気をつけよう
VB5CCE試用中なんですが、
Freeで .EXE 作成ソフトってありますか?
>>532
ほえぇ?
534521:02/10/04 19:00
実験データの解析用VBAで、先輩の置き土産です。
データ数が多いのと統計解析があるので、どうしても計算量が多いので
遅くなるのです。うーむ、VBからCへの変換ソフトってのは無いようですね。
Cへ変換できたら、計測からそのまま解析に繋げられて楽だなと思ったのですが。。。
BASICと名がつくものはN88BASIC以来さわってなかったが、VB勉強して
処理の流れを把握してから移植するしかないかな。
>>534
コードの最適化と、Professional以上でネイティブコンパイル、
CPUのアップグレード

なんてところがいいんじゃない?
>>534
なんかしたり顔で言っているけど、処理速度向上にJAVAを上げているようじゃ
全然分かってないだろ。
(°Д°)<言ってません。書き込んでるだけです。(プ
       お前は何か?PCの前でひとりでしゃべってんのか?あ?
>>537はまともに会話すら出来ないわけですな...
>534
実際にVBA使った経験で演算は困るほど遅くなかったから、
セルからデータの取得、またはその逆の個所を見直して
配列を使って範囲を一気にって言う風に変えれば見違えるほど早くなったよ。
540521:02/10/04 23:41
#とりあえず521≠537です(念のため)。
>>536
書き方が悪かったですね。Javaを上げたのは処理速度向上のためではなく、
VBよりはJavaの方が読めるので、Javaからなら自分でCに直せるなという
ことで、あのように書きました。誤解するような文章で申し訳ないです。
>>539
なるほど。まずそちらから検討してみます。
541D:02/10/05 01:05
>>529
まじで。今使ってるのがWin2Kやからできたんか。使ってなくてよかった〜
そのうちやりかねんからな。でも何で今頃...調べてみよ。
大変ありがとー
Set fs = CreateObject("Scripting.FileSystemObject")
これのScriptingって、なんのことでしょう?VBScriptのことでしょうか?
古いOSだと使えないとかありますか?
543デフォルトの名無しさん:02/10/05 02:20
544542:02/10/05 08:36
>>543
ありがと。
今みれないから後でみてみるよ
>>529はネタ
546542:02/10/05 14:03
む、みてみたけど微妙。
とりあえずWin98以降なら標準でいけるようですね。
547デフォルトの名無しさん:02/10/05 21:06
デスクトップとか、送るメニュー(SendTo)にショートカットを作りたいのですが
たいていST4KIT.DLLだったかを使う物ばかりです
VBではむりなんでしょうか?
548デフォルトの名無しさん:02/10/05 21:19
どう言ったらいいのかわからないんですが、
電卓を作りたいです。
そこでウィンドウがアクティブな時に
キーダウンイベントに反応できるようにしたいのですが、
上手くいきません。
ウィンドウに送られるキーダウン全てに反応するには
どこに記述したらいいのでしょうか?
つまりウィンドウのどこにフォーカスがあっても
キーダウンをキャッチしたいわけです。
どうすればいいでしょうか?
よろしくお願いします。
>>547
Delphiなら.lnkの作成もパスの取得も簡単ですよ♪

>>548
DelphiならKeyPreviewプロパティをtrueにするだけだよ♪
>>547
IShellLinkインタフェースを実装するとか。ぐぐって。


>>548
コマンドボタン上にあるときの←キーとかは取れないが、
KeyPreview=Trueで。
551548:02/10/05 21:46
>550
助かりました、無事成功しました。
ありがとうございました。
VB未経験者ですが、下記のソースをビルドしたいと思ってます。
http://www.yecc.gr.jp/vb/prog/pricla/primain.html

開発環境を持ってないので、これからVBを購入するつもりです。
現在最新のVB用開発環境はVB.NETだと思うのですが、
上記のソースがVB.NETでビルドできるか知りたいです。
お願いします。
>>552
なんで、作者に聞かんの ? 掲示板みたいな奴もあったよ。(あまり活発そうじゃないけど...。)
>>552
ビルドできない。
さらに、このソースコードはVB.NET用に直すのにも手間がかかるパターン。
VB6までのVBとVB.NETは別の言語と思ってもらった方がいい。

VB.NETで一から勉強して作るがよろしかろう。
555547:02/10/05 23:33
お〜WindowsScriptオブジェクト使えばショートカット作れるんじゃん
と思ってやったら

Norton先生が反応しますた。

いや、つくれたんですけどね。これじゃだみだ。
556543:02/10/05 23:40
>>546
世話が焼けるなあ。

プリインストされてるWSHのバージョン
Windows95 なし
WindowsNT4.0 なし
Windows98  WSH1.0
Windows2000  WSH2.0
WindowsME  WSH5.5
WindowsXP  WSH5.6

98や2Kはバージョン古すぎるから、最新版をインスト。
95やNTは新規インストすればいいだけ。
557552:02/10/05 23:50
レスありがたう。

>>553
そうなんです、BBSあまりにもアレだったんで、
こちらでお聞きした次第です。

>>554
流用は無理ですか。。。
VB.NETって、VBと同じことができるんでしょうか。
他にUSBカメラからの画像キャプチャもしたいんです。

実は、簡易プリクラを作ろうと思ってるんですが、
そんな用途にもVB.NETは向いてますか?

どっちかというと、VB6の方がいいような。。。
ご意見をお願いします。
>>529 >>541 >>545
WinXPではFormat関数が内部で利用しているAPIの仕様変更の影響で
動作が四捨五入じゃなくなった。MSはそれを仕様だと逃げようとしたが、
苦情殺到のため、SP1で元の仕様に戻した。

SP1を入れないWinXPへの対応として、そのFormat関数を四捨五入する
仕様に戻すパッチも単独で提供されている。

559542:02/10/06 05:19
>>556
なるほど、全然バージョンが違いますね
オンラインソフトにはむかないかなぁ?
今のところFileSystemObjectしかつかってないけど

やっぱりWinAPI使った方がいいかな
560デフォルトの名無しさん:02/10/06 07:57
.iniファイルに書き込もうと思って調べたら
WritePrivateProfileSection
などを使用することがわかったのですが、
うまくいきません。
VB6.0で書くと構文エラーで赤字で表示されます。
これはなぜでしょうか?
よろしくお願いします。
561デフォルトの名無しさん:02/10/06 09:56
>>560
構文エラーだからです。それ以上でもそれ以下でもありません。
562新実:02/10/06 10:07
お前等お前等お前等お前等お前等お前等お前等お前等
ヽ( ・∀・)ノ < filnbhlmbcfilnbh
http://genie.gaiax.com/home/nakatai
お前等お前等お前等お前等お前等お前等お前等お前等
>>560
> .iniファイルに書き込もうと思って調べたら
> WritePrivateProfileSection
> などを使用することがわかったのですが、
> うまくいきません。

何で、.ini ファイルなんか使うの ?
GetSetting() / GetAllSettings() / SageSetting() / DeleteSetting() じゃダメなん ?
編集しやすいから
俺はiniを読むときはAPI使うが書くときは普通に開いて整形しながら書き込み
566デフォルトの名無しさん:02/10/06 11:06
ファイルのopenについて聞きたいんですが、ファイルのopenに失敗した時
エラーのメッセージボックスを出したいと思っています。でもどうやって
ファイルのopenに失敗したことを知ればいいのか分かりません。
どうすればいいでしょうか?

今は実行されると同時に次のようにしてファイルを読み込んでいます。

Public Sub Form_Load()
Open "C:\AtomCount\M.txt" For Input As #1
  For i = 1 To Ypixel
    For j = 1 To Xpixel
     Input #1, A(i, j)
  Next
  Next
Close #1   'これと同じような動作を後2回します。
>>564
ならしょうがないね。>>560 には declare 文を勉強してもらうしかないみたいね。

>>565
> 俺はiniを読むときはAPI使うが書くときは普通に開いて整形しながら書き込み

なんでそんなことを... ?
>>566
On Error Goto ...
を使う。これを使ってファイルが存在するか調べるって方法があったっけ。
569566:02/10/06 11:46
ありがとうございます。使い方を調べてみます。
>>567
ごめん、俺の勘違い。
存在チェックならdir関数で充分だぽ
入力用で開くならエラーはこんくらいか
存在チェックならFindFirstFile()
573566:02/10/06 11:59
ファイルを開く時の失敗を検出したいんです。On Error Gotoでは
エラーナンバーが必要なようですが、ファイルを開くのに失敗した時
エラーナンバーは何になるんでしょうか?
Err.Numberでエラーナンバー取得しる
575536:02/10/06 12:09
>>573
> ファイルを開くのに失敗した時エラーナンバーは何になるんでしょうか?

試せばいいと思うが ?

全部のエラーを知りたいなら、ヘルプで「トラップできるエラー」を調べるべし。
576542:02/10/06 12:09
mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VS\1041\vbenlr98.chm::/HTML/vamsgtrappableerrors.htm
ここみれ。
(インストールフォルダ違ったらなおして)
というか読みとりエラーが発生するなんてファイルが存在しないときぐらいしかないんじゃないの?
なら
If Dir("C:\AtomCount\M.txt")="" then
  MSGBOX "エラーなのですです。。"
Else
  Open〜〜〜
End If
みたいなのじゃだめ?
577デフォルトの名無しさん:02/10/06 12:21
VBでBase64エンコードしたいんだけど
いいサンプル載ってるページ知ってる人いませんか?
Googleでいくつかは見つけたんだけどいまいち。
いつもはVCでやってるんだけど久しぶりにVBに手ぇ出したら引っかかった。
578566:02/10/06 12:22
>>576
ありがとうございます。見てみます。開くファイルは
データ数が指定されたテキスト形式の数字の羅列なので 
簡単に「読み込みできない」状態にできるんではないかと思い、
できればファイルオープン時のエラーにしたいんです。
579542:02/10/06 12:31
>データ数が指定されたテキスト形式の数字の羅列なので 
>簡単に「読み込みできない」状態にできるんではないかと思い
ごめん俺には意味が分からない
580566:02/10/06 12:32
>>575
試してみたら分かりました53でした。ありがとうございます。
581542:02/10/06 12:41
53だとDirでやったのと同じじゃない?
582566:02/10/06 12:48
>>542
ほんとだ。53ではないですね。でもデータを変えたらそれなりのメッセージが
出るように始めからなっているんですね。VB賢いなー

データの形式が
11,12,13,14,15
21,22,23,24,25
31,32,33,34,35
みたいな感じのテキストファイルということです。
>>576
ちゃんとやるならダメだろ。Dir() と Open の間にファイルが消されてるかもしれないしね。
つーか、Open でエラーとラップできるんだからそうすりゃいいと思う。

On Error Goto Next
Open "C:\AtomCount\M.txt" For ...
If Err.Number <> 0 Then
 MsgBox "エラーなのですです。"
 ...
End If

584542:02/10/06 12:54
ひょっとして
For j = 1 To Xpixel
     Input #1, A(i, j)
  Next
でエラーがおきるってこと?
読み込み回数を指定しているようだけど

そうだと仮定して書くけど
Do Until EOF(#1) = True
Input #1, A(i, j)
Loop
こういう風にやるもんだよ。
>>577
VB.NETならいいんだが・・・。だめくさいな。
http://dobon2.tripod.co.jp/dotnet/string.html#base64
587566:02/10/06 13:13
>>584
行列の行数と列数の違うデータも後々取り込みたいので行数と列数
を指定していたほうがいいかな・・・・と思いました。
588デフォルトの名無しさん:02/10/06 13:41
VisualBasic本体はどうやって手に入れるのですか?
589577:02/10/06 13:43
>>585,586
ありがとー
>>588
> VisualBasic本体はどうやって手に入れるのですか?

お金もって、近所のヤ○ダ電機か LA○X にでも逝けよ。
591デフォルトの名無しさん:02/10/06 13:52
>>590
いくらくらいですかね?
592552:02/10/06 13:54
便乗質問です。
これから秋葉行ってVB買ってこようと思ってます。
1万円のVB Standard版でもアプリケーションの配布ってできるもの?
教えてくだされ
>>558
笑える対応だね。仕様をコロコロ変えるのは、ほんとにみっともない。
>>558

> 苦情殺到のため、SP1で元の仕様に戻した。
>
> SP1を入れないWinXPへの対応として、そのFormat関数を四捨五入する
> 仕様に戻すパッチも単独で提供されている。



ttp://support.microsoft.com/default.aspx?scid=kb;ja;JP418691

↑仕様を元に戻したとは書いてないが?(ネタ??)
>>594

ごめん、SP1へのリンクがあるね。(見落としてた)

逝ってきます・・・。
>>591
> いくらくらいですかね?

お店の Web ページ見るとか、お店に電話するとか考えつかないの ?
視野が狭くて考えられないんでしょ
598547:02/10/06 17:56
>>550さん
IShellLinkは、どうもProfessional以上じゃないとダメのようです
Leaningでは使えないらしいです。
Cで作られたDLLを利用するぐらいしかないでしょうか
599ピンポロ:02/10/06 18:22
Access2000でテーブル中の何も無い項目には
NULLを入れたいと考えています。


>dim str as string
>str = vbNullChar
>
>lrs.Open "testtbl", cnn, adOpenForwardOnly, adLockPessimistic
>
>With rs
>.AddNew
>.Fields("aaa") = "01"
>.Fields("bbb") = str
>.Update
>End With


の様な形でtesttblというテーブルにレコードをINSERTして

"select * from testtbl where bbb is NULL"

というようなSQL文でSQLを発行しても
レコードはヒットしませんでした。
上記の様なSQL文でレコードを引っ張ってこれるようにするには
どうしたらいいでしょうか?
600ピンポロ:02/10/06 18:24
あ〜朝から〜
朝からステーキ食べたら笑顔もドカンと世界一!!(ヨイショ!)
>>599
いいかげん、vbNullChar と vbNullString の違いを覚えれ。
>>601
お前こそいいかげん、vbNullString と Null の違いを覚えれ。
>>599
悪いことは言わないから(w)、転職、または他部門への異動を真剣に
検討して頂きたい。技術のない技術者(言葉が矛盾しているが w)の
存在は、顧客にとっても、同業者にとっても、迷惑(足手纏い)以外の
何者でもない。
604542:02/10/06 18:41
デスクトップのフォルダーと、SendToのフォルダーってどうやって調べます?
これまたWindowsScriptオブジェクトならわかったんですが、WinAPIでどうやるのか
GetSystemDirectoryあたりとEnvironつかうっぽいですが
605542:02/10/06 18:49
さっさと答えろよオラ
じゃヒントね。
名前がSHから始まる関数。
SHIT
SHOP
Get
SP
Path
612550:02/10/06 18:58
>>598
>IShellLinkは、どうもProfessional以上じゃないとダメのようです
なんで?エディションは関係ないぞ。
http://www.geocities.co.jp/SilkRoad/4511/vb/shlink.htm
このURLを見たのかな?このサイトのDLLを使わせてもらうのでもいいが、
MkTypLib.ExeがなくてもODLの知識がなくても
要はタイプライブラリを手に入れればいいわけで。
http://www.domaindlx.com/e_morcillo/
例えばここにタイプライブラリあるよ。「Type Libraries」ページな。



ちなみにinfファイルを使う方法もあるぞ
614ピンポロ:02/10/06 19:03
僕は学生です。
615デフォルトの名無しさん:02/10/06 19:06
僕も学生だよ。
無職をバカにすんな
俺は留年中です。
vbNullChar・・・Chr(0)と同じ。いわゆるヌル文字。C言語では(Windows的にはLPSTRでは)文字列の終端を表す。
vbNullString・・・String型の初期値。アドレスが0で値が""。APIに渡すときの(文字列型の)ヌルポインタとして利用する。
          InputBox関数でキャンセルされたときの戻り値もこれ。
Null・・・Variant型の値の1つで有効な値が設定されていないことを示す。
DBから取得した値がNullのときはこれが返る。
>>618
丁寧な説明は大いに結構だが、肝心の>>599氏が理解できるかどうか、
甚だ疑問と思われ。
無駄な努力(猫に小判、豚に真珠に値する行為)は放棄すべし。w

・・・他のROM者にはプラスになるのかもしれないが・・・。
>>619
だから599宛てにしてないんだろうな。
>>619
答えるかどうかはお前の知ったことじゃない。
622601:02/10/06 19:21
>>602
> お前こそいいかげん、vbNullString と Null の違いを覚えれ。

すまん、勘違いしてた。
623602:02/10/06 19:25
>>622
了解。今のお前は男の中の男。
>>618
>>619 がぐちゃぐちゃ言ってるけど、気にすることはないと思うよ。
役に立つ情報だしね。
625619:02/10/06 19:32
>>620 >>621 >>624
うるせーよ。お前ら。
逆切れですかな?
そんな基本中の基本でもめるな。
もしプログラムを職業としてるなら>>603が正しい。
>>627=619=603
今度は自作自演ですかな?
629デフォルトの名無しさん:02/10/06 19:59
ネットワークにつながったマシンのCDトレイをOPENすることは
できますか?
630542:02/10/06 20:02
>>605
ここまで露骨な偽物は2ch初めて以来初めてだ(w
>>606
あ〜これがIShellLinkってやつですね。
う〜んわりとめんどくさそう

正直WindowsScript使いたいけど、ダメかな?
95とNTは切り捨てるってことで
98,2000,Me,XPのバージョンの違いで挙動がどう違うか心配だけども。
631606:02/10/06 20:11
>>630
SHGetSpecialFolderLocation+SHGetPathFromIDList
のことだったんだが。IShellLinkとは無関係。

98でもインストールオプションによってはWSHが
入ってない可能性がある。
どうせ95とNTを捨てるならShellオブジェクトを
実行時バインディングで利用した方がいい。
(95とNTでもIE4が入っていれば使える)
632デフォルトの名無しさん:02/10/06 20:13
>>629
できる。
そのマシンの前に行って、CD-ROM ドライブのボタンを押しな。
なぜVBにはまともなスレがないですか?
マジ質問なんですけど。だれかたてて。
>>633
お前が立てろ。
635633:02/10/06 20:27
↑【ゲイ】オナニー用おかず画像ver.11【専用】
637デフォルトの名無しさん:02/10/06 21:44
>>619
ある朝、ふと不安な夢から目覚めた>>619
639577:02/10/06 22:31
昼間はどーも。
base64は力ずくで何とかしました。

ところでopen "hoge.txt" for input as #1ってしたときに
カレントフォルダのファイルを読みに行かないようなんだけど
俺のopenに関する知識が間違ってる?
"実行時エラー 53 ファイルが見つかりません"
泣きそう。
> 俺のopenに関する知識が間違ってる?

多分、お前のカレントフォルダに関する知識が
間違ってるんだろうよ。
641デフォルトの名無しさん:02/10/06 22:32
>>639
一度保存しろ。
642577:02/10/06 22:50
ども。
exe作って c:\testに入れて
c:\test\hoge.txt作って
Open "hoge.txt" For Input As #1
で実行時エラー。
何でなんだろ。
あ、一応フルパス指定なら読めます。
>>642
> 何でなんだろ。

お前のカレントフォルダに関する知識が
間違ってるんだろうよ。
>>642
カレントフォルダがわかるようにデバッグすれば?
メッセージボックスだすとか。
>>619は短小包茎でモーヲタ
646デフォルトの名無しさん:02/10/06 23:05
>>642
exeで実行した時のエラーメッセージって何?
647577:02/10/06 23:08
>>646
何度も同じことを書かせるな。
648デフォルトの名無しさん:02/10/06 23:15
AccessでADO使ってんですが、これを会社の端末に持っていきたいのです。
で、
・VBをインストールしていない。
・VBランタイムは上書きしてはいけない。
という端末の為、ADOの参照ファイルのみ持って逝きたいのですが、
msado21.tlb(ADO2.1の場合)というファイルのみ持って逝けば動くのでしょうか。

他にもあるのであれば、どれとどれをというのを教えていただきたいのですが。。。
あ、特殊なコントロールは使っていません。Accessのバージョンは同じです。
649デフォルトの名無しさん:02/10/06 23:16
>>647
exeで実行してそういうメッセージなら、そりゃファイルがないんだろうな。
ファイル名チェックしろよ。
650577本物 ◆XlX2jv26Qo :02/10/06 23:17
初めて騙られますた。
---------------------------
pdxsend
---------------------------
実行時エラー '53':

ファイルが見つかりません。
---------------------------
OK
---------------------------
です。
651デフォルトの名無しさん:02/10/06 23:18
>>648
「バージョン同じです」って、おまえバージョン書いてないじゃん。
652577本物 ◆XlX2jv26Qo :02/10/06 23:20
あーごめん。
3つぐらい開くファイルあって一個だけ間違ってた。
すべて俺が悪かった。
お手数かけました。
653デフォルトの名無しさん:02/10/06 23:20
>>650
まあ経験。

ファイル名の確認した? フォルダの表示オプションとかは?
dos窓開いて確認してみ。
>>650
なんべん同じこと書かせりゃ気が済むんだ?


お 前 の カ レ ン ト フ ォ ル ダ に 関 す る 知 識 が
間 違 っ て る ん だ ろ う よ
655デフォルトの名無しさん:02/10/06 23:21
>>651
97です。
それに関して、何も必要なファイルは無いです、という意味で
「バージョンは同じです」と書いたつもりっす。
必要なファイル、ご存じですか?
656デフォルトの名無しさん:02/10/06 23:24
>>655
そもそもその端末ではVBE(ビジュアルベーシックエディター)は
インストールされてないのか? 普通access97と一緒にインストール
されるはずだが。
MDACいれろやチンカス
658542:02/10/06 23:28
>>642
chdir app.path
659デフォルトの名無しさん:02/10/06 23:34
チンカスとはご挨拶だなチキン野郎。
660648:02/10/06 23:35
>>656
Accessだけなら他に何もファイルを入れなくても当然動きます。
ADOを使っているので、それ系の参照ファイルを入れないといけないのです(多分)。
>>657
MDACってVBランタイム系のファイルは何も入っていないのでしょうか。
細かく書いていなくて申し訳ないのですが、会社にはVB5ランタイムが
入っていて、VB6ランタイムで上書きすることが許されないのです。
ADO入りのVBランタイムは大概VB6ランタイムなので。。。
ランタイムに入っているファイルが上書きされやしないかと実験も
あまり出来ていない状況なのです。。。
661648:02/10/06 23:37
>>659
騙り師、ごくろうさまです。そろそろ飽きようね。
だったら最初からDAOでもブン回す仕様にしとけやハナ汁娘が
663デフォルトの名無しさん:02/10/06 23:40
>>662
俺はハナ汁娘じゃないぞこのマントヒヒが。
664デフォルトの名無しさん:02/10/06 23:43
>>660
あのさ、どっちにしてもコード(モジュール)書かなきゃADOでアクセスできないだろ?
で、普通そのためのVBEがインストールされてると思うんだよ。
で、そのメニューの「ツール]「参照設定」でActiveX Data Object が参照
されてるはずなのね。
どうなの、そのへん?
誰がマントヒヒだこの野郎。そんなお前はモヤシ組のカイワレ君だろうが。
666デフォルトの名無しさん:02/10/06 23:46
>>664
ていうか、もって行きたいって書いてるから当然モジュールあるはずだな。
そのmdbファイル。
なんでMDACがVB6のランタイムなんだこの野郎。関係ないだろダボハゼ野郎。
しかも2.1だろこの野郎。IE5でも入ってりゃ充分だこのバカ野郎。
ほんとVBって駄目だな
669648:02/10/06 23:50
>>662
すみません、最近、本見て始めたもので、ADOしかよく分からないのですよ。
JETの場合はDAOの方が効率良いみたいなのをよく見るので、
いずれ勉強しようとは思うのですが。
>>664
AccessのVBEから参照設定してますよ。
Accessインストールだけじゃ、多分、ActiveX Data Objectは入らないと思うのです。
VBをインストールしているから参照設定の項目にも並ぶってもんで。
で、会社にはVBはインストールされていない。
すると、ADO関係の所でエラーが出るでしょう?
まさか、最近のバージョンではAccessだけでActiveX Data Objectも入るんですか?
670648:02/10/06 23:51
あらあら、書き込むの遅いからすごいレス付いてるな。
IE5入れればActiveX Data Object2.1入るんすか。。。
ちょっとやってみることにします。
ありがとうございます。
671デフォルトの名無しさん:02/10/06 23:54
>>669
> まさか、最近のバージョンではAccessだけでActiveX Data Objectも入るんですか?
入るよ。
逆にDAOは入らんよ。
672648:02/10/06 23:56
>>671
そうだったのか…。
まだ97しか触ったことないんすよ。勉強になります。。。
673ついでに:02/10/06 23:59
>>665
ママのおっぱいでも吸ってろ包茎野郎。
>670
ちがうよ。MDAC2.1入れるのに、IE5の環境が必要なだけだよ
MDACは分かるよな MDACTYP.EXEとかそんな感じのファイルだよ
675デフォルトの名無しさん:02/10/07 09:11
>>648
質問を読む限り、VBとは ぜんぜん関係ないようだが。
なぜVBにはまともなスレがないですか?
なぜVBにはまともなスレがないですか?
677 :02/10/07 10:22
>>676
スレがないんじゃなくて まともじゃないレスがあるだけ(w
>>619はカントン包茎
679--:02/10/07 16:12
ステートメント1
ステートメント2
があって、
1を実行し終わって少し時間を置いてから2を実行したい場合はどうするのでしょうか?
ステートメント1
timer1_timer
ステートメント2
としてtimerを割り込ませてもすぐにステートメント2が実行されてしまいました。
680--:02/10/07 16:16
Option Explicit
Dim i, t As Integer
'----------------------------------
Private Sub Form_Load()

Form1.Caption = "始まり" '(ステートメント1)

Timer1.Interval = 1000
t = 5
Timer1.Enabled = True

Timer1_Timer

Form1.Caption = "終わり" '(ステートメント2)

End Sub
'-----------------------------------
Private Sub Timer1_Timer()
i = i + 1
If i > t Then Timer1.Enabled = False: Exit Sub
End Sub
'-----------------------------------
これを実行すると
本当は5秒後にキャプションを"終わり"にしたいのに
実行開始直後に"終わり"と表示されてしまいました。
>>679-680
悪いことは言わないから(w)、転職、または他部門への異動を真剣に
検討して頂きたい。技術のない技術者(言葉が矛盾しているが w)の
存在は、顧客にとっても、同業者にとっても、迷惑(足手纏い)以外の
何者でもない。
>>681
何様のつもりなんだ?コイツは
683デフォルトの名無しさん:02/10/07 17:06
>>682
貴様のつもりだろ(w
(w
(w
(w
ダサッ
>670-680が職業プログラマだとは限らんだろうに。
686デフォルトの名無しさん:02/10/07 17:33
>>680

タイマーの使い方を知らないみたいだな。

タイマーは インターバルに指定した時間がたったら、実行されるイベントだ。

正解はこれ。

Option Explicit
Public i, t As Integer
'----------------------------------
Private Sub Form_Load()

Form1.Caption = "始まり" '(ステートメント1)
Timer1.Interval = 1000
t = 5
i = 0
Timer1.Enabled = True

End Sub

'-----------------------------------
Private Sub Timer1_Timer()
i = i + 1

If i > t Then
Timer1.Enabled = False
Form1.Caption = "終わり" '(ステートメント2)
End If
End Sub
'-----------------------------------
687デフォルトの名無しさん:02/10/07 17:44
タスクバーに表示されている他のウィンドウの
アイコンとキャプションを変えるには?
なおウィンドウのハンドルは取得してます
>>687
悪いことは言わないから(w)、転職、または他部門への異動を真剣に
検討して頂きたい。技術のない技術者(言葉が矛盾しているが w)の
存在は、顧客にとっても、同業者にとっても、迷惑(足手纏い)以外の
何者でもない。
689デフォルトの名無しさん:02/10/07 18:04
>>688
悪いことは言わないから(w)、他のスレ、または他の板への異動を真剣に
検討して頂きたい。答える気のない技術者の存在は、このスレの住人にとっても、
同業者にとっても、迷惑(足手纏い)以外の何者でもない。
690--:02/10/07 18:06
>>686さんありがとうございました。
なるほどぉ。
timer1_timerの中にステートメント2を入れるんですね。
i=0も言われて気づきましたが必要ですね。

>>682さん
かばってくれてありがとうございます。

>>685さん
たとえ肉体労働でもいいのでアルバイト探し中です。
つうか初心者質問スレで「転職しろ」はねえだろよ糞が。
おまいら、しょせん似た者同士なんだから喧嘩なんかするなよ。
初心者っていっても少しは本読んで勉強しる
いやだから皆が皆職業プログラマだとは鍵乱打朗に。
限らんだろうに。
>>692-693
自己弁護必死だな
697--:02/10/07 18:32
僕は学生で、趣味でプログラミングをやっています。
それなのにいきなり転職だ迷惑だ言われてしまっては
面食らってしまいます。
もう少し柔らか頭で行きませんか?
微笑を絶やさぬ人はときめきを絶やさぬ人
という詩もあります。
いつも喧嘩腰じゃ駄目ですって!
698--:02/10/07 18:38
>>697
これ僕じゃないです
699--679 ◆ExGQrDul2E :02/10/07 18:38
あのー
>>697
わたしじゃないです。トリップつけてみました。
700--679 ◆ExGQrDul2E :02/10/07 18:41
これ僕じゃないと言ってる
>>698
も僕じゃないです。というより僕の書き込みを予想して先に698のようなカキコをしたんでしょうね。
だいぶ前のスレの伝説の177さんもだいぶにせものにやられてたようですが。
いやどうでもいいし。
702デフォルトの名無しさん:02/10/07 19:32
っていうかコテハン いらないよ。
名前書かなくてもいいしね。
誰が どの発言でもいいのだ。
問題が 解決されれば。
703687:02/10/07 19:34
解決して
>>687
SetWindowText
>>687
WM_SETICON
友達いない君がここにも出没しているようだね。
707687:02/10/07 20:30
>>704-705
と私も思ったんですがダメでした

申し遅れましたが変えたいアプリとはかちゅ〜しゃです
どうもかちゅだとタイトルバーは変わるもタスクバーがそのままみたい
フツーのアプリだとちゃんと変わりますのでご回答としはバッチリなのですが
ホント申し訳ないです

つーワケでよろしくおながいします
708687:02/10/07 20:31
あっ!かちゅ〜しゃのクラス名はこれでいいと思います
TKatjushaMainForm
みんな会社や学校でかちゅ〜しゃ使おうと必死だな(w
710687:02/10/07 20:35
>>709
その通りです (w
興味津々デスワ。
是非やり方教えて下され。(w >かちゅ〜しゃ
>>711
悪いことは言わないから(w)、転職、または他部門への異動を真剣に
検討して頂きたい。技術のない技術者(言葉が矛盾しているが w)の
存在は、顧客にとっても、同業者にとっても、迷惑(足手纏い)以外の
何者でもない。
>>712
そのコピペうざい。


が、このスレ見ているとその意見自体に当てはまる人は腐るほどいる。
そういった人たちが、職業がプログラマでないことを切に願う。
>>707
> どうもかちゅだとタイトルバーは変わるもタスクバーがそのままみたい

タスクトレイのことではないよね?
WM_SETICONでは大小両方のアイコンを変えてみた?
>>707
VCL製のアプリケーションではアプリケーションウィンドウというサイズ0の見えないウィンドウが存在している。
タスクバーの文字はこのアプリケーションウィンドウのタイトルなのでそれを変えればよい。
716デフォルトの名無しさん:02/10/07 22:14
ご教授賜りたく。

フォーム上でのマウスの右クリックメニューを作りたいのですが
サパーリ分かりません。
MSDNで引いても分かりませんでした。
(検索語が悪いのかな?)

教えていただけないでしょうか。
717687:02/10/07 22:18
>>714
スマソ
後述の通り解決しますた

>>715
できました!確かにありました
クラス名:TApplication
タイトルバーのテキスト:かちゅ〜しゃ
ナルホド目からうろこです
どうもでした
>>716
検索が悪い。


右クリックのイベントのとり方が分からないのか、メニューの作り方が分からないのか。
どちらにしろVBなら5分もあれば実装可能だな。
719デフォルトの名無しさん:02/10/07 22:24
>>718
はい、メニューの作り方すら分かりません。
イベントのとり方はマウスクリックのイベントを追えばいいんでしょうか?
>>719
はい MouseDown ででも
検索なら 'PopupMenu メソッド' で探してみてください
てーかその程度ならMSDNでなくぐぐれば一発かと
721デフォルトの名無しさん:02/10/07 22:35
>>720
(゚д゚)肛門から宿便が出ますた。
ありがとうございますた。



メニューエディタで作れんのかよ・・・・・・・
722デフォルトの名無しさん:02/10/07 22:38
かちゅ〜しゃといえば、二重起動防止してあるけどこれ解除する方法はないの?
ソースいじれよ
724デフォルトの名無しさん:02/10/07 23:33
質問させてください。
VBコマンドボタンを押すと選択したPDF文章を印刷する方法を教えてください。
>>724
こりゃまた豪快な質問だな。
726デフォルトの名無しさん:02/10/08 00:05
質問させてください。
VBコマンドボタンを押すとネット上からエッチな写真を収集する方法を教えてください。
フォームに自爆ボタンを付けてください。
728デフォルトの名無しさん:02/10/08 01:23
こんなスレがあったとわっ

ということで、早速質問させて頂きます
今、Inetコントロールを使ってHTTPでアクセスするツールを作っているのですが
その際、User-AgentやRefferを変えることは可能なのでしょうか?
それらしきものは全く見当たらないのですが・・・
729デフォルトの名無しさん:02/10/08 01:39
こんばんは。初めまして。
いきなりですが、質問させてください。

動作中のVBアプリがタスクマネージャのアプリケーションの項目に表示されないようにしたいのですが、可能でしょうか?
可能でしたら、方法を教えてもらえないでしょうか?ヒントだけでもありがたいです。
過去ログにあるようでしたらあると言って貰えると助かります。
よろしくお願いします。
730デフォルトの名無しさん:02/10/08 01:49
こんばんわ

Webbrowserコントロールをでブラウザを作ろうとしてるのですが
Ctrl + Nを押すとIEが立ち上がってしまいます。
IEが立ち上がらないようにするにはどうすればいいのでしょうか。
よろしくお願いします。
731デフォルトの名無しさん:02/10/08 01:51
こんばんは

ばーか
こんばんわんこ
こんばんま
10 input "suuji ..... ",suuji
20 print suuji
30 end

これをVBで書いたらどうなるの?教えて偉い人!
735デフォルトの名無しさん:02/10/08 09:01
>>734
VBに inputに なるものは ない。
代わりに テキストボックスがある。

まず コマンドボタンと テキストボックスを貼り付けて
コマンドボタンをダブルクリックして 出てきたところに
msgbox text1.text

と 書けば よい。
736デフォルトの名無しさん:02/10/08 09:03
あ もちろん 734に 書かれている 意味合いのinputが ないということだよ。

VBにあるinputは ファイル等から読みこむものだ。
これでいいだろ? (w
10: suuji = InputBox("suuji ..... ")
20: MsgBox suuji
30: End
Len(vbCrLf)を実行するとなんと2が返ってくるけど1じゃないのはなぜ?
改行コードの長さを求めると1が帰ってくる関数はあるの?
>>738
悪いことは言わないから(w)、転職、または他部門への異動を真剣に
検討して頂きたい。技術のない技術者(言葉が矛盾しているが w)の
存在は、顧客にとっても、同業者にとっても、迷惑(足手纏い)以外の
何者でもない。
>>738
CRで1バイト、LFで1バイトだが。
CRLFの改行は2バイトであってる。
メモ帳で改行一個のファイル作ってサイズ見て見れ?
2バイトだろ。
>>739 コピペウザイ
742738:02/10/08 11:18
>>740
うおーそうだったのか。1+1で2バイトだったなんて。
ありがとうございます。感激。
743738:02/10/08 11:19
>>740さんですた
>>740 間違ってるよ
バイトじゃなく単に文字数ですよ
745738:02/10/08 11:26
>>740さん >>744さん
1文字+1文字で2が返ってくるということですね。了解っす。
746738:02/10/08 12:02
Pcture1(i)のようにピクチャーボックスが配列になってたら
For i=0 to 100
picture1.visible=false
next
のようにたくさんのピクチャボクスvisibleをいっぺんにfalseにできるけど、
picture1
picture2
picture3
のように独立したピクチャをいっぺんにいじりたい場合はどするの?
For i=0 to 100
(picture & i).visible=false
next
だとエラーがでる・・
747738:02/10/08 12:04
>>746
3行目
picture1(i).visible=false
ですた
>>746-747
Controls("Picture" & i).Visible = False
くだらん質問ばかりすんなよ
くだらなくねえだろ
750738:02/10/08 12:59
>>748さん
VB極めた気配がしまつ。。
ちょっとやってみて報告します。
>>749さん
私は初心者に超がつくのかもしれません。超初心者スレができないかな。
>>748
くだらないのはお前自身
>>751
オマエモナー
753738:02/10/08 13:09
みなさん、私なんかの為にけんかしないでください。
気持ちはとても嬉しいですから(*^ _ ^*)
754デフォルトの名無しさん:02/10/08 13:13
>>748
便乗質問ですが、

strTmp1
strTmp2

という変数があり、
For lngCnt = 1 To 2
strTmp & CStr(lngCnt) = ""
Next lngCnt

みたいなのをやりたいんですが、この場合はどうしたらいいんでしょうか?
>>754
配列にするのがベストかと。
756デフォルトの名無しさん:02/10/08 13:20
質問です。
シングルコーテーションで囲まれた
CSV形式のテキストファイルを作りたいのですが
どうやればいいのでしょうか?
お願いします。
>>756
やってみて分からない個所だけ聞けよ
丸投げはヤメレ
758デフォルトの名無しさん:02/10/08 13:21
>>728
可能

>>739
同様の質問が過去ログにある
759754:02/10/08 13:23
>>755
もちろん普通は配列にするのはわかってますが、
こういうのもできるのかなと思っての質問です。
760746、738:02/10/08 13:24
Dim i As Integer
For i = 1 To 2
Controls("Picture" & i).Visible = False 'いったん消して
Next

Dim Str1 As String
Str1 = "Picture" 'こんなこともできるのか?
For i = 1 To 2
Controls(Str1 & i).Visible = True '再び表示
Next

ありがとうございました。
見事にできました。
Contorolsも知らなかったので検索キーワードも思いつきませんでした。
やはり分厚い本を最初から最後まで読まないとこういったことは覚えられないか。
>>756
Printで一行分の文字列書けばいいんじゃ
762756:02/10/08 13:49
Print #1,"'" & Test1 & "','" & Test2 & "'"
ってこと?
>>759
パブリックな変数なら CallByName で出来るかも。
試してないのであくまでも「かも」ですが。
>>762
それでダメなのか?
765デフォルトの名無しさん:02/10/08 13:53
>>728
object.Execute [url[, operation[, data[, requestHeaders]]]]
MSDEのここのページを見ると詳しく書いてある。
requestHeaders の部分に必要なHttpヘッダを入れる。
766デフォルトの名無しさん:02/10/08 13:54
>>764
文字列中にシングルクォーテションが入っていた場合が考慮されていない。

どのみち、CSVに書き出すのは簡単だが、取り出すのがめんどい。
767756:02/10/08 13:56
>>764
なんか簡単な方法あるのかなと思ったのよ
長くなると面倒くさくて
ありがとう
768765:02/10/08 14:12
そぉりぃ。MSDNでした。
Inet1.Execute , , , "Referer: maeno.page" & vbCrLf & _
"User-Agent: Mybz/1.00" & vbCrLf
>>758
すいません、できれば、User-Agentとかを変える方法の
ヒントとかお願いできないでしょうか
770738、746:02/10/08 14:27
オレが738の書き込み時間から今の時間までに試したり思ったりしたこと。
-------------------------------------------------
実験1
Dim i As Integer
Dim Ary() As Integer
i = 1
ReDim Ary(i) '動的配列のサイズ指定に変数iを使うことができた。
Dim sAry(i) As Integer '静的配列の宣言にはこの便利な方法は使えなかった。
------------------------------------
実験2
Dim j=5 '変数の宣言と同時に値を代入することはできなかった。
------------------------------------
思ったこと1
>>754のようなかんじのプログラム。
For i=1 to 10
Dim BaseName & i as integer'たぶんエラーがでるけど、こんなかんじで変数を宣言できたら便利
Next

754やこのようなことは配列やコレクションでないとできないのかも。
---------------------------------------
初心者がほえてるのは見苦しいが
まあ勝手にムカついてくれ
771デフォルトの名無しさん:02/10/08 15:50
>>770
10時50分から 14時27分まで 考えてたのか。
ヒマだね〜〜〜。
>>771
暇そうだな。お前。
VB使うくらいならDelphi使いたいよな
>>773 使えばいいだろ
775 デフォルトの名無しさん :02/10/08 16:13
いいよね
776デフォルトの名無しさん:02/10/08 16:17
>>773
使う言語の指定が なければ Delphiを使いたいぜーーー。

ホント VBしか しらねぇやつばっかで 困っちまうぜ。
777デフォルトの名無しさん:02/10/08 16:18
こまるよね
778738:02/10/08 16:22
そうでもないよ
779 ◆ExGQrDul2E :02/10/08 16:26
↑にせものをにせものと見抜けないとレスを返すのも難しい。
780777:02/10/08 16:26
そうだよ
781776.5:02/10/08 16:37
そうかな
782デフォルトの名無しさん:02/10/08 16:50
DataGridコントロールにRecordSetを連結させたあと、
DataGridをクリックした場合、その行のレコードの内容を取得したいのですが、
どうしたらいいのか教えてください。
783>782:02/10/08 17:11
Private Const SELECT_STRING As String = _
"SELECT * FROM Contacts ORDER BY LastName, FirstName"
Private Const CONNECT_STRING As String = _
"Data Source=Bender\NETSDK;Initial " & _
"Catalog=Contacts;User Id=sa"

Private m_DataSet As DataSet
Private Sub Form1_Load(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
Dim data_adapter As SqlDataAdapter

data_adapter = New SqlDataAdapter(SELECT_STRING, _
CONNECT_STRING)

data_adapter.TableMappings.Add("Table", "Contacts")

m_DataSet = New DataSet()
data_adapter.Fill(m_DataSet)

dgContacts.DataSource = m_DataSet.Tables("Contacts")
End Sub
>>783みたいに
本当のプロもいるのよね
この程度でプロなら自称素人の私はプロ中のプロだな
786デフォルトの名無しさん:02/10/08 17:50
>>784
マジレス。どの辺がプロ?
弱い犬ほどよく吠える
>>786
データベースをやってるとプロの気配がただようんだ。
789769:02/10/08 18:03
ぼけぼけですた

>>765
めっちゃどうもありがd
790デフォルトの名無しさん:02/10/08 18:04
>>786
VBって、とっつきやすいから他言語を使っている人から見れば想像を
絶するような初心者が多い。

このスレの趣旨であり大部分を占める初心者質問からみれば十分まと
もなコードだと思うよ。
>783
つーかこれあきらかにMS系のサンプルコードだと思うんだが。
792デフォルトの名無しさん:02/10/08 18:20
>>782
DataGridコントロールにRecordSetを連結しているという事は、
そのレコードの内容は既にグリッドに表示されてると思うのだが。
たぶんこのスレ、気が弱い人は質問できない。
794VB信者:02/10/08 19:24
>>793がイイ事逝った
そもそも気の弱い人は2ちゃんに来ない。
ひろゆきが好きでないと2ちゃんに来れない
797デフォルトの名無しさん:02/10/08 19:36
vb6のdirlistboxやfilelistbox等を使用して
ftp接続したサーバー(linux)のディレクトリを
表示することはできますか?
正直VBを全くのド素人の状態から初めて1ヶ月チョット。
このままVBを頑張るか、他の言語へ乗り換えるか・・・。

なんか色んなスレROMってると、
VBでは難しいこと出来ないみたいなことばっかかいてあったし。
どうなんでしょう?
自分が何作りたいかによるだろ。
そもそも難しいことが何かわからない。


VBで出来ないことも実際あるけどそれが難しいこととは別の話しだし。
801デフォルトの名無しさん:02/10/08 19:49
VisualBasic6.0上では、隠しファイル(フォルダも含む)を参照することが出来ません。
そこで、getattr関数を使って、ファイルの属性を調べ、隠しファイルであれば
setattr関数を使って属性を変更してまた戻しています。

で、質問なのですが、
「最近使ったファイル」を調べたいのですが、これは「隠しフォルダ」になっています。
MSDNで調べてみると。setattr関数って、ファイルしか属性変更できないみたいなんですけど、
どのように、フォルダの属性を変更すればよいのでしょうか?

あるいは、属性変更せずに隠しフォルダの中身を参照することはできるのでしょうか?

どなたか分かる方ご教授願います。
>>801
参照ってなにで参照してんのよ?

> そこで、getattr関数を使って、ファイルの属性を調べ、隠しファイルであれば
> setattr関数を使って属性を変更してまた戻しています。
つか、やめれ。
803801:02/10/08 20:02
802様
>参照ってなにで参照してんのよ?
フォルダの中身を調べて、中のファイルのパス名を取り出したいのです。

>> そこで、getattr関数を使って、ファイルの属性を調べ、隠しファイルであれば
>> setattr関数を使って属性を変更してまた戻しています。
>つか、やめれ。
申し訳ございませんが、なぜ駄目なのか教えていただけないでしょうか?
804追記@801:02/10/08 20:05
質問の回答にはなってませんでした。
>参照ってなにで参照してんのよ?
フォルダの中身を調べて、中のファイルのパス名を取り出したいのです。
ですから、Dir関数を使おうかなと
>>798
ハードウェアよりのことはCやアセンブラ。
データベース系はVB。
VBやってるとVBscriptが使えるASPの習得も楽で、
ASP + SQL Server を運営して2ちゃんのようなサイトを作ることもできる。
( ´_ゝ`)フーン  
駄目だこりゃ
>>805
なるほど、これはもう少し慎重に選択してみたいと思います。
ありがとうございました。
ここはとても温和で気軽にカキコめるスレだと思うがな
他に比べれば
>>804
ヘルプでDir関数の第2引数を調べろ
なんでも知ってる人は聞かれなくても自分からどんどん教えたくなるもんさ
>>797
不可能。
>>797
そn二つで出来るかは知らないが、普通のリストボックスじゃダメなん?

FTP接続は、アップロード、ダウンロード、ディレクトリ表示などどれも超簡単。
>>801-803
801のプログラムが実行中に、OSが落ちようとも電源が落ちようとも
どんな事態が起きようとも絶対に、ファイルの属性を元に戻す自信があれば、
別にそのように作ってもいいんじゃない。

>>798
VBを一ヶ月ちょっとやって、まだまともに出来ないのであれば、
他の言語に移るのは止めておいた方がいい。

かつ、難しいといわれるプログラムもしない方がいい。
>>814
マルチタスクって知ってるか?
814 名前:デフォルトの名無しさん[sage] 投稿日:02/10/08 22:07
>>801-803
801のプログラムが実行中に、OSが落ちようとも電源が落ちようとも
どんな事態が起きようとも絶対に、ファイルの属性を元に戻す自信があれば、
別にそのように作ってもいいんじゃない。

816 名前:デフォルトの名無しさん[sage] 投稿日:02/10/08 22:23
>>814
マルチタスクって知ってるか?
818801:02/10/08 23:29
810様 レスありがとうございます。
ヘルプを調べました。フォルダに関する記述は「vbDirectory」のみです。
これはつまり、「隠しフォルダ」については、
普通のフォルダに属性を変更することができない、ということをあらわしているのでしょうか?

814、817様レスありがとうございます。
よく分かりました。なぜ隠しフォルダなのか分からないまま
突発的なエラーが出たときにきちんと対処できるか
どうかという問題ですね。

VBで出来ないことって何━━(゚∀゚)━━ッ??
816は何が言いたいのか?
>>818
んーと、そろそろアレなので解答というか…。
「vbDirectory or vbHiddon」とか。
罠があるのでgetattrしてチェックした方がいいとか、そのgetattrには罠があるとか。
こそらへん調べるといいかな。
>>819
大抵のことはできるでしょ。
VBの基本コンポーネントだけでAPI使用禁止、とか言われたらかなり無理が
出るけど…。
ただ、APIを大量に使い出すとVBである意味がなくなる罠。
まぁ、VBにも他の言語にも向き不向きがあるってこった。
>>819
OSがWindows以外で動作させる事。
つまり、最高精度でWindowsだからあんまり精度を求める処理は無理。
また、高速なスピードを要求する処理。

マルチスレッドは無理すれば何とか。
824801:02/10/09 00:09
821様。レスありがとうございます。
どうやら私的にもう少しヘルプの熟読と、VisualBasic解説HPの検索が必要みたいです。
第2引数の複数選択が出来るみたいですね。
getattr関数、dir関数ともに勉強し直してきます。

ここのスレの皆様、ご教授大変ありがとうございました。
またどうしても分からないことがありましたら、
よろしくお願いいたします。
825816:02/10/09 00:42
>>820
そのプログラムが属性変更して動いている最中でも
別のプロセスが動く可能性があるということですが。

これでもまだ理解できませんでしょうか?
排他ロックが必要か
827デフォルトの名無しさん:02/10/09 01:15
ファイルリストボックスやコモンダイアログでファイルを複数選択して、同じ操作を
させたいのですが、どのような記述をすればいいでしょうか?
内容は、バイナリデータをデコードして、CSVファイルにして出力させるというものなのですが。
よろしくお願いします。
828729:02/10/09 01:21
>動作中のVBアプリがタスクマネージャのアプリケーションの項目に表示されないようにしたいのですが、可能でしょうか?

自己レスです。
過去ログにShowWindowで出来るようなことが書かれていたので試してみました。
hWnd = FindWindow(vbNullString, "キャプション")
ShowWindow hWnd, SW_HIDE
で、"キャプション"に自分以外のアプリのキャプションを指定するとそのアプリはタスクマネージャに表示されなくなりました。
しかし、自分自身のキャプションを指定すると、画面上には表示されなくなるのですがタスクマネージャには相変わらず表示されていました。
これはこういうものなのでしょうか?ご存知の方教えて頂けないでしょうか。よろしくお願いします。
>>828
オーナーウィンドウの方を操作すればできそうだが。
830729:02/10/09 03:23
>>829 さま
アドバイスありがとうございます。
オーナーウィンドウのハンドルを取得してShowWindowしたところ、願っていた動作をするようになりました。
ほんとに助かりました。やっと眠れます。
オーナーウィンドウの意味がまだよく分かっていませんが、ぼちぼち勉強していきたいと思います。
ありがとうございました。
831デフォルトの名無しさん:02/10/09 05:45
>>798
むずかしいことをすれば、むずかしいこともできる。

>>811
能ある鷹はチンコを隠す
ちんこみたい
833デフォルトの名無しさん:02/10/09 11:14
クラスに開始メソッドと停止メソッドを追加したいんですが
予約語で命名出来ません。この場合何てつけますか?

ダメな例 start stop, start end, begin end, open close
834デフォルトの名無しさん:02/10/09 12:27
質問です。
ダイヤルアップ環境で、オフライン中にインターネットに接続しようとすると
ダイヤルアップのウィンドウが表示されますが、
これを画面に表示させないでWebアクセスなどを試みることは可能でしょうか?
(バックグラウンドで無理やりダイヤルアップ接続する方法とかではありません。)
繋がっていなかった場合はなんらかのエラー検出が出来る方法であればありがたいです。
どなたかご存知でしたら教えてもらえないでしょうか。よろしくお願いします。
ダイヤルアップのプロパティで「ダイヤルしない」にすれ。
836デフォルトの名無しさん:02/10/09 13:02
>>833
start too stop, start too end, begin too end, open too close

start stoped, start ending, begin ending, open closed
837834:02/10/09 13:22
>>835 さん
情報ありがとうございます。
ちょっと手元にダイヤルアップ環境がないので調べられなかったのですが、
VBアプリでそのプロパティの項目を「ダイヤルしない」に変更してしまえばよいということですかね?
で、終わったら元に戻してやればいいと。変更の仕方を調べてみます。(分かるかなぁ?)
どなたか他にも情報ありましたらよろしくお願いします。
>>835
丁寧な説明は大いに結構だが、肝心の>>834氏が理解できるかどうか、
甚だ疑問と思われ。
無駄な努力(猫に小判、豚に真珠に値する行為)は放棄すべし。w

・・・他のROM者にはプラスになるのかもしれないが・・・。
839834:02/10/09 15:11
>>838
そこまで言う事無いでしょう?
なんなんだ?あんたは
「この板はプログラムを作る人のための板です。」
>>839
ダイアルアップ接続中かどうかを調べるAPIならいろいろあるよ
対象のOSは何?
>>839
コピペにマジレスカッコ(・∀・)イイ!!
って どこでみたんだったかな>>838の文章。。
843デフォルトの名無しさん:02/10/09 15:15
838は コピペ

そんなこと言うなら、 838が 834が理解できるように 説明しろ。
説明できないのに 否定だけするな。
844834:02/10/09 15:21
すみません、言葉が足りませんでした。
「VBアプリ」でWebアクセスなどを行う場合にダイヤルアップのウィンドウを表示させない方法を探していました。

>>840 さん
そうなんですか!
対象OSはWindows95OSR2以降、WindowsNT4ServicePack3以降のWindowsです。
(幅広くてすみません。)よろしくお願いします。
845デフォルトの名無しさん:02/10/09 15:23
「このスレは初心者のためのスレです。」
ですが、とりあえず勉強してる、調査したなどの努力は みせましょうね。
846834:02/10/09 15:32
まことにすみません、>>840 さんではなく>>841 さまでした。
847834:02/10/09 15:52
>>845 さん
ご忠告ありがとうございます。
ダイヤルアップ関連については初めてでしたので、つい何も考えずに質問してしまいました。
これからは気をつけたいと思います。

少し調べたところRASというAPIがなにやら使えそうなので、もう少し調べてみようと思います。
848834:02/10/09 15:53
ホントすいません。
849デフォルトの名無しさん:02/10/09 18:00
VBScriptですが

フォームのドロップダウンリストの値を取得するには
form.name.options.value

では、ラジオボタンの値を取得する場合はどうすれば良いですか?
850デフォルトの名無しさん:02/10/09 21:45
>>849
それは質問ではなく、問題ですか?
851デフォルトの名無しさん:02/10/09 23:07
よろしくお願いします。

1.ListBox上で、項目が選択されていない状態で右クリックしたとき、
項目が選択されて、かつ右クリックメニューが表示されるようにするのはどうしたら言いのでしょうか。
(右クリックメニュー表示は実装しています。)

ListBoxのクリックイベントと、MouseDownのイベントどちらかに記述するのでしょうか。

MSDNで引いても、ググってもわかりませんですた。
ご教授よろしくおながいします。
ふつう右クリックのメニューがポップアップするのはMouseUp時だろ。
853>>851:02/10/09 23:14
>>852
>>718-720
だったもんで・・・・・

すみませんね。

引き続き回答おまちしております。
854デフォルトの名無しさん:02/10/09 23:22
すみません、型の違いがよくわからないので教えてください。
>>864
それぞれの型によって入れられる値の種類が違います。
ふつうWM_CONTEXTMENUが来たときだろ。
>>856
わざわざコンテキストメニューを出すためにサブクラス化したりするの?
うわVBってこんなのもできないんだ
>>858
何を出来ないと思っているかC言語を用いて述べよ。
>>833
>クラスに開始メソッドと停止メソッドを追加したいんですが
>予約語で命名出来ません。この場合何てつけますか?

旧VBの楽しいところだね。

>ダメな例 start stop, start end, begin end, open close
Prev(ious)とNextとか、ReadとWriteとかもあるね。

例えば、時間を扱うクラスとして、
StartTime、StopTimeとかにしてるよ。
オブジェクト指向的には冗長かつ邪道なネーミングだけど。
861デフォルトの名無しさん:02/10/10 00:54
VBでゲームソフトを作っていて、ヘルプの所に
自分のホームページへのリンクを貼りたいのですが、
こういう場合にはどのようにすれば良いのでしょうか?
ShellExecute
863デフォルトの名無しさん:02/10/10 09:10
>>862
ありがとうございます。調べてみたら使う事が出来ました。

もう一つお伺いしたいのですが、Labelの上にマウスカーソルが来た時、
マウスカーソルを手の形にし(ブラウザのハイパーリンクのように)、
Labelの上から離れたら元に戻したいのですが、
これはどのような処理をしたら良いのでしょうか。
Screen.MousePointer = vbなんとか でカーソルの形を変えられることは分かったのですが、
どんなイベントの所でこれを書けばいいのか分からず困っています。
864デフォルトの名無しさん:02/10/10 09:27
>>863

Formのマウス ムーブのイベントで ラベルのところに x,y が 入ったら ポインタを手に変えたら
いいんじゃないのか?
それで、それ以外は、元に戻すとかする。
>>863
ラベルのプロパティをデザイン時に変えるだけ。
866デフォルトの名無しさん:02/10/10 09:37
ああ それが 一番 カンタンだった。
label1.MousePointer = 15
とか Form Load時に やっとけ。
WritePrivateProfileString を使ってINIファイルに書き込むと、
空白が入ってしまいます。

回避方法を、教えてください。
>>867
すみません、自己解決しました。m(_ _)m
>>867
Nothingで書き込んで、セクションを削除してから
再度書き込む。
>>867
Killステートメントでファイルまるごとあぼーん。
871超初心者かも:02/10/10 15:43
VisuualBasic6.0で質問です。

DoEvents以外ウィンドウズに制御を渡すってどうするんでしょうか?
DoEventsは遅い気がするので。
制御を渡すって、具体的に何がしたいの?
>>871
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
874デフォルトの名無しさん:02/10/10 17:16
VBで実行中のアプリケーションがアクティブかどうかって
どうやって判断するのですか?
アクティブじゃない時は処理を中断させたいのですが。
>>873
85点。
>>874
GetForegroundWindow()
877デフォルトの名無しさん:02/10/10 18:07
>>875
100点の回答を 教えてくれ。
878デフォルトの名無しさん:02/10/10 19:03
>>875
教えを乞う態度とは思えん
(答えを求めておいて、結果を採点か?)
>>878
5/100点
よくVB製ソフトはダサイとか遅いとか糞とかVB製と知ったら落とすきダウンロードする気無くすとか言われてるけどどう思う?
>>880
お前の日本語のほうが糞だと思う
>>880
仕方ないと思う
883デフォルトの名無しさん:02/10/10 20:10
俺の場合は(オンラインソフトね)セットアップ形式だとダウンロードしようか迷うな
いや、落とすのが決まってる場合はいいけど、Vectorでいろいろ探す場合ね。
(゚Д゚≡゚Д゚)
885 ◆5VLaSsH.hA :02/10/10 21:21
InetでGetChunkしてるんですけど(VB6)
1024バイトごとに取得しているので丁度区切りの所に漢字が来ると
化けてしまいます。
これどうにかならないんですか?
886 ◆5VLaSsH.hA :02/10/10 21:24
age
>>880
VB製は糞の割合がかなり高いと思う。
つまり、Vectorで同一カテゴリで手当たり次第DLして試してみる時、
VB製だとなんじゃこりゃ、というレベルのまで掲載されている可能性が高い。

しかし、そのような糞ソフトを除けば、特にVBが重いとかダサいとかいうことは無いかと。
つまりそれなりに定評があるなら言語は何だって関係ないというか。
糞が多すぎるからVB全体のイメージが糞に引っ張られるのだろうな。
>>885
第2引数をicByteArrayにしてバイト配列として取得し、
あとから結合するなりするといいんでないかい?
1024バイトごとにデコードしたいなら、最後の文字が2バイト文字か
どうか判別するルーチン作ってなんとかするとか。
889デフォルトの名無しさん:02/10/10 22:23
>>885
もしかしてこれ?

' 最初のチャンクを取得します。
vtData = Inet1.GetChunk(1024, icString)
DoEvents
Do While Not bDone
DoEvents
strData = strData & vtData
DoEvents
' 次のチャンクを取得します。
vtData = Inet1.GetChunk(1024, icString)
If Len(vtData) = 0 Then
bDone = True
End If
Loop

txtData.Text = Replace$(strData, vbLf, vbCrLf)

私も今までこのまま(MSDNどおり)にやってたけど、そんなだとは気づかなかったよ。
>>889
あちらさんは2バイトコードなんて
地球外言語だと思ってるよ(藁
バイナリで取得してくっつけてStrConvすれ。
892デフォルトの名無しさん:02/10/10 23:52
>>889
私なら、
Do While 1
にして、
If Len(vtData) = 0 Then Exit Do
にするけど、上記のMSDNに書いてあるやりかたの方が効率いいの?
>>892
If Len(vtData) = 0をWhileの条件文にしないのはなんか意味あるの?
894デフォルトの名無しさん:02/10/11 00:18
>>863ですが、>>865さんのやり方で思い通りの結果が得られました。
ありがとうございました。
895デフォルトの名無しさん:02/10/11 00:25
>>893
その方がよかった。
では変えます。
そうしないでMSDNではああいう記述にしているのはなにかその方が効率がよかったりするのでしょうか?
>>895
MSDNは見てないけど、もしも変数bDoneが
静的な変数(モジュールレベル or Static)だったら
893のコードとは意味が違ってくるわな。
897デフォルトの名無しさん:02/10/11 00:32
ボタンとかを自分で作りたいと思います
とりあえずPictureコントロールにLineを描画しているんですがどうでしょうか?
もっとスマートな方法があるんでしょうか?
>>897
なんでそんな事したいの?
ユーザーが画面デザインの設定で見た目かえてても同じボタンになっちゃうじゃん。
そんなの不親切でしかないと思うけど・・。
899デフォルトの名無しさん:02/10/11 00:38
>>898
まぁいいじゃないですか。
オリジナルデザインのソフトっていくつかあると思いますし。
900デフォルトの名無しさん:02/10/11 00:39
送られてきたデータを画面に表示させる場合に
(例1)Winsock.GetData strData
Text1.Text = Text1.Text & strData & vbNewLine

(例2)Winsock.GetData strData
Picture.ForeColor = RGB(0,0,255)
Picture.Print = strData

(例3)Winsock.GetData strData
List.AddItem strData
List.ListIndex = List.CountIndex - 1 'データが下に隠れないように

出力する場所(テキストボックスなど)、出力方法、知識が足りないためか以下でや
りたいことができません。
まず、例1、例3だと送られてきたデータごとにフォントカラーが変更できない。
例1、例2ともに最後に送られてきたデータを画面内に表示させたいのです
が、古いデータがたまると、新しい行はスクロールバーで下に行かないと文
字が見れなくなる。
データごとにフォントが変更でき、最後に表示するデータがスクロールバー
で隠れることがないようにする方法教えてください。

だからVBのソフトはグロテスクな見た目とか言われるんだよな。
>>897
俺も同じような方法を使ってまつ。
>>897
Pictureコントロールならそのまま画像はればいいじゃん。
904897:02/10/11 01:18
>>903
いえ、picture1.paintで真ん中にテキストを表示させて、
周りをラインを描画させてるんです。
あとMouseDownの時の描画とかも

と、ここまでは出来たんですが、上の動作をモジュール化させたいのですが
その辺がよくわかりません
905D:02/10/11 02:43
>>900
最新の状況を表示するログのようなものならRichTextBox使って

Dim Buff As String
For i = 0 To 100
Buff = CStr(i)
Me.RichTextBox1.SelStart = 0
Me.RichTextBox1.SelText = Buff & vbCrLf
Me.RichTextBox1.SelStart = 0 '保存したテキストの選択
Me.RichTextBox1.SelLength = Len(Buff) ’同上
Me.RichTextBox1.SelFontSize = i    ’フォントサイズの変更
Next i

こんな感じでいいんじゃない?
保存も簡単だし
906D:02/10/11 02:52
>>904
コントロール自作しちゃえば?
907仕事でVB不幸者:02/10/11 02:54
おそろしく初心者質問だということはわかっているのですが
検索しても出てこなかったので質問させてください。

2次元配列の宣言と初期化はVBではどのように記述したらいいのでしょうか?
C言語でいうところの

int PosArray[5][5] = {
{1,2},
{2,3},
...
};

このようなものです。
>>907
宣言時の初期化はできません。
909デフォルトの名無しさん:02/10/11 03:22
>>907
昔のbasicならdata文とかあったけどねえ。
関数作って代入させるとかかな。

sub setArray(,array, x, y, val) とかしてなかで代入。
910D:02/10/11 03:31
>>909
READ〜DATAナツカシー。無くなったのが大変痛い。
&Bも使えませんねえ。
911897:02/10/11 08:22
>>906
ActiveXコントロールですか?
配布時に面倒なので・・・
クラス化とかいうのやればよいのでしょうか。
クラスって一度も作ったこと無いけれども
>>911
その前にお前作れんのかと。
>>911
なぁ、自分の趣味で他人のアドバイス蹴りまくるのなら自分の力で解決すれば?
人に迷惑かけてまでやることでもあるまいて。
用語はわかってるみたいだから後は検索するだけだろ打て。
914897:02/10/11 08:32
は〜いわかりますたよぶぅ〜。
>897
ユーザーコントロールって知ってるか?
あと氏ねよ
916897:02/10/11 08:45
ああこれなら配布時問題ないのね。
ありあと〜。
>>860
レスありがとうございます。参考になりました。
自分の場合待ち受け開始、停止ということで
StartWaiting, StopWaiting
と名付けることにします。
918897:02/10/11 11:07
>>915
言うに事欠いて
氏ねはないでしょ?
キモオタ風情がいきがりやがって。
919エロチカセヴン:02/10/11 11:16
おまいら新スレ

(*´д`*)ハウァッ… VB初心者質問スレ Part16
http://pc3.2ch.net/test/read.cgi/tech/1034302532/l50
[氏ね]

悪名高い掲示板サイト「2ちゃんねる」内でよく使用される用語。
語源は単純に「死ね」だが、あいさつや相槌など、コミュニケーション
の潤滑油として使用される事も多い。
例 つーか氏ねよおめーら
オタク用語みたいなもんだな。だせぇ。
922デフォルトの名無しさん:02/10/11 13:49
>>921
なにか勘違いしてるようだね。初心者君。
923デフォルトの名無しさん:02/10/11 14:00
これってどうよ? マジ?

http://www.dream-express-web.com/space-trust.htm
924897:02/10/11 15:02
>>918
偽者いるし(w
925 :02/10/13 18:41
漏れら極悪非道のageブラザーズ!
今日もネタもないのにageてやるからな!
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧   ∧_∧    age
 (・∀・∩)(∩・∀・)    age
 (つ  丿 (   ⊂)  age
  ( ヽノ   ヽ/  )   age
  し(_)   (_)J
潤滑油だったっけか
↓氏ねよザーコ
927926:02/10/13 19:26
あ、↑失敗
↑氏ねよザーコ(^o^)
氏ねよザーコ(^o^)↓
┏━━━━━━━━━━━━┓
┃       マホカンタ      ┃
┗━━━━━━━━━━━━┛
>>929
あなあいてる。
931VB房:02/10/16 19:52
もしよかったら教えて下さい。
質問です〜。

内側のIF文で外側のIF文を抜けたいんですYO!
そんな命令ありますか?

a = 0
b = 0

If a = 0 Then '外側

If b = 0 Then ’内側
'ココから外に抜ける
  'なんか脱出する命令。
End If

MsgBox ("NG")
End
End If

MsgBox("OK")
End
>>931
goto
>>931

> 内側のIF文で外側のIF文を抜けたいんですYO!
> そんな命令ありますか?

End
934VB房:02/10/16 20:07
>932
すんません…

お客様がGOTO恐怖症なんですYO〜。
GOTO以外でお願いしやす〜。
>>934

GoSub 〜 Return
>>934
関数にする
937VB房:02/10/16 20:35
>933
>935
>936
なるほど…。
やはり、一つ外側のIF文の外に出る命令は
ないんですね…。

ありがとうございました。
>>931
goto がイヤなら関数にして

exit sub(function) をうまく使う。



>お客様がGOTO恐怖症なんですYO〜。
金取ってるのか?このレベルで
939デフォルトの名無しさん:02/10/16 21:45
現在ログインいているユーザのグループ名を取得するには
どのようにしたらよいでしょうか?
つーか、旧スレageるなよ
>>931
仕事で使ってる?
だとしたら、かなりレベル低いよ。
Else使えばそんな作りにならないって。
そんなコード書くのがそもそもの間違い。
その通り。If文から抜け出さないと・・・という考えが既に間違い。
944デフォルトの名無しさん :02/10/17 00:23
ご存知のかたがいましたら、教えてください。

VBのImageにTIFF画像を読み込みたいのですが、
直接読み込めないので、TIFF画像を選択したら、
裏でJPEGに変換して変換したJPEGファイルを表示
しようと思っています。
TIFFからJPEG変換の方法はどのようにしたらよいですか?

945デフォルトの名無しさん:02/10/17 01:03
>>944
Imaging使えば、TIFF読み込めるよ。(WinXPを除く)
SUSIEプラグイン使ったら?
947931:02/10/17 14:56
馬鹿にするんじゃねえよ!!クソ虫どもが!!!
948デフォルトの名無しさん:02/10/17 15:15
DOにしるっ!

a = 0
b = 0

do while a = 0 '外側

If b = 0 Then ’内側
'ココから外に抜ける
  'なんか脱出する命令。
exit do
End If

MsgBox ("NG")
End
loop

MsgBox("OK")
End


949デフォルトの名無しさん:02/10/17 15:16
あ、
最後のloopの手前にも Exit do が 必要だに。
a = 0
b = 0

If a = 0 AND b <> 0 Then '外側

MsgBox ("NG")
End
End If

ここに処理

MsgBox("OK")
End
>>948-949
本来の目的以外に制御構文使うなよ・・・
見にくいコードだな。
VBばかり使ってるからこんなコード書くようになるんだ。
953デフォルトの名無しさん:02/10/17 17:05
>>951

条件に見合ったら、一回だけループさせる。

本来の目的に沿ってるが(w

ループの回数が 1回だけでは 本来の目的に 沿わないというのか?
ならば、Exit Doするときに a=1 とか してやればいいだけの話。
>>953
まぁ、アホに反論した俺もたいがいアホなんだが。
絶対に0〜1回しか実行されないと言うのは反復ではなく選択だと思うが。
VB厨を象徴する糞コード
956VB:02/10/17 18:00
VB一人で勉強中の者です。
トグルを利用したいのですが、VBで使用することは可能でしょうか?
今のところofficeのトグルボタンを参照して使用してますが、
officeがインストされてない環境だともちろんエラーがでてしまうので。
どうかご回答のほどよろしくお願いします。
トグルって何だっけ?
チェックボックスのプロパティ変えるとできるやつ?
トグルボタン=へこんだり、もどったりするボタン。
ACCESS VBAをやってる奴にはなじみのコントロール。
>>958
やっぱそれやね。チェックボックスのStyleプロパティを
1-グラフィックスにすればできるよ>>956
961VB:02/10/17 19:30
>>960
大感謝!!ありがとうございます。
でもこれいざやってみると基本中の基本みたいっすね。
確認能力不足、痛切に感じます
962デフォルトの名無しさん:02/10/18 02:17
>> 944
で書き込んだ、TIFFを変換するという内容なのですが、
レスいただいた内容のSusieプラグインでピクチャーボックス内に
表示することはできたのですが、
結局、JPEGに変換する必要がでてきました・・・

どうにかして、変換できないものでしょうか?
(市販のOCXなどでできそうなのですが、高いので・・・)

また、レスいただいている内容でImagingとありますが、
環境がXPなので使えそうにありません。

お願いします。
963デフォルトの名無しさん:02/10/18 09:10
Imagingって XPで 使えないのかなぁ?
964モモ様:02/10/19 01:39
助けてください
データフォームウィザードを使ってアクセスのデータベースに接続したい
のですがデータベースファイルを選択するとき、ファイルの名前をいれても
「認識できません」ってでます。私はどうすれば、、、

ソフトはvb6、アスセス2002です。
>>964
一人称に「様」、普通にむかつきました。
966モモ:02/10/19 01:49
ごめんなさい。
訂正してお詫びします
>>962
ImageMagick の convert を使って変換するとか。
Windows 版もあるし。
http://www.melt.kyutech.ac.jp/~ueno/HowTo/imagemagick.html
ftp://ftp.eos.hokudai.ac.jp/pub/graphics/ImageMagick/windows
旧スレあげんな。>モモモ
969デフォルトの名無しさん:02/10/19 06:29
1000ゲットしるまでは あげまくるぞ!
1000予約。
>>970
Err.Number = 17
Err.Description = "要求された操作は実行できません。"
972デフォルトの名無しさん:02/10/21 23:43
(´・ω・`)999予約
973デフォルトの名無しさん:02/10/22 16:39
973 げっとぉっ〜〜
次スレの1000予約
975デフォルトの名無しさん:02/10/22 21:23
インターネットの履歴を完全に消したいんだけど
インターネットのお気に入りとかの横にある履歴を消したただけで
インターネットの履歴は完全にけせますか?
>>975
無理
「インターネットの履歴」
え?無理なの。じゃあ後どこを消せばいいの?
履歴消したつもりのやつのPC見るの楽しい。
どっかにのこってんの?>>979
のこってるよ
どこにのこってますか?
983デフォルトの名無しさん:02/10/22 22:06
そんなPC見て どこが 楽しいんや?

どこか ちゃんと 言え(w
984デフォルトの名無しさん:02/10/22 22:09

        まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )

985デフォルトの名無しさん:02/10/22 22:13

        まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::1000::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (  992 )    (  993  )   (  994 ) 995 )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (  996 )    (  997 )    (  998 )    (  999 )
986デフォルトの名無しさん:02/10/22 23:07

        まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::1000::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (  992 )    (  993  )   (  994 ) 995 )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (  996 )    (  997 )    (  998 )    (  999 )

987デフォルトの名無しさん:02/10/22 23:21
おまえらこのスレタイトル恥ずかしくありませんでしょうか?
>>988
おまいは最低なやし。ぼけ。
990デフォルトの名無しさん:02/10/23 09:56
いまいち もリア柄ーんの王(w
991デフォルトの名無しさん:02/10/23 10:21
よいしょ
992デフォルトの名無しさん:02/10/23 10:22
えいさ
993デフォルトの名無しさん:02/10/23 10:22
ハッ
994デフォルトの名無しさん:02/10/23 10:23
・・・・・・
995デフォルトの名無しさん:02/10/23 10:23
ヽ(`Д´)ノ
996デフォルトの名無しさん:02/10/23 10:24
996
997デフォルトの名無しさん:02/10/23 10:24
997
998デフォルトの名無しさん:02/10/23 10:25
998
999デフォルトの名無しさん:02/10/23 10:26
↓1000
1000デフォルトの名無しさん:02/10/23 10:26
・・・・・・・・・1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。