(*´д`*)ウッ… VB初心者質問スレ Part15
■ このスレッドは過去ログ倉庫に格納されています
0001エロチカセブン
NGNGPart 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デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004前スレ990
NGNG一応前スレ
Part14 http://pc3.2ch.net/test/read.cgi/tech/1030947162/
0005デフォルトの名無しさん
NGNG| | \
|  ̄| ̄ \
| _|_ | \
|/|/ / / \  ̄|
/
∧ ∧
/ ・ / ';,
. / '; ./ ';
/ ;______/ ;
/ \
/ / \ \
/´ |____| |
| ///// | | ///// |
| .| | |
| | | |
| '; / /
\ \/ .. /
ヽ ........:::::::<
0006デフォルトの名無しさん
NGNG0007前スレ979
NGNG前スレでの質問を答えると同時に、もう一回載せます。
−−−−−−−−−−−−−−−−
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デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNGサーバと複数のクライアントとの間でデータのやり取りをしているのですが、
ループなどを使ってサーバから複数のクライアントに一気にデータを送りたい
のですが、どのような方法があるでしょう?
例えば、
For i = 0 To 5
Winsock( i ).SendData "test"
Next i
みたいに書いても、最後のクライアント(5個目)には送られるのですが、
それ以前のクライアントには送られないのです。
0010デフォルトの名無しさん
NGNG977ではないが、VBのCurrency型はかなり癖があるぞ。
VB5では「Int(100@/1@)」がP-Codeでは100,ネイティブでは99になったりする。
(開発環境か実行環境かの判断に使えたりするw)
ちなみにVB6ではどっちも100なんだよな。(まぁ仕様らしいが)
その他にもCurrency型の挙動不審はあったとおもう。(まぁ仕様だろうが)
・Currency型は保存と計算以外には使わない。
・Currency型以外と計算させない。(変換させるときは細心の注意)
・ネイティブできっちり検証する。
ってのがおいらの脳内ルールだな。
(Currencyに限らんがな。ヘルプに書いてあったと思うし)
0011デフォルトの名無しさん
NGNGそのAAはアハァ…だろ。
文字変える余裕あるならAA変えてみせろ。
0012デフォルトの名無しさん
NGNGWinsock( i ).SendData "test"
の後にDoEventsいれたら?
0013デフォルトの名無しさん
NGNGサンプルを作ってみた。
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
これじゃだめなのかな?
001413
NGNGDim n As Integer
を脳内あぼーんして読んでください。
スマソ
0015前スレ977
NGNG>Currency型の変数をFor文の制御変数に使っちゃだめよん。
の理由は、正常にループできない範囲があるから。
214748辺りの値からおかしくなるらしい。(V友より)
以下のコードを試すと暴走します。
Dim i As Currency
For i = 214747 To 214748
Debug.Print i
Next
0016デフォルトの名無しさん
NGNG> 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 が下限値。
0018デフォルトの名無しさん
NGNG( ゚Д゚)お!出来ました。
ありがとうございます。
0019デフォルトの名無しさん
NGNGおいおい今さら何を。
0020デフォルトの名無しさん
NGNG>前スレの978、984へ
これ読める?
0021前スレ999
NGNGn = 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デフォルトの名無しさん
NGNG1000 名前:デフォルトの名無しさん 投稿日:02/09/23 00:00
次スレ
http://pc3.2ch.net/test/read.cgi/tech/1032706491/l50
なんかすげー
0023前すれの1000
NGNG0024HAIRETU
NGNGsub 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デフォルトの名無しさん
NGNG002617
NGNG002725
NGNGいや、
http://vbvbvb.com/jp/gtips/0251/gNetShareAddFolder.html
これは見つけたんだが、NT以上対象らしく、
98で試したらだめだったんだ。
0028デフォルトの名無しさん
NGNG> これは見つけたんだが、NT以上対象らしく、
MSDN では...
Import Library: Use netapi32.lib (Windows NT) or svrapi.lib (Windows 95).
ってなってるから、単に API 定義している Declare 文の Lib オペランドを "svrapi.dll" にするだけじゃないの ?
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNGタブの所に表示しない様にするにはどうすれば良いのでしょうか?
(プロセスのタブには表示されるが、アプリケーションのタブの、
タスクと状態の表示に、アイコンや実行中、等の表示が無い様に)
例えば、タスクトレイに常駐しているアプリがタスクマネージャに
表示されないのと同じ様にしたいのですが…
色々プロパティやAPIを試してみたのですが、上手くいきません。
どうか宜しくお願いします。
003225
NGNGsvrapi.dllに置き換えていろいろ試してるんだけど、全然成功しないです。
SHARE_INFO_2 の構造体の定義が、上のURLとMSDNでは違う気がして
そこの部分を変えたりしてるんですが一向にうまく行く気配を見せないです。
0033デフォルトの名無しさん
NGNG> 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 かよくわからないので、両方試す必要があるかも...。
0034デフォルトの名無しさん
NGNG> これでどう?
単純に数値を求めるだけなら OK だと思うけど、これでは n = 100 の時に A = B = C = D = 25 とかはでてこなくなるよ。
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNGCos(0)は1をちゃんと返してくれるんだけど
ほかの数だと値がおかしくなる
例えばsin(180)は0のはずなのに-0.801152...となる
角度からsin,cosを求めるにはSin,Cosじゃだめなのか?
どうしたら求められるか教えてくれる親切な人、教えてください
0037デフォルトの名無しさん
NGNGエクスプローラーみたいに、ファイルを選択すると容量とか表示されるようにしたいです。
もちろん、マウスでドラッグしての複数選択や、Shift,Ctrlキー押しながらの複数選択も検出します。
どうやればよいでしょうか?
0038デフォルトの名無しさん
NGNG> 例えばsin(180)は0のはずなのに-0.801152...となる
ねぇ、「ラジアン」って言う単位知ってる ?
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNG0041デフォルトの名無しさん
NGNG> 知らないから聞いてるんですよ、たぶん
知らないなら調べろ。
0042デフォルトの名無しさん
NGNG004339
NGNG0044デフォルトの名無しさん
NGNG> 「ラジアン」っていう言葉を知らなかったら調べようがないでしょう?
MSDN 読んだことないの ? Sin 関数の一番下に...
角度の単位を度からラジアンに変換するには、度にπ/180 を掛けます。ラジアンから度に変換するには、ラジアンに 180/πを掛けます。
と書いてある。これでわからないなら、プログラマー辞めたほうがいい。
0046nobukiti
NGNG普通のクライアントサーバーシステムを作りたいのですが、問題点等は
ありますでしょうか?
本社にOracle Serverを置いて、各拠点からoo4oで繋いでデータの参照、
更新等するつもりです。データ件数的には1000件未満を想定しています。
速度面、パフォーマンス等で遅かったりするのでしょうか?
今までLANでの普通の10Base-Tで使用する事を前提とした開発しか経験した
ことがないので、128kbps程度の回線速度だとどうなるかよくわからないのです。
ご面倒でしょうが、お知りの方おられましたらお教え下さい。
0047デフォルトの名無しさん
NGNG日付型の項目がNULLの場合のSQL文書いてるンですけど
WHERE 日付 = ##
ではないのですか?
0048nobukiti
NGNG0050デフォルトの名無しさん
NGNGそりゃ、LANよりは遅いけど、気を配って作れば問題なし。
0051nobukiti
NGNGご返答ありがとうございます。
ちなみに 48は私じゃないです。
そうですか、、、
>気を配って作れば問題なし。
この、気を配ってというところはストアドとかを使って
できるだけネットワーク上のトラフィックを減らした
作り込みが必要という意味ですかね?
ストアドはあまり組んだことがないので不得意なので
どうしようか迷っています。
0052デフォルトの名無しさん
NGNGIs Nullじゃないの?
0053nobukiti
NGNG0054デフォルトの名無しさん
NGNGVBSで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
0055デフォルトの名無しさん
NGNGもちろんストアドにするのも大事だ。
例えばOO4Oをよく理解してる?
ダイナセットひとつとってもいろいろパラメータあるでしょ?
あれも、最適なものを指定してやるとか。
0056nobukiti
NGNGやはり、色々あるんですねー
パラメーターとか調べてみます。
ありがとうございました
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG一文字ずつ格納汁
005925
NGNGバックアップはサーバ機のみで取れるという仕様にしよう!
0060デフォルトの名無しさん
NGNGありがとうございます。
For i = 0 To 12
s(i) = AscB(astImage.Read(1))
Next
で、出来るようになりました。
0061デフォルトの名無しさん
NGNGNULLってなんですか?
0062デフォルトの名無しさん
NGNGAPIを教えてください。見つからないよぅ(つд`)
0063デフォルトの名無しさん
NGNGDWORD 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.
0064デフォルトの名無しさん
NGNGキタ━(゚∀゚)━( ゚∀)━( ゚)━( )━( )━(゚ )━(∀゚ )━(゚∀゚)━!!!!!
ありがとうございます。
現在実験中です、AppBarDataがちょと難しいです・・・がんばります。
0065デフォルトの名無しさん
NGNGその文字列をすべてChr(0)の文字にする、ということだと思われ。
0066デフォルトの名無しさん
NGNG君の資料は古いと思われ。
>>64
ABM_SETSTATUSを使う。ただし、WinXPでしか効かない。
Win95、98、NT4、2000でダメなことは確認済み。
それ以外の環境だと10個くらいのAPI駆使して、
無理やり設定ダイアログだして「自動的に隠す」を切り替える方法を
取ろうとしていた人もいたがうまくいったかどうかは知らない。
0067デフォルトの名無しさん
NGNGttp://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=utf8&oe=utf8&q=NULL%E3%81%A8%E3%81%AF
0068デフォルトの名無しさん
NGNGwin98です、だめそうですね・・・
あきらめます、ありがとうございました。
0069
NGNG配列とか 確保しても 解放しなくてもいいよね?
誰か 教えて。
0070デフォルトの名無しさん
NGNG0071
NGNG画面を作るときに、リストボックスの大きさをFORMの大きさにより
変更したいのですが、標準でそのようなコントロールは、あるのでしょうか?
教えてください。
0072デフォルトの名無しさん
NGNGその配列を private で使用しているフォームのunload時に、
set frmXXX = Nothing
とすればそのfrm内の配列は開放される。
逆にこれを入れないとform内の全ての保持値がメモリに残ったままになっているので
(VBアプリを終了するともちろん解放されるが)
保持しておく必要がないなら入れるべきだろう。
0073デフォルトの名無しさん
NGNGWinAPI使うたびに思うんだけど、なんでもっと便利関数にしないのかな。
TaskBarAutoHide(TRUE);
みたいなAPIを用意してくれればいいのに。
0074
NGNGフレームみたいに 二つのリストボックスの大きさを調整したいんです。
007574
NGNG0076デフォルトの名無しさん
NGNGプ
0077デフォルトの名無しさん
NGNGWin98以下は対応にならないんですか?
0078デフォルトの名無しさん
NGNG勝手に仕様を作るな
0079デフォルトの名無しさん
NGNG何をやりたいのか意味不明です。
>画面を作るときに、
もしやデザイン時に、って事?
>リストボックスの大きさをFORMの大きさにより変更したいのですが、
普通に変更すればいいんじゃ・・・
>標準でそのようなコントロールは、あるのでしょうか?教えてください。
どのようなコントロールかわからないので答えられないです。
>フレームみたいに 二つのリストボックスの大きさを調整したいんです。
フレームもリストボックスもサイズ変更の仕方は同じでは。
0080デフォルトの名無しさん
NGNGじゃあどういう仕様だよ。
教えれ.
0081デフォルトの名無しさん
NGNGUnload時に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
0082デフォルトの名無しさん
NGNGマウスの右クリックとctrlキーの使用が禁止されているアプリケーションから、
テキストデータをコピーするプログラムを作成中です。
しかし、上記の禁止事項の為に、クリップボードの中にテキストデータを持ってくることが
出来ません。
コピーを行いたいテキストを反転させる事までは可能です。
使用言語はVB6.0とVC++6。0です。
0083デフォルトの名無しさん
NGNG0084
NGNGエクスプローラーとかで フォルダが出てる部分とファイルが出てる部分がありますよね。
そのフォルダのフレームの大きさとファイルのフレームの大きさは、
両方の真中にある区切りで調整できます。
また、エクスプロラー自体の大きさを変えても、
フォルダやファイルの部分の大きさが変わります。
こういうのをやりたいのですが、その真中の区切りみたいなのは
何かコントロールでできないかと いうことです。
0085デフォルトの名無しさん
NGNGアプリケーションウィザードで、エクスプローラースタイルのを
作ってみてコード見てみ。やってること分かるから。
0086デフォルトの名無しさん
NGNG真中の区切りというのは左右のコントロールの境い目という事ですね。理解しました。
左のコントロールのWidthプロパティ、右のコントロールのLeft及びWidthプロパティを調節すればOKです。
ちなみに「フレーム」というと通常VB組み込みのフレームコントロールの事を指すと思います。
混同するので>>74>>84のような意味では使わない方がよろしいかと。
0087デフォルトの名無しさん
NGNG008882です
NGNG教えて貰えませんか?
0089デフォルトの名無しさん
NGNG1個ずつ指定した Split 関数を何回か呼ばないとダメかな?
0090デフォルトの名無しさん
NGNG画像をクリックしたりして移動させたり特定の場所にくると吸い付いたり
その他の場所だと元にもどたっりするようなソリティアみたいな感じの・・
009183
NGNG教えるもなにも、仕様の問題だから何ともいえないよ・・・
パッと思いつく方法としては、テキストを選択すると、その周辺にコピーボタンが表示されるとか。
Officeみたいな奴ね。
0092デフォルトの名無しさん
NGNG他のアプリケーションって書いてあるだろ。ちゃんと読んでやれよ。
0093デフォルトの名無しさん
NGNG009583
NGNG取得元が他のアプリだと何か不都合でもあるの?
どっかのパッケージで中身が一切さわれません、ってならともかく。
■ このスレッドは過去ログ倉庫に格納されています