トップページ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
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です。
0446445NGNG
すいません何に関しての質問か抜けました。
クリスタルレポートに関してです。
0447デフォルトの名無しさんNGNG
>>438
そいうものが公開されてないのにはそれなりの理由がある。
ネタじゃなければ今後気をつけなよ。
0448デフォルトの名無しさんNGNG
MOVEFILE_WRITE_THROUGHという定数って値なんでしょう?
手持ちのAPI Viewerにのっていないんですが・・
0449デフォルトの名無しさんNGNG
>>445
1.明細にサブレポートを使う。
2.10行印刷されるとちょうどページの縦の幅がなくなるように、ページヘッダ、ページフッタなどの高さを調節する。
3.印刷する前のレコードに、10件づつインクリメントする番号を振っておいて、それでグループ化。
など思いつきました。
0450デフォルトの名無しさんNGNG
>>448
#define MOVEFILE_WRITE_THROUGH 0x00000008

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

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

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

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

コードの?部分をなくすとコンパイルはできるんですが
有効数字が3桁になっただけで指数表記にはなってくれません。
例えば 70800000 というようにです。
0463デフォルトの名無しさんNGNG
>>462
format(num,"0.00E+00")
0の数は自分で好きなように。?ってなんだ?何を読んだ?
0464463NGNG
それからformatは文字列を返すんだからね。
気をつけて。
0465デフォルトの名無しさんNGNG
うんこ
0466454NGNG
チェックのために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なんですけどどうしたら得られますか?
0467デフォルトの名無しさんNGNG
>>466
だからformatは文字列を返すんだって。
dim sumStr as string
sumStr = Format(sum, "0.00E+00")
とかすればいい。
"0.00E+00" の0は桁数を表しているので
01とか10とかやっても意味がない。
0468デフォルトの名無しさんNGNG
sum = Format$(sum, "#.##E+")
だと思う
0469DNGNG
>>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関数作ってますね。
0470454NGNG
>>467
デキターーーーー!!!
ありがとうございます!ものわかりが悪くてすいませんでした。
0471デフォルトの名無しさんNGNG
●●●●●●●●「オセロさえ納期内に作れない=OO役立たず 」祭り●●●●●●●
/|         |  |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ
  |         |  | ̄ ̄ ̄ /|                    ||
  |         |  |   / /|TTTTTT   TTTTTTTTTT||TTTTT
  |        /\ |  /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|
  |  /  /  |文|/ // /
  |/  /.  _.| ̄|/|/|/         Λ_Λ
/|\/  / /  |/ /           (___)
/|    / /  /ヽ            /〔 非OO 〕〕つ
  |   | ̄|  | |ヽ/l            `/二二ヽ
  |   |  |/| |__|/   Λ_Λ     / /(_)
  |   |/|  |/      ( ´∀`)   (_)    Λ_Λ
  |   |  |/      // /  ^ ̄]゚        (`   )
  |   |/        ゚/ ̄ ̄_ヽ         ⊂〔〔 非OO 〕
0472454NGNG
>>468 >>469
いろいろありがとうございます。助かりました。
0473DNGNG
あ、ぼやっとしてたら答えてたのね。
遅すぎました
0474445NGNG
>449
返信遅れてすいません、ありがとうございました。
とりあえず今教えていただいたのを実行中です。
■ このスレッドは過去ログ倉庫に格納されています