トップページ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
0346デフォルトの名無しさんNGNG
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 以外の値を取ったりしているのでしょうか?
それとも何か根本的な間違いをしてるんでしょうか?
わかる方がいたら教えて下さい、お願いします。
0347デフォルトの名無しさんNGNG
DeveloperとかProfessionalっていうのはどう違うんですか?
単語の意味はわかるがあらわそうとしているものがわからない。
0348デフォルトの名無しさんNGNG
6.0Enterprise Edition に付属のMSDEは配布可能なんでそうか?
0349333NGNG
>>345
ヘ〜。
ありがと〜。
0350デフォルトの名無しさんNGNG
>>347

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

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

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

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

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

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

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

みなさま、宜しくお願いします。
0356デフォルトの名無しさんNGNG
>>355

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

これの本試験対策講座をやってみたいのだがどうしたもんか(w
http://www.it-system-jp.com/vbkentei3.html
0366デフォルトの名無しさんNGNG
始めまして。
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メッセージをリッチテキストボックスに送信して設定する方法というのが見つかりました。
ただ、肝心のパラメータの指定方法が分かりませんでした。それでいまこうして質問させていただいている次第です。

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

以下その方法を使って私が書いたソースです。
0367366NGNG
文字数制限に引っかかったので分割しました。
'標準モジュールのコード---------------------
'-- 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

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

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

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

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

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

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

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

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

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

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

Int(Rnd() * 100) + 1

ですが、50〜100までの乱数が必要な場合はどの様に求めればいいのですか?
0388ふなはすです(QOO)NGNG
横スクロールのシューティングゲームのソース
(VB) があるサイト教えて♪
0389デフォルトの名無しさんNGNG
>>387
おまえのレスの
> Int(Rnd() * 100) + 1

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

あとは自分で考えてみ。
0390デフォルトの名無しさんNGNG
>>389
あ!

Int(Rnd() * 100) + 50

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

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


0393デフォルトの名無しさんNGNG
>>392

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

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

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

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

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

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

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

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

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

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


0407デフォルトの名無しさんNGNG
>>406
(*´д`*)
0408 NGNG
>>406

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

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

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

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

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

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

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

もしくは、文化オなんとか社が出してる スプレッドを使うんだな。
0424デフォルトの名無しさんNGNG
ドラッグ&ドロップで質問したいです。
今、ファイル名を指定してそこにあるデータを配列に落としているんですが、
これをドラッグ&ドロップが行われた時にドロップされたファイルを
配列に落とすにはどうしたらいいんでしょうか?今、使っている命令は
こんな感じです。
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

お願いします。
0425デフォルトの名無しさんNGNG
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-手動にしとく。
0426424NGNG
ありがとうございます。試してみます。
0427デフォルトの名無しさんNGNG
>>423
そういったOCX等使うと、msiインストーラー作るとき、
OCXやらDLLやらがたくさんアプリケーションフォルダにいれられてごっちゃになるんですがいいほうほうはないでしょうか?
0428お茶丸NGNG
じつはiMode用のメール保存閲覧ソフトを作りたいと思うのですが、
有効な情報がなかなか得られません。
もしよろしかったら少しでも結構ですので作成のヒント、
関連する情報など教えていただけないでしょうか?
一方的ですみませんが何卒よろしくお願いします。
0429デフォルトの名無しさんNGNG
>>428
一方的もなにも、わけわからんぞ。

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

ぐらいは書け。なるべく具体的に。
0430598NGNG
まいった
0431デフォルトの名無しさんNGNG
教えて下さい

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

a=3.99
b = a \ 1

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

☆希望する動作OS
 WindowsXP

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

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

以上です。すみません初投稿なもんで(汗)もしご存知でしたらよろしくおねがいします<(_ _)>
0438お茶丸NGNG
追加です
現状として、携帯電話になんらかのコマンドを送出すると、対応した情報
(電話帳データ等)が返ってくるのはわかっています。
どんなコマンドを送出するとメール内容が取得できるのか、またクラスやAPI
が提供されているのか、当方では力不足で調べられませんでした。
0439デフォルトの名無しさんNGNG
>>438
ここは初心者の館だよ。
0440デフォルトの名無しさんNGNG
>>438
そんなの機種によって違うんじゃないの?一緒なの?
0441424NGNG
>>425
うまく取り込めました。ありがとうございました。
0442デフォルトの名無しさんNGNG
ヘルプなんですけど、HTMLヘルプ使ってます。
FormとかにHelpContextIDってプロパティーがありますが、この項目は従来のヘルプにしかつかえないんでしょうか?
0443デフォルトの名無しさんNGNG
ここってクリスタルレポートとかの質問もありですか?
0444デフォルトの名無しさんNGNG
>>443
ありです。
0445443NGNG
それではすいません、質問させてもらいます。
詳細に10行だけ出力して改ページしたいんですが、
どこでどういう風にすればよいのかわからないんですが・・・。
ちなみにverは8.5です。
■ このスレッドは過去ログ倉庫に格納されています