トップページtech
1001コメント306KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001エロチカセブンNGNG
  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
0002デフォルトの名無しさんNGNG
(゚Д゚≡゚Д゚)
0003デフォルトの名無しさんNGNG
ドピュ
0004前スレ990NGNG
もたもたしてる間に勃ってしまった……手を煩わせてスマソ>>1&モツカレー

一応前スレ
Part14 http://pc3.2ch.net/test/read.cgi/tech/1030947162/
0005デフォルトの名無しさんNGNG

         |   |      \
         |   ̄| ̄    \
         |  _|_     |       \
         |/|/    / /  \    ̄|
                           /
              ∧             ∧
              / ・           / ';,
            . /  ';          ./  ';
            /   ;______/   ;
          /                  \
         /    /          \     \
        /´       |____|          |
        |  /////    |     |    /////    |
       |        .|     |           |
        |         |    |            |
        |        ';    /           /
         \        \/        .. /
           ヽ             ........:::::::<
0006デフォルトの名無しさんNGNG
VBの小ネタとかTipsとかもOK。前スレ1000は綺麗に終わったね。
0007前スレ979NGNG
とりあえず、スレの最後だったので途中になってしまったみたいなので、
前スレでの質問を答えると同時に、もう一回載せます。
−−−−−−−−−−−−−−−−
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
と書くと非常に効率が悪いです。
もっと効率のいいプログラムってあるでしょうか?
私にはどうしてもこれしか思いつきません…
−−−−−−−−−−−−−−−
是非とも知恵を貸してください
0008デフォルトの名無しさんNGNG
(*´д`*)アハァ… のほうがよかった
0009デフォルトの名無しさんNGNG
Winsockコントロールについて質問があります。
サーバと複数のクライアントとの間でデータのやり取りをしているのですが、
ループなどを使ってサーバから複数のクライアントに一気にデータを送りたい
のですが、どのような方法があるでしょう?
例えば、
For i = 0 To 5
  Winsock( i ).SendData "test"
Next i
みたいに書いても、最後のクライアント(5個目)には送られるのですが、
それ以前のクライアントには送られないのです。
0010デフォルトの名無しさんNGNG
前スレ>>984
977ではないが、VBのCurrency型はかなり癖があるぞ。
VB5では「Int(100@/1@)」がP-Codeでは100,ネイティブでは99になったりする。
(開発環境か実行環境かの判断に使えたりするw)
ちなみにVB6ではどっちも100なんだよな。(まぁ仕様らしいが)
その他にもCurrency型の挙動不審はあったとおもう。(まぁ仕様だろうが)

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

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

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

Dim i As Currency
For i = 214747 To 214748
Debug.Print i
Next
0016デフォルトの名無しさんNGNG
前すれ >>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 が下限値。
0017前スレ978NGNG
>>10 >>15
ありがとう。(まず使わないけど)覚えとく。
0018デフォルトの名無しさんNGNG
>>12
( ゚Д゚)お!出来ました。
ありがとうございます。
0019デフォルトの名無しさんNGNG
>>15
おいおい今さら何を。
0020デフォルトの名無しさんNGNG
>>19
>前スレの978、984へ
これ読める?
0021前スレ999NGNG
>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回ぐらい試してみたけど、一度も例外なしだった。
0022デフォルトの名無しさんNGNG
前すれの

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

なんかすげー
0023前すれの1000NGNG
ありがとう。でも、その話題はもういいよ。
0024HAIRETUNGNG
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ではこのような方法しかないのでしょうか?
0025デフォルトの名無しさんNGNG
VB上からフォルダに共有をかけるっていうはいったいぜんたいどうすればいいんでしょうか?
002617NGNG
ぐぐって一発検索>>25
002725NGNG
>>26
いや、
http://vbvbvb.com/jp/gtips/0251/gNetShareAddFolder.html
これは見つけたんだが、NT以上対象らしく、
98で試したらだめだったんだ。
■ このスレッドは過去ログ倉庫に格納されています