VBプログラマ質問スレ(6.0以前) Part50
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/10/22(日) 20:39:53質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。
VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。
○ 質問者の心得
一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。
二.VBScript、インストーラーなどはこのスレでOK。
三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
四.荒らしは相手しない。
○ 回答者の心得
一.答えられない質問は無駄に罵倒せずスルー。無理するな。
二.代用法を強制しない。
三.回答する上で必須ではない情報をむやみに聞き返さない。
四.荒らしは相手しない。
五.VB情報募集中。
六.回答は質問者が理解できるよう具体的に。
MSDN Online Japan ホーム
http://www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6
http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
http://www.google.co.jp/
※「まず自分で調べる」クセを身につけよう。
0175デフォルトの名無しさん
2006/11/14(火) 22:53:52何か投稿してみりゃいいじゃん。
0176デフォルトの名無しさん
2006/11/14(火) 23:47:00起動したいのですが、シンプルに作れそうなそういうAPI系のコード
ないでしょうか?TELNETとかwinsocとか駆使して自前で作らないと
難しいでしょうか?Vb6(SP3),OsはXPです。Sunワークステーションはsol.10です。
0177デフォルトの名無しさん
2006/11/14(火) 23:48:39俺だったらhttps経由でCGI操作するが。
0178デフォルトの名無しさん
2006/11/14(火) 23:52:01やりたいことは過去ログの勢い(生存時の勢い)の一覧を作ることです。
勢いは時間当たりのレス数で算出する為、どうしてもスレが立ってから最終書込まで
何ヶ月何日何時間掛かったのかを調べる必要があるのです。
スレが立った日時はスレの番号から、レス数は過去ログ倉庫のsubject.txtから
取得できることがわかり、そこまではコードも書いたのですが、最後のレスの日時だけがわからず行き詰まってます。
●は持っているので●を使う方法でも構いませんが、●でログインする方法とかは全然わからないので、
具体的なサンプルコードでの回答をお願いします。Visual Basic6sp6です。
0179デフォルトの名無しさん
2006/11/14(火) 23:59:182chサーバの負担になりそうだから教えない
0180デフォルトの名無しさん
2006/11/15(水) 00:18:250181デフォルトの名無しさん
2006/11/15(水) 00:18:54どうすればいいでしょうか?
0182デフォルトの名無しさん
2006/11/15(水) 00:25:31いっぱいとは
一つの六角形を最大の大きさに?
固定の大きさの図形をいっぱい敷き詰め?
三角の組み合わせなんだからパズル的にやってみよう
0183デフォルトの名無しさん
2006/11/15(水) 00:58:47レスありがとうございます。
固定の大きさの図形をいっぱい敷き詰めです。
0184デフォルトの名無しさん
2006/11/15(水) 01:09:23じゃあ固定の六角形の大きさわかってるんだから敷き詰めるだけでしょ
0185デフォルトの名無しさん
2006/11/15(水) 01:37:43正六角形が書けないのですが・・・
どうしたらいいのでしょうか?
0186デフォルトの名無しさん
2006/11/15(水) 01:48:32三角形くらい書けるだろ
一辺がわかれば高さもわかるだろ
線と点の交点は習っただろ
三角形を組み合わせれば六角形が書けるだろ
正三角形の角度くらいわかるだろ
HEX描画くらいぐぐれば出てくるだろ
一個の六角形が書ければ重ねるだけでしょ
色々やり方あるでしょ
0187デフォルトの名無しさん
2006/11/15(水) 02:05:24三角形は書けますが・・・
その方法で書くと六角形の中に線が出てくるので、
六角形のそれぞれの頂点の座標を指定して書いてみましたが、うまく書けずに縦長になってしまいます。
適当な大きさの正六角形の座標を教えていただけないでしょうか?
0188デフォルトの名無しさん
2006/11/15(水) 02:14:24ちゃんと計算した?タイルにするには正六角形+αが無いとめんどくさいよ
重ねる事も考えて作ろうね
0189デフォルトの名無しさん
2006/11/15(水) 02:31:42top:
left 30
forward 100
right 30
forward 100
right 30
forward 100
left 30
forward 100
if x < width goto top
以下略
0190デフォルトの名無しさん
2006/11/15(水) 06:41:31スペースで調整するとかではなく、文字寄せ方向の変更です。
0191デフォルトの名無しさん
2006/11/15(水) 08:09:21バカだろ。
文字寄せっていうのは、内部で文字位置を調整してる
だけなんだよ。
コンボボックスの場合は、APIで位置を調整するしかない。
0192デフォルトの名無しさん
2006/11/15(水) 08:54:150194デフォルトの名無しさん
2006/11/15(水) 15:07:220195デフォルトの名無しさん
2006/11/15(水) 15:33:21もしかして、右から左に読むとか双方向テキストの表示と
勘違いしてない?
0196デフォルトの名無しさん
2006/11/15(水) 15:46:58タブで揃えようとしてもずれるんですが、
うまく揃える方法はありませんか?
スペースをいくつ足すとよいか計算する方法とか。
0197デフォルトの名無しさん
2006/11/15(水) 15:51:52それ、おもしろい宿題じゃん!
再帰なんかで書いたら、結構格好いい関数できると思うよ。
オレも、夜眠たくなったら、ちょっとコーディングしてみるよ。
0198デフォルトの名無しさん
2006/11/15(水) 15:52:00プロポーショナルフォントだと
スペース使用で揃えるのは難しいと思うよ
0199デフォルトの名無しさん
2006/11/15(水) 15:56:39最大文字幅を10とした場合ね
maxlen = 10
txt = "(スペース10個)"
len = strlen(in_txt)
mid (txt, maxlen - len, in_txt)
脳内コードだが動くと思う
in_str の長さが10 以上だとエラー起こす
つかこれぐらい考えれ
0200デフォルトの名無しさん
2006/11/15(水) 16:07:02テキスト入れて、width取り出して、、、で出来ないかな。
0201デフォルトの名無しさん
2006/11/15(水) 16:10:44的を外してる。
>>196
たしかに、プロポーショナルフォントだとインデントがそろわない。
う〜ん。 難しいねぇ〜。
多分、ぴったりインデントは無理かもしてないけど
なんとなくインデントを合わせる事はできるのかもしれない。
0202デフォルトの名無しさん
2006/11/15(水) 18:20:250203デフォルトの名無しさん
2006/11/15(水) 19:05:210204デフォルトの名無しさん
2006/11/15(水) 19:54:400205デフォルトの名無しさん
2006/11/15(水) 21:28:37ComboBox内のEditのハンドルを取得してSetWindowLong、かな?
Win32APIスレあたりが適当かと。
0206デフォルトの名無しさん
2006/11/15(水) 21:35:28カスめ。
オレはお前らのような落ちこぼれが死ぬほど
嫌いだ。
お前らはカスなんだよ。
0207デフォルトの名無しさん
2006/11/15(水) 22:38:35カス
オ
0208デフォルトの名無しさん
2006/11/15(水) 22:47:110209デフォルトの名無しさん
2006/11/15(水) 23:26:290210デフォルトの名無しさん
2006/11/16(木) 08:57:36プロポーショナルフォントでなければ、そうなんだけどなぁ
詰が甘いな
0211デフォルトの名無しさん
2006/11/16(木) 09:23:55Form1, Form2, Form3 とあって、Form上のボタンを押すと子Formを
Modalで開いています。
子Formの最小化Btnを押したら、子Formを含む全てのFormを最小化
したいのですが、とりあえず子FormのForm_Resizeイベントに親Form
のWindowStateを設定するように書いてそれっぽく動くようになりま
した。
ただ、親Formを最小化した瞬間に、子Formのアイコンが消えてしまっ
て、最小化状態から元に戻せなくなるという現象が起きています。
Windowsの制約っぽい気もするのですが、これを回避する(親Formを
最小化しても、Modalで開いた子Formを非表示にさせない)方法は
ありますでしょうか?
0212デフォルトの名無しさん
2006/11/16(木) 09:36:28タスクバーからって子フォームが消えるって事?
ちなみに、そんなレベルの話でWindowsの制約云々と判断するにはまだ早くね?
0213デフォルトの名無しさん
2006/11/16(木) 12:19:28モーダルで子フォームを開いているのに
なんで、親フォームが触れるんだよ・・・
0214デフォルトの名無しさん
2006/11/16(木) 13:05:20>211
>子FormのForm_Resizeイベントに親FormのWindowStateを設定するように書いて
0215デフォルトの名無しさん
2006/11/16(木) 13:40:32モーダルは絶対使わない方がいい。
0216デフォルトの名無しさん
2006/11/16(木) 13:53:12なるほどねぇ。。。
なんてマヌケなUIなんだ。
Form2がShowされるときにもリサイズイベント通るんじゃないの?
それは現象というより、どうみても仕様通り動いてるだけ。
というか、やめとけ。
どうしても実装したいなら、子画面をActiveXのexeか、通常のexeにして、
プロセスIDをわけて、個別にAPIでシコシコ挙動を制御すれば実現可能だけど・・・
恥ずかしいプログラミングだw
0217デフォルトの名無しさん
2006/11/16(木) 16:02:45long型の変数に浮動少数点(1.1)などの値を入れた場合
値は自動的に四捨五入されるようですが、この動作はプログラムで
保証されているのでしょうか?
dim temp as long = 1.1
deboug.print temp
1
-------------------------
dim temp as long = 1.5
deboug.print temp
2
0218デフォルトの名無しさん
2006/11/16(木) 16:17:540219デフォルトの名無しさん
2006/11/16(木) 16:38:34回答する知識がないのならレスすんな。
俺も知らんが。
0220デフォルトの名無しさん
2006/11/16(木) 16:51:25あらし、氏ね
>>217
まず根本的に勘違いしてる。四捨五入はされない。
1.5は2になるが、2.5も2になる。
暗黙の型変換では内部でRound()されてる。詳しくはRound()のHelp参照。
Round≠四捨五入なので注意。
0221デフォルトの名無しさん
2006/11/16(木) 17:09:20勝手に四捨五入されるのも怖い。
基本中の基本だからねぇ・・・
カレンシーの保証する小数桁数も3桁くらいじゃなかったっけ?
浮動少数は誤差が発生するし。
難しいよね〜
0222通りすがりの浮動小数点数野郎
2006/11/16(木) 18:26:38これらの和は桁数が足りる限り不動小数点数で表現しても誤差が発生しないので
安心して使ってくれ!www
(実装がマトモならリテラル・文字列からの変換でも大丈夫なはず。)
ちなみにリテラルからの変換は文字列からの変換と同じく
10進→2進変換なんで、その逆変換ともども
単純な表現誤差以外に結構厄介な問題がある。
(浮動小数点演算の黎明期、確か1960年代頃にはその話題で
変換の精度についてアメリカ数学会に論文が書かれたくらい厄介な問題だ。)
心配なら整数で初期化してから割り算して値を作れば丸め誤差は入るけど、
より厄介な10進2進変換の誤差は紛れ込まなくなるのでオススメ。
(桁数が足りてる限り整数の10進2進変換には誤差がなく、表現の誤差もからね。)
0223デフォルトの名無しさん
2006/11/16(木) 18:41:48浮動小数点型に誤差が発生するのは基本中の基本だよ・・・
悲しくなるよ・・・。
0224デフォルトの名無しさん
2006/11/16(木) 18:45:31Dim i As Long
For i = 0 To 9
s = s + 0.01
Next i
カナシス・・・。
業務系は浮動小数は極力使わないよ・・・
0225デフォルトの名無しさん
2006/11/16(木) 19:59:32HTMLが表示出来て、軽いコンポーネントを教えてください。
WebBrowserコンポーネントは、重いというか起動が遅すぎて使えません。
ローカルのhtmlファイルを読ませるだけなので、多機能は求めません。
WindowsXP SP1、Visual Basic6 SP6の環境で使えるフリーのものでお願いします。
0226デフォルトの名無しさん
2006/11/16(木) 20:09:050227225
2006/11/16(木) 20:22:03それ自体に時間を食ってしまうため、今回別コンポ探しに来ました。
0228デフォルトの名無しさん
2006/11/16(木) 20:23:10VBを使うなら、「〜が遅い」ってのはハードの増強で解決するのが基本。
WebBrowser が遅すぎて使えない、ってどんなスペックだよ一体。
0229デフォルトの名無しさん
2006/11/16(木) 20:39:12Xeon5150x2、メモリは2GBです。
WebBrowserを起動させようとすると結構待たされます。
0230デフォルトの名無しさん
2006/11/16(木) 20:40:29どのくらいの時間待たされるの?
0231225
2006/11/16(木) 20:42:46スペックはAthlon64 FX57にDDR2-677 2048MBです。
スペックはそんなに低くないと思いますが、これ以上スペックを上げて
WebBrowserの起動が速くなっても、他のも速くなるから
相対的にWebBrowserの遅さが目立つのは変わらないと思います。
人間の感覚は絶対性より相対性の方が濃いですから。
とにかく今回はコンポーネント探しをしております。
代用法や基本を教えていただけるのはありがたいですが
失礼ながら求めているものとは違うので、引き続きコンポーネントの回答をお待ちします。
0232デフォルトの名無しさん
2006/11/16(木) 20:55:28VB4.0でADOを使用してデータベースへ接続するように記述して、
デバッグしたところうまく動いたので、Exeファイルを作成してみたのですが、
何度やっても「ご迷惑をおかけしております…」というようなメッセージが出て強制終了されてしまい
Exeファイルが作成できません。
いろいろやってみたところ、キーワード"New"がよくないように思いました。
Set cnt = New ADODB.Connection
この行を削除したらコンパイルできたので。
下記のように、宣言時にNewをつけてみてもだめでした。
Dim cnt As New ADODB.Connection
解決法などあればよろしくお願いします。
0233デフォルトの名無しさん
2006/11/16(木) 20:55:40次の質問どうぞ。
0235デフォルトの名無しさん
2006/11/16(木) 21:03:27どんだけ高性能なマシンだよ・・・。
オレの会社の開発マシンなんか、ドトネトだとコーディングに
文字が追いついてこないようなウンコマシンだけど
それでもWebBrowserでサクサク動く。
処理、間違えてるんじゃない?
0236デフォルトの名無しさん
2006/11/16(木) 21:06:39開発マシンとexeを実行しているマシンは同一?
しかも、NEWでコンパイルエラーという事は、参照設定
してないんじゃないの?
0237232
2006/11/16(木) 21:11:09ちょっと面白かったです。
>>236
Exeを実行しているマシンというのがどれを指すのかちょっとわかりませんが、
自分のPCでVB起動してコード書いてコンパイルして、ってやってまして
それで今回はExeファイルすら作れないという状況です。
参照設定はできてると思います。
オブジェクトブラウザから見れますし、デバッグ(F5押してやるやつ…)では
たしかに動いていましたから。
0238デフォルトの名無しさん
2006/11/16(木) 21:51:55CreateObject でやるとか。
0239デフォルトの名無しさん
2006/11/17(金) 01:33:20無いと答える必要はない。
何故なら悪魔の証明にあるように、無の証明はまず出来ないからだ。
一個人の「無い」という回答は、「俺は知らない」と同義。
0240デフォルトの名無しさん
2006/11/17(金) 04:29:08> HTMLが表示
→テキストでおk
> ローカルのhtmlファイルを読ませる
→ファイル直読みできるメソッドアリ
つ RichTextBoxコントロール
0241デフォルトの名無しさん
2006/11/17(金) 05:00:35一.答えられない質問は無駄に罵倒せずスルー。無理するな。
二.代用法を強制しない。
0242デフォルトの名無しさん
2006/11/17(金) 05:39:240243デフォルトの名無しさん
2006/11/17(金) 05:46:29あえて心得を外すほどの回答は無いようだが。
0244デフォルトの名無しさん
2006/11/17(金) 06:32:25せめて、F8。
Option Explicitもつけて。
0245デフォルトの名無しさん
2006/11/17(金) 14:31:32その割には質問者には.NETはスレ違いだの、ググれMSDN読めと強制していたような・・・
> あえて心得を外すほどの回答は無いようだが。
いや、そうでもない。
0246デフォルトの名無しさん
2006/11/17(金) 15:36:500247デフォルトの名無しさん
2006/11/17(金) 16:35:400248デフォルトの名無しさん
2006/11/17(金) 21:05:52ググルのと、MSDN をそれらしい言葉で検索するぐらいのことしてから
質問するのは常識だと思うけど。
質問者自身のためにも。
0249245
2006/11/17(金) 21:19:06あのー、それを俺に言われても・・・。
>>1に書かれていることはルールではないと言ってるのは>>243だよ。
俺はそれを受けて、ルールじゃないと主張する割にはルールのように強制してるな、と返しただけ。
俺自身は.NETはスレ違いだと思うし、先に検索するのを含めて
「○ 質問者の心得」も「○ 回答者の心得」も、それぞれが守るべきルールだと思ってる。
0250デフォルトの名無しさん
2006/11/17(金) 21:24:44頭の固い人だな、気持ち悪い
0251232
2006/11/17(金) 21:29:11CreateObjectでコンパイルできました!
ありがとうございます。
しかしなぜNewではだめだったのか…わかりかねます。
>>244
Option Explicitもつけてましたし、F8も使っていました。
ですが、コンパイルできませんでした。
もう一つ質問させてください。MSDNで一応調べましたけどわかりませんでした。
またVB4.0でADOなのですが、Recordsetオブジェクトは
ActiveConnectionプロパティ、CursorTypeプロパティなどで
Open前に値の設定ができます、よね。
その設定をしているにもかかわらず、
[RecordSetオブジェクト].Open
だと「引数が足りません」と、エラーになります。
.Open "テーブル名",[Connectionオブジェクト],…
と、引数で値を設定してあげると問題なく開きます。
Connectionオブジェクトでも、同じような状態です。
開くだけならそれでいいのですが、DataGridを使用したいのです。
そのためにはRecordSetオブジェクトを開く前に
[RecordSetオブジェクト].Properties("IRowsetIdentity")=True
を記述しないと表示されないようなので、
RecordSetオブジェクトのOpen前に値の設定をしたいのです。
長くなってすみませんが、よろしくお願いします。
0252デフォルトの名無しさん
2006/11/17(金) 21:30:25いま、PCとある機器を繋いで1分間隔でデータを要求し、それに対して 返信をもらうようなロガー機能を持たせたシリアル通信プログラムを
作っているのですが、知識が薄いために困っています。使用機能はMScommです。
具体的には、文字列データ約50個を1分おきに送信して (このタスクはタイマールーチンに入れます)機械に要求し、
それに対して応答が来れば受信→ファイルに書込み→ 最終的には時刻と機械から取り込んだ複数の数の関係を
グラフにしたいと思っています。 困っているのは受信のコードの記述ですが、本ケースにおいては、
イベントドリブン形式で(Rthreshold=1,Sthreshold=1等と設定して、) 1文字ずつ受信→イベント発生→1文字データ読取
とさせることが厳しい(と思う)いうことです。
ソース的には �@〜�Cまでのタスクを1分周期で行いたいです。できれば ウォッチドッグ機能もつけたいですね。
�@メインルーチンをタイマーにして、MSComm1.Output="G aa bb cc dd ee ff "
のように、相手機械にaa,bb,cc,dd,eeという変数を要求(ちなみに
Gは相手側機械に要求するというコマンド) �A要求に対する受信を待つ→aa=1.01, bb=2.02, cc=3.03, dd=4.04, ee=5.05
のような値が以下のような感じで相手から返ってくる "1.01 2.02 3.03 4.04 5.05"
�Bここで1文字ずつ受信ごとにイベント発生ではなく送信完了したら、受信待機を始めて受信バッファに
たまったものを一度で書き込む�@〜�Bを4回繰り返す(データが大量にあるため、4回にわけないといけない)
�Cファイルに書込み
VBシリアル通信にお詳しい方、どのようなコードにすれば良いかお教え下さい。相当困っています。
以上、よろしくお願いいたします。
0253デフォルトの名無しさん
2006/11/17(金) 21:41:270254デフォルトの名無しさん
2006/11/17(金) 22:01:29そもそも何故VB4・・・
まさかOSはNT4なの?
0255デフォルトの名無しさん
2006/11/17(金) 22:43:53人に話すのと人に説明するのが同じ人間って言われないか?
読みづらいんだが…しかも激しく
0256デフォルトの名無しさん
2006/11/17(金) 22:51:48一.答えられない質問は無駄に罵倒せずスルー。無理するな。
0257デフォルトの名無しさん
2006/11/17(金) 22:53:14三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
0258デフォルトの名無しさん
2006/11/17(金) 23:02:51無駄に罵倒する理由にはならない。
ルールは守るべきだ。
0259デフォルトの名無しさん
2006/11/17(金) 23:09:280260デフォルトの名無しさん
2006/11/18(土) 00:05:39ある特定の範囲内にドロップされたImageコントロールを、
特定の座標に移動させたいのですが、どのようにすればいいでしょうか?
0261デフォルトの名無しさん
2006/11/18(土) 01:27:07割り込み使うならSAMPLESにあるVBTERM参考にすればどうよ
あるいは送信して受信完までループさせて待つ手もある
0262デフォルトの名無しさん
2006/11/18(土) 02:17:59ありがとうございます。VBTERM発見しました。
これを元に考えてみます。
0263デフォルトの名無しさん
2006/11/18(土) 03:10:10全ての処理をバックグラウンドで行いたくて、ダイアログ等の表示が無い様にしたいんです。
IEのオブジェクトを使うと、どうしてもSSLの認証ダイアログが出てきてしまうのですが、非表示で処理する方法って無いですか?
0264デフォルトの名無しさん
2006/11/18(土) 13:51:180265デフォルトの名無しさん
2006/11/18(土) 14:15:290266デフォルトの名無しさん
2006/11/19(日) 16:25:23で質問させてもらいます。
テキストファイルを読み込んでその中の最後から5行ほどだけを
を表示する方法を教えてください。
0267デフォルトの名無しさん
2006/11/19(日) 16:54:59全部または最後の五行分が余裕で入るくらいの情報を読み込んで後ろから改行コードを探す
0268デフォルトの名無しさん
2006/11/19(日) 17:10:24ttp://up2.viploader.net/pic/src/viploader354556.bmp
Command1を押してText1に入力した文字を変数にいれて
Command2を押すとLabel1にその変数が出力されるという問題なんですが
変数のところがよくわかりませんよろしくお願いします
0269デフォルトの名無しさん
2006/11/19(日) 17:19:130270デフォルトの名無しさん
2006/11/19(日) 17:21:08問題って、専門学校か何か?
VBを勉強する学校とかあるのかな?
教えるから、教えてよ。
Dim ABCD AS long
を
Private ABCD AS string
として、しかも一番上に書くとおk
0271デフォルトの名無しさん
2006/11/19(日) 17:38:51どうせスクリプトならjavaスクリプトの方が使えるぞ。
SSL認証きいてくるなら、しょうがないような気がするんだが
自分でサーバたてればねぇ
0272デフォルトの名無しさん
2006/11/19(日) 17:39:02Private ABCD As String
ABCD = Text1
End Sub
上記のようにジェネラル欄にいれたんですが変数がCommand2押しても
だめなんですがどうすれば後コマンド1-2部分は合っていますか?
>>269 Dim をどこにいれればいいですかね
>>270 都内のコンピュータ情報系みたいな専門学校です
0273デフォルトの名無しさん
2006/11/19(日) 17:40:04Private ABCD As String
Private Sub General()
0274デフォルトの名無しさん
2006/11/19(日) 17:44:10■ このスレッドは過去ログ倉庫に格納されています