v(・∀-)b VBプログラマ質問スレ(6.0以前) Part25
1 :
デフォルトの名無しさん :
03/05/11 13:38
>>3 いやー。ごめん。このところ、このホストでは立てられませんって
出てから、またダメだろと思ってたら立てられちゃった。
けつが離れねぇー!!!!!!誰かボスケテー!!!!!  ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ∧_∧ ∧_∧ (´Д`illl.) / ̄ ̄ヽ((( )))/ ̄ ̄\ (.illl´Д`) i i⌒\__ノ ノ)*´∀`( ヽ_/⌒i i ヽヽ ヽ //(∪ ∪)ヽ\ 丿 /./ )) )-─/ // | | | \\ \─( (( ヽヽ ヽ/ // (_)_) \.ヽ ヽ ヽヽヽ (((_ノ( ( < .>.) ) .(_))) ヽ ヽ ヽ //../ \ \\ ..// / (⌒_(⌒__ヽ /__⌒)_⌒)
( ( (. ) @''^~^''@''^~^''@ -@''^~^''@ . (∴゚;)四(;゚・)(∴゚;)四(;゚・) .´,.:::((∴゚;)四(;゚・) ( ⊃⊃⊂ ) i ヾ<_∪~~~_,.ン | (,,,/"(,,,,)(,,,/"(,,,) l  ̄....:;:彡| } . . ...::::;:;;;;;彡{ @''^~^''@ i .. ...:::;;;;;彡| ♪〜 (∴゚;)四(;゚・) . } .. .....:::;::;:;;;;彡{~^''@ , ⊂ ~~~~~ ⊃、 @''''^^~^^''''''@ . .:.::;:;;;彡j四(;゚・) . . ' . ; .丶 (゚;)四(;゚・≡゚;)四(;゚・)?...,:;:;:=:彳⊂ノ . ,:´ . ' ' `、 (⊃ ⊂)、.. ....::::;;;ジ @''^~^''@ ■■■^~^''@ (__)__)  ̄ ̄ (( ( (∴゚;)四). ■■■■( y )))`'丶.、 . '´ ( ⊃ @''^~^''@ (,,,)(,,,)::::::::::...`.: @''^~^''@''^~^''@ i (,,,,)(,,,,)_,._.((∴゚;)四(;゚・) .,,__,.,..ノ.::::::::: ! (( ((∴゚;)四(;゚・)(∴゚;)四(;゚・)) . ヽ、 / ⌒ヽ ,: ( ∩∩⊃▲⊂) `=ー--、....,,,(人__つ_つ,,,,,... --‐=''´ (,,,)(,,,) (,,,)(,,,) ``" '' 'ー───‐―‐' ''' "´
マスオの国から@2003〜帰郷〜 マスオ降臨中!!!!!!!!!!!!!!!jjvvvvvvvvvvvvvvvvvvjjjjjjjjjjj!!!!!!!!!!!!!!! /⌒ヾ⌒ヽ. / 丿 ..ヾ / 。 人 ) (。...。_ .ノ 。ヾ。...丿 ( _ . .. ノ ) / / / ノ し / 三 ̄ ̄ ̄ ̄\ / ) と / / ____| . / / / > | / / / / ⌒ ⌒ | / / |_/---(・)--(・) | / / | (6 つ | / .. / / どうやら!!!!!!!!!! | ___ |/ . / <俺は増殖するらしい!!!!!!! \ \_/ / / / \_________ シコ \___/ / / / \ / . / シコ ( ) ゚ ゚/\ゝ 丿.../ \ ヽ、 ( / ⊂// \ ヽ / ⊂// ( \つ / | |O○ノ \ | | \ \ | ) | ) / / / / / / ∪ ∪
_ _ ∧_∧ ,・ ' .’ ,/⌒丶
∧ _ - ― = ̄  ̄ ( ) ,∵ _” ∧_∧/ ヘ, 丶
, -'' ̄ __――=r _/ /"―_ - ,, _ __ ,,___ ,/(´∀` ) / i. i  ̄ ̄
/ -―  ̄ ̄ | y'⌒ ⌒i:_ ― _ ""~i j __,/ 勿/ ──
/ ノ | / ノ | ー" ─ "" -- ,,,__ 丶 丶 ,,/
/ , イ ) , ー' /´ヾ_ノ ・、 - ; ; - イ,ヽ ヽ/
/ _, \ / , ノ ,/ .,丶 丶 ────
| / \ `、 / / / ヽ,__,/ ヽ 丿 ____
j / ヽ | / / ,'
>>1 / ノ { / /| |
age
結局こっちつかうの?
ここが本スレでよろしいか?
13 :
デフォルトの名無しさん :03/05/13 03:50
たまにスクロールバー(HScrollBarとか)がフォーカスを奪ったまま返してくれない(?) 自体が起こるのですが、これって回避できませんか? 原因もよくわからないです。 いっかいスクロールバーをいじると、他の部品をクリックしてもフォーカスが移りません。 一見フリーズしたかのように見えます。 で、タスクバーから最小化したり他のウインドウに切り替えたりすると、 フォーカスが帰ってきます。 こんな感じになる症状がたまにでます。
14 :
デフォルトの名無しさん :03/05/13 04:38
VBだから vb v()b v()b v(∀)b v(・∀-)b なわけだね?
16 :
デフォルトの名無しさん :03/05/13 08:35
age
17 :
デフォルトの名無しさん :03/05/13 09:48
QRコードを生成するVBのソースを紹介して
>>13 TabStop=Falseにして、フォーカスを取らないようにするとかどうでしょう。
19 :
デフォルトの名無しさん :03/05/13 10:06
Dirで指定Path内のフォルダをループ列挙している最中に、 探しているフォルダがあったら、さらにそのフォルダ内にaaaというフォルダがあるか またチェックしたいのですが、このaaaフォルダ探索用にDir使いたい所ながら そこで使ってしまうと、最初に書いたDirループが崩れちゃうし、ってことで困ってます。 こういう場合のチェックの仕方を教えて下さい。
必死だな(ゲロ
21 :
デフォルトの名無しさん :03/05/13 10:25
>>19 配列にDirの結果を突っ込むとかして、Dirのループが
重複しないようにするしかない
>>19 FileSystemObjectを使うって手もある。
APIでもいいけど。
# つーかなんで、APIみたいに検索途中の情報持たせるようにしなかったんだろうなぁ?
ジエンだな(ゲラ
24 :
デフォルトの名無しさん :03/05/13 10:41
VBでゲームを作ろうと思っているんですけど、 APIとDirectXではどっちが作りやすいですか? というか、そもそもDirectXってVBで使えるんですか?
>>24 > というか、そもそもDirectXってVBで使えるんですか?
使えます。
VBはCOMのReleaseとか面倒な部分を自動でやってくれるので、
C++より簡単です。
27 :
デフォルトの名無しさん :03/05/13 11:03
困ってます・・・ ディストリビューションウィザードでパッケージを作ったのですが PCによってはインストールに失敗することがあります。 どうやらXPで日本語ユーザー名の場合その症状が起きるみたいなんですが 同様の症状が起きた方で、回避策を見つけた方おりませんか?
>>27 Visual Studio Installerつかえ
30 :
デフォルトの名無しさん :03/05/13 11:19
ある年のある月が何日あるかって、どうやって調べたらいいですか?
>>29 に1バイト文字のユーザを作成してインストールと書いてあるけど、
環境変数のTEMPとTMP(だったっけ?)を一時的に変更してから
インストールする方法もある。
TEMPとTMPを適当なフォルダに変更してSetup.exeを実行する
バッチファイルを作るだけでOK
>>30 使い方を聞いてるの? それとも自分でコード書きたいの?
>>25 特に決めてないですけど、ノベルゲームとかRPGとか2Dシューティングとかです。
>>26 使えるんですね。Direct3Dも使えるでしょうか?
使えるなら3Dシューティングあたりも作ってみたいです。
それすら分からん状況でなんでVBチョイスやねん、と。
いいじゃん、別に。
>>34 工学社からDirectX8 + VB関係でいっぱい本が出てるから、
それ読んで勉強汁!
VBで3Dってマトモな速度で動くんかよ!? と煽ってみるテスト サンプル動かしてみたけど結構普通に動いているよ。 と自己レスしてみるテスト。
>>38 3Dってマシンパワー食いそうに見えて(実際そうなんだけど)、
重い処理の部分はGPUが処理するから、あんまりVBだから
遅いってことはないよね。
ただ、俺はフライトシミュレータ作ったけど、ランドスケープの
メッシュデータを用意するのはやっぱ遅かった。
データセットし終わって、動き出したら早かったけどね。
>>43 リンク切れ(?)
俺の知っているあれだとは思うんだが。
46 :
デフォルトの名無しさん :03/05/13 13:24
関数の引数を入力しようとしたとき等にでるヒントが出なくなりました。 Msgbox( の、カッコまで売った時にポップアップされたりするあれです。 なんかの拍子に設定を弄ったのかも弄られたのかもわかりません。 どうやったら戻せますか?
>>46 「ツール」「オプション」の「自動クイックヒント」とかのあたりじゃね?
48 :
デフォルトの名無しさん :03/05/13 13:28
>>46 ソースがぐちゃぐちゃでVBがソースの解析できない場合に起ります。
>>47 自動クイックヒントなどはチェックついてました。
すると
>>48 かもですかね。
>>45 げっ。言語の優先順位が日本語じゃないと表示されない・・・。
MS。よけいなことすんなーーー。
設定でページがかわるのはWindows Updateぐらいだと思っていたよ。
違う意味で勉強になった。
あ、違うプロジェクト開いて試してみたらちゃんと出ました。 ソースがぐちゃぐちゃみたいです。 ありがとうございました。
53 :
デフォルトの名無しさん :03/05/13 13:37
おれは「開始」使わない。常に「完全コンパイル後に開始」。「開始」がVB プログラマーの質を落としている一因の気がする。
俺も完全コンパイル後に開始を使うくちだが、 結局EXEにする時はコンパイルされるわけで あんまり関係ないんじゃない?
56 :
デフォルトの名無しさん :03/05/13 14:03
いつでも客や上司に見せられるように。
>>53 俺もそう。開発途中でこまめに問題が発見されて解決されていくのと、
最後にexeにする段階になって一気に問題噴出、あわててゴソッと
直したのだったら、どっちが品質がマシか・・・ って考えると、
やっぱり多少コンパイル時間は食うとしても、毎回コンパイル後に実行をする
クセをつけておきたいと思う。
58 :
デフォルトの名無しさん :03/05/13 14:12
>>29 >>31 >>39 >>43 アリガトウございました。
Setup1.frm の Form_Loadをカスタマイズする方法を試してみます。
反応が早くて感激しました。
60 :
デフォルトの名無しさん :03/05/13 14:30
>>30 こんなんどう?
DateDiff("d", "2003-05-01", "2003-06-01")
こっちにしとけ。 Day(DateSerial(2003,5+1,0))
62 :
デフォルトの名無しさん :03/05/13 15:17
VBは死滅するって本当でつか!?
VB.NETになるだけ。
>>62 ほんとでつ。でも、あと数年は生き延びまつ。
死滅したところで、優秀なVBプログラマならJava厨とは違い、速やかに他の言語に移行できると思うけどな。
フォームのBorderStyleを2(可変)にしたまま、 タスクバーには表示させないように出来ますか?
>>66 ITaskBarList の DeleteTab で好きなように消せる。
が、自分でタイプライブラリを書かなきゃならんので、初心者向け
ではないわな。
>>66 ShowInTaskBar
>>65 別に優秀なやつならVBプログラマでもJavaプログラマでも
他言語に移行できるでしょ。
VBPG=優 JavaPG=劣
70 :
だ ◆a.ZhoqQtfc :03/05/13 16:27
初心者な質問でごめんなさい。 大学の授業でVBとエクセルをリンクさせて使っています。 そこで、10つほどのセルに数字(0から100まで)を入力して その中の最大値を表示するプログラムをつくっています。 ですが、どうしてもわかりません。誰か教えてください、お願いします。
>>70 それはVB(VBA)でやらなきゃならないのか?
なんつーんだっけ、エクセルのセルの中に入れる式で
事足りる問題な気がするが。
>>71 >>72 ネタではありません。
授業で作れって言われました。
VBで作らないとダメみたいです。
よろしくお願いします
VBA・・か? んなもんつかわんでもできるけど。
なんかな〜。いくつもやり方あるんだけど。 VBとエクセルがど〜リンクしているの?って感じだし。 ってそれあまり関係ないともいえるし。 どういう仕様で作ればいいかわからんし。 その授業の目的がなんかよ〜わからんし。 どの程度の知識を今もっているのかって気になるし。 なんか答えにくいなぁ。
76に禿同。70は今書いたとこまででも晒してみ。
VBAの練習とかなのかなぁ。
経営とかだとやるみたいよ。
つーか、内容はいいとして、日本語をもうちょい勉強したほうがいい >70 釣りに見られても無理ないぞ。
てか宿題なら自分でやれと。 端から人にさせる気じゃん。
>>70 どこまでできるの?
一つのセルに数字を入れてそれを表示させることはできますか?
二つのセルに数字を入れて大きい方を表示させることはできますか?
三つのセルに数字を入れて一番大きいのを表示させることはできますか?
:
:
10つのセルに数字を入れて大きい方を表示させることはできますか?
~~~~~
じゅっつて... とーつか?
とりあえず70のレスを待ちましょう。
エクスプローラスタイルアプリ作ってます。 左ツリービューのノードクリックで右領域にいろいろ画面を切り替えてます。 たくさんピクチャボックスをデザインしてその中にコントロールいろいろ貼り付けて その1つのピクチャボックスを1ページという概念で ひたすら切り替えて表示する仕組みにしてます。 デザイン時1フォームのコントロール限界の255個に達してしまいました。 それで動的にコントロール配置するしかないか…と思ってます。 set cnt = Me.Controls.Add("VB.TextBox","txtHoge")をひたすらやって 各プロパティいぢくるのは果てしなく面倒なので たとえば他フォームのピクチャボックスをまるごとそのまんまコピーとかしたい んだけどできないすかね。または他のスマートな方法とか…
>>85 コンテナにしたPictureBoxを丸ごとコピーするって事かね?
ユーザーコントロールにするのがいいんじゃないの
87 :
デフォルトの名無しさん :03/05/14 05:05
age
>>86 っていうか、85ってユーザーコントロールそのものだよね。
>>89 ピクチャーボックスにコントロール貼り付けてコンテナ化しただけだろ?
>>89 そうです
ピクチャボックスをコンテナにしてバンバン
.visible を切り替えてるんです
今考えてるのが
デザイン専用フォームでデザインしてフォームをセーブ
その frmDesine.frm のテキストは
Begin ブロック と End ブロックで各コントロールのプロパティが
はさまれたテキストなんで
テキストを AWK かなんか(漏れPerl使えない)て
整形して
このテキストをコードモジュールにコピペして
動的配置コードを生成するっつうのを考えてる
漏れはアフォでせうか?
ちなみにユーザーコントロール作ったことないっす。
やってみる価値はありそうかねぇ。
>>92 規模によりけりじゃない?テキストボックス3つくらいだとおれも似たような
ことやってるよ
教えて、エラい人! プロジェクト内でモーダルフォームが開かれているかどうかを判定する方法は有るのでしょうか?
どういう処理よ。
>>94 よくわからんが、For Each で App.Forms をまわして
調べればいいんではないかい
97 :
デフォルトの名無しさん :03/05/14 19:24
TextBoxをマウスで右クリックしたときの ポップアップメニューが出ないようにするには どうすればいいんですか?
右クリック自体禁止するといいよ。
>>97 右クリックが来たときにTextBox.EnabledをFalseにして戻すか、
サブクラス化してWM_CONTEXTMENUを揉み消すか。
前者のほうが簡単だけど、後者の方が完璧にできる。
>97 もしかしてポップアップメニューを出さないのが目的じゃなくて、ポップアップメニューコマンドを実行させたくないっていうのが目的なんじゃねぇーの?
・・・そして誰もいなくなった。
亀レスすいません。 とりあえず、最低点、最高点の問題は解決しました。 次の問題も不明なんで、よろしくお願いします。 =========================問題========================== Ex.1 条件判断 下記の学籍番号をセルA1〜A10、試験の点数をセルB1〜B10に入力し、優、良、可、不可を判断して C列に表示せよ。ただし、優は80点以上、良は70点以上、可は60点以上とする。 学籍番号 点数 1 75 2 92 3 63 4 48 5 95 6 82 7 68 8 56 9 62 10 71 =========================問題終了========================== これは簡単なので、できました。
続きです。 =========================問題========================== Ex.2 優、良、可、不可を取った学生の学籍番号を、それぞれD列、E列、F列、G列に表示せよ。 その際、上から順に詰めて表示すること =========================問題終了========================== この問題がわかりません。 上から順に詰めて表示でなければできましたが、 つめて表示する方法がわかりません。 よろしくお願いします。
> 次の問題も不明なんで、よろしくお願いします。 > 10 71 > =========================問題終了========================== > これは簡単なので、できました。 不明なのか? できたのか? 何を聞きたいのだ?(w
途中までしか見てなかった。
>>104 は無視してくれ。
106 :
bloom :03/05/15 11:13
107 :
デフォルトの名無しさん :03/05/15 11:19
※末承諾広告
スタッフは皆様の生活を応援します
1万円〜100万円まで15分で審査
(100万円以上のご融資も可能)
完全自社貸付なので安心してご利用いただけます
お申し込みは
0120-39-4400
携帯からもOK!
インターネットは
http://www.staff-japan.com 迷ったらまずお電話ください
必ずお力になります。
>>103 > 上から順に詰めて表示でなければできましたが、
どういう風にやって出来たの?
102のコードを晒せ
とりあえず、
>>102 までのコードを晒します。
Dim b As Integer
If Cells(b, 9) >= 80 Then
Cells(b, 10) = "優"
Else
If Cells(b, 9) >= 70 Then
Cells(b, 10) = "良"
Else
If Cells(b, 9) >= 60 Then
Cells(b, 10) = "可"
Else
Cells(b, 10) = "不可"
End If
End If
End If
End Sub
です。汚いコードですいません。
問題文と自分のセルの場所が少し違うので、コードもおかしいです。 セルの場所は気にしないで下さい。
最低点、最高点のコードがわからなくなってしまいました。 友人に教えてもらったときは覚えていたのですが・・・・ 最低点、最高点のプログラムもお願いします。
>>112 答えを聞くだけじゃなくて、ちゃんと考えような。
でないと自分のものにならないよ。
>>113 ご指摘の通りです。
それからしばらく考えまして、たとえばaとbの変数を用いて、
a=0
For b=1 to 10
If cells(b,1)>a then
cells(11,1)=a
next b
これえでA1からA10までの最低点がでると思ったのですが、どうもうまくいきません。
なぜでしょうか?よろしくお願いします
>>115 最初に、
a = 0
としてるだろ?ってことは、0点未満しか見ないじゃん。
違った(スマソ おれなら a = 100 ' 最低点 For b=1 to 10 If cells(b,1)<a then a = cells(b,1) End If next b cell(11,1) = a
>>112 てか教えてもらったプログラム理解してなかったのかよ。意味ねぇし。
それにプログラムは一気に完成させる必要はない。
この場合だとまず一人だけをDEFG列どれかに分類するプログラムを作る。
その次にforとかでループさせて全員分類できるプログラムを作れば良い。
人に教えてもらうだけだったらはっきし言ってプログラムに限らず勉強してる意味なし。
就職とかにしても徐々に大学名じゃなくて実力主義の傾向になってきてるから
行き当たりばったりの勉強で20年30年先どうなっても知らんぞ。
119 :
デフォルトの名無しさん :03/05/15 18:38
WINSOCKコントロールでインターネットを介したパソコン同士を通信するにはどうすればいいんじゃ!教えてけろ(特にアドレスの指定の所)普通にIPアドレスを入れてもだめなんじゃろ?
>119 アドレス変換ってのがわかんねーんだったらネトワクを勉強しろよハゲ。
(^^)
ユーザーコントロール内の処理で自身のユーザーコントロールを 表示、非表示にしたいのですが、どうすればいいでしょうか? Visibleプロパティでは扱えないしShowとかのメソッドがあるわけでもなくて 途方にくれてます。具体的に言うと表示メソッド内で メソッドからの引数でちょっとした処理とユーザーコントロールの表示処理を行いたいのですが…。
>>123 無いものは作る。ってShowメソッドをですか?
私にはそのShowメソッド内で表示処理のプログラムが想像すらつかないのですが、
よろしければ教えていただけないでしょうか?
>>122 自分自身を見えなくしたいだけ?
Width = 0
Height = 0
じゃ済まないの?
127 :
デフォルトの名無しさん :03/05/16 03:42
アドレス変換ってどうやんの?それっぽいサイトが見つからなくてわからないんだ。いいサイト知ってたら教えてけろ
129 :
デフォルトの名無しさん :03/05/16 06:22
>>128 用途の事であれば、チャットをできるようにしたいんよ。とにかくネットワークはあんまり詳しくないからアドレスをどういれればいのかわからん〜。ぜひおせーて
>>129 IPなら
Winsock1.Connect "127.0.0.1", 1234
で繋がるしURIとかなら
Winsock1.Connect "hoge.hoge.com", 1234
で繋がるし。
というか、本屋へ行ってネットワークの基本的な事を勉強してからにしておくれ
VB6以前のVB製ソフトはウイルス並の扱いですが何か?
>>131 ヌヒが心配せずとも、いずれ消え去るわけだからほっときやがって下さい。
133 :
デフォルトの名無しさん :03/05/16 09:24
〉〉130 まじサンキュー!ちなみに1234って何なん?
134 :
デフォルトの名無しさん :03/05/16 09:29
チャットってなんだ?IRCかメッセンジャーか?
>133 だから、ヘルプくらいは読みなさいとお母さんがいつも言ってるでしょう。
136 :
デフォルトの名無しさん :03/05/16 09:39
おれの彼女はUnix使いだから,子どもできたらほんとにそういうこと言うんだ ろうな。ヘルプじゃなくてmanだろうけど。
137 :
デフォルトの名無しさん :03/05/16 10:04
≫135 ごめんググったけどわかんなかった。俺の力不足や。ちなみにグローバルアドレスを入れなきゃいけないんでしょ?
アドレス変換ってNATのこといってるんだろ
>>130 は無知
エクスプローラの検索ダイアログで、 FNDファイルとして検索条件を保存することができます。 ただ検索ダイアログを開くだけならば拡張子FNDのファイルを無理矢理作ればいいんですが、 「TEST.TXTを検索する」といったようなFNDファイルを VBで作ることはできるんでしょうか? ご存じの方がいらっしゃいましたら、ご教示ください。 よろしくお願いします。
>>137 ぐぐったけど出なかったって・・・検索の仕方もわからないのかよ。
無理だよ、あきらめな。
どうしてもってんだったらシャドウペンギン調べてみ。
これ以上の質問却下、シャドウペンギン見つけられないってのも却下、
読んで理解できないならVBごとやめれ。
プログラム能力ゼロだから。
VBは何でもできる最強のツールですね
最強かどうかは決して肯定できないなあ。
どっちかってーと、最兇ってかんじ?
147 :
◆VBGo3bjTdQ :03/05/16 14:41
質問どぞ
VB4を初めて使った時は、なんじゃこのオモチャは やっぱVCじゃないと使い物にならん と思ったけど、 VB5、6へと進化したことや、マシン自体の速度向上によって 遅さがある意味解消されたことで、VBってけっこう使えるヤシと 認識が変わってきた。 最強のツールとは思わんが、悪いツールじゃないな。
149 :
デフォルトの名無しさん :03/05/16 15:13
せめてマスタリングTCP/IPくらいは読んでくれ
151 :
デフォルトの名無しさん :03/05/16 16:34
>>148 禿胴。「VBで開発?マジですか」なんて言ってたのが一昨年。Pentium800Mhzあたり
が普及しだしてからは「おおっ!こりゃ楽チン」てな感じで積極的に使ってる。
で、いよいよ客先でもVB.NETが普及し始めたと・・・メンテドウスンノ(鬱
152 :
デフォルトの名無しさん :03/05/16 16:35
検索キーワードが思いつかないのでここで質問させてください。 フォームをリサイズするときにこれ以上小さくできないという縦横のサイズは設定できますか? 今やってる方法が、リサイズの時にそのサイズが指定サイズ以下のときは指定サイズに戻すよう設定するプロシジャを書いているのですが、 これですと、リサイズの最中にはどこまでも小さくできるのですが、マウスから手を離したときにウィンドウが指定サイズに戻るので、 若干不自然です。どこかのソフトではマウスをドラッグしても、途中でマウスポインタが動かなくなるようなソフトがあるとおもいますが、 それをVBでやる方法を教えてください。よろしくおねがいします。
>>152 ウィンドウをフックしてメッセージ揉み消し。「サブクラス化」とかでぐぐれ
FAQだね
>>152 サブクラス化とMINMAXINFO構造体だな
サブクラス化なんてCでは日常茶飯事なんだけどねー
>153 >155 ありがとうございます。調べてきまんもす
>154 FACKだね
サブクラス化が悪いとは言わん つーか、やらないとできないこともあるしね でも覚えたてでうれしくて、しなくても済むことまで 面白がって(かっこつけて?)使ってるヤシを見ると、 なんだかゲンナリする・・・・
>163 サブクラス化しないで >152 をやる方法は?
ない
なんだジエンかよ。
>>165 その場合はサブクラス化しかないよ
あるいは、サブクラス化を行う市販OCX、ユーザーコントロールの貼り付け。
俺はこういう用途用に、サイズ制限用ユーザーコントロールを自作して、
それ貼り付けるだけでリサイズ制限できるようにしてある。
v(・∀-)b
171 :
デフォルトの名無しさん :03/05/16 17:18
すみません、多分すっごい基礎・・というかガイシュツな質問かもしれませんが教えてください。 小数値でで、23.3(23時間30分を表す値)を 23.5という小数値に変換したいのです。 計算式を考えているのですが、どうもいい方法が思いつかなくて。。。 何かスマートでいい方法があればご教授下さい。
20倍する。INT。あたりがヒントでできないか。
1.小数部を取り出す。 2.X/6で完了。
うまい
あ、勘違いした。スマソ。
小数を整数に変換後、また小数に変換するのは大変危険です。 Dim a As Double Dim b As Long Dim c As Double For a = 0.01 To 1 Step 0.01 b = a * 100 c = b / 100 If Str(a) <> Str(c) Then MsgBox "なんじゃこりゃー" End If Next
あれ? なんか違う
>>176 >大変危険
それを回避する方法はさんざんガイシュツなわけだが。
B = Fix(A) + (A - Fix(A)) * (5 / 3) A は変換前、 B は変換後 間違ってたらスマソ。
>>126 あ、そうか。そんな単純な事でよかったんですね。
有難うございました&スレ汚しスマソ。
winsockコントロール使って確認君にアクセスしようとしたらできませんでした。 普通のページならちゃんと読み込めるのに。 cgiとかそういうのにはうまくアクセスできないんでしょうか?
184 :
デフォルトの名無しさん :03/05/17 08:18
みなさんすまんかった。 自分なりに調べてグローバルIPに変換して、それで接続してみた。けどだめみたい。 ファイヤーウォールに蹴られてるんかな?それとも片方がLANの中のやつでどれもグローバルIPがいっしょだからだめなんかな? みんなにはくだらんかもしれんけどおねがい!教えて。
>>184 RFCくらいは知っててやってる?
原因追求のやり方とかわかっている?
TELNETで手動で取ってくるくらいはできる?
>>185 レス番ちがった。185は182宛てね。
>>184 プログラム組む前にネットワークの勉強をしろ。
本屋行け。
>>184 まずは、テクニカルエンジニア(ネットワーク)の資格でも取れ。
話はそれからだ。
>>189 しょうがないだろ。VBとは関係ない話なんだから。
>>184 とりあえずLAN内ならうまくいくんだね?
だったらマジでVBの話じゃないからネットワークを勉強してくれとしかいえないだろう。
LAN内で動かないならまずそこで動くようにしよう。
msdn、過去ログ、一応目を通し、ググったりもしたんですが、 既出だったら、すいません。 コンパイル環境:VB6.0、DriectX7.0、OS:Windows98 実行テスト環境:DirectX8.0a、OS:WindowsXP DirectDraw の SetForeColor と、DrawText で、文字表示するプログラムなのですが、 Windows XPだと、すべて 黒 で表示されてしまいます。 原因はなんでしょうか? 下らない質問かもしれませんが、どなたか、教えて下さい。
VBで画像ビューワーを作ってるんだが、 テキストボックスにファイル名を入れて開くというコマンドボタンを押したら表示するという簡単な物なんだが、 開くボタンを押す以外にも、 ファイル名を入力→「エンターキー」「タブキー」を押しても画像を表示させるにはどうしたらいい?
>>196 Subプロシージャを作って、keyPressで制御すればいい?
198 :
デフォルトの名無しさん :03/05/17 12:21
>>196 その程度のことでサブクラス化する必要は全くない
199 :
デフォルトの名無しさん :03/05/17 13:00
FormのプロパティーのTagって、何に使うもんなん?msdn見ても今市つかみ所 がない
>>199 たとえば、テキストボックスで文字列が変更されたときに、
Me.Tag = "変更されました"
なんて入れておくわけだ。
そんで、QueryUnload で Tag の値を確認して、「変更されています。保存しますか?」
てな感じの確認メッセージを出す、と。
漏れがよく使うのはこれかな。
>>200 それって、内部変数を持たせちゃいかんの?プロパティーを使う必要性があまり
感じられないんだけど、利点はあるんけ?
>>201 内部変数はそのフォームだけの情報。
Tagはすべてのフォームに共通して存在する情報。
って使い分けるとか。
意見がないなら口をださない。
>>204 いや、「Tagてすべてのフォームで共通するの?」て聞きたかったんだけど。
IDEで初期状態で設定した値は共通するだろうけど。
>>205 聞きたいことは正確に聞け。
同じ値って意味じゃないぜ?
フォームのCaptionはすべてのフォームがもっている情報だろ?
でも内部変数は作ったフォームだけが持っている情報だろ?
>>206 なんじゃ、そんな意味で言ってたのか。スマン
Tagプロパティの値を複数のフォームで共通して使いまわせる
って意味で言ってんのかと思った。
どのフォームでも必ずTagプロパティがあるって言いたかったわけね。
>>200 もちろん、内部変数でもいいんだけど、外から見たいときってあるよね。
大昔のVBって、プロパティの自作ができなかったんじゃなかったっけ。
どちらにせよ、(VB.NETでは一回削除されたし)古い仕組みにはちげーねー。
大昔っていつのVBだ? VB5からしかろくに知らんからそれよりも前か。
>大昔のVBって、プロパティの自作ができなかったんじゃなかったっけ。 激しく納得した。そういうことね。
telnetでアクセスしたけどダメだったんですよ。 os win2k open www.ugtop.com 80 GET /spill.shtml HTTP1.0 ってやったら404not foundで。 ブラウザならwww.ugtop.com/spill.shtmlでアクセスできるんですが・・・ どうなってるんでしょうか
↑ 訂正 GET /spill.shtml HTTP/1.0 ね。 ちなみにGET / HTTP/1.0 だと英語のページになるし・・・ ん〜
-- 終了 --
214 :
デフォルトの名無しさん :03/05/17 22:05
>>211 バーチャルホストを使っていると思われ。
HTTP/1.1でHostヘッダを使用したら取得できたよ。
215 :
デフォルトの名無しさん :03/05/17 23:55
おー、サンクス
>>214 できました。
Hostヘッダが必要だったんですね。
ヘッダなしでやってたよ
ここのスレタイ、目潰しされて笑ってる…不気味な奴。
ウインクだろ。 つーか顔AAが気に入らないからって重複スレあげる奴ウゼー
219 :
デフォルトの名無しさん :03/05/18 12:15
220 :
インストーラー作りたいさん :03/05/18 12:36
VBで作ったアプリのインストーラーを作りたいのです。 *.vbpを指定して作成することが出来たような気がしたのですが、 どうやってやればよいのでしょうか?
VBで作ったアプリをインストールするなんて迷惑なだけだからやめとけ。
以下のスペックのパソコンを使用してるのですが、このパソコンで使用できる ビジュアルベーシックのバージョンていくつまででしょうか? CPU ペン2の350Mhz メモリー 120M OS WIN98 MSのHPいったのですが、NETしか載ってなくて確認できませんでした・・。
223 :
デフォルトの名無しさん :03/05/18 13:48
誰か
>>195 のヒント下さい・・・。
明日提出なんで・・・。
>>224 ファイル名を入力するテキストボックスのキーダウンイベントで
押されたキーがtabかenterなのかを判断して
もしそうなら開くボタンと同じ処理。
tabが拾えるなんて聞いたこと無いぞ
227 :
デフォルトの名無しさん :03/05/18 14:41
>>220 ディストリビューションウィザードか
Visual Studio Installerを使う
>>226 キーダウンなら拾えるが?
>>224 '開くボタンの処理
Private Sub OPEN_BTN_Click()
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyTab, vbKeyReturn
Call OPEN_BTN_Click
Case Else
End Select
End Sub
>>225 キーダウンイベントって、キープレスの事ですよね?
>>226 フォーム上のすべてのコントロールのTabStopをFalseにすれば拾える。
という裏技みたいな方法もあるが、通常はフォーカスが移ったときと
考えるべきかな? 元の仕様が分からんのだが。
>229 キー「ダウン」!!!!!!!
>>228 >>231 ありがとうございます〜。
キーダウンって参考書に載ってないんで・・・。
VB初心者なんでスミマセン・・・。
>>228 これだと、エンターを押した場合は画像開けるのですが、
タブの場合だと、開くボタンにカーソルが移るだけになってしまうんですが、どうすれば
タブキーでも画像を開けるようになるんですか?
>233 Case vbKeyTab, vbKeyReturn なのにエンターキーだと Call OPEN_BTN_Click が呼ばれてタブキーだと呼ばれない? そんなはずはない。 もう一度よく確認。 フォーカスが移動するのは別問題。 テキストボックスのExitイベントで抑止できる。
スマソ、VBにexitはないみたいだ
237 :
デフォルトの名無しさん :03/05/18 15:28
VB4.0という古いやつがあるのですが。 これを使って株の自動注文システムみたの くめないでしょうか? 具体的にはIEの注文画面のある特定の数字を拾い この数字が既定の値、または変位がいくつになった時に 自動で株注文をボタンをクリックし自動で買う数量 や損切りの額などを入力し注文をだすというものです。 じつは今結構勝っていまして、この手法を是非自動化したい と思いまして聞いたのです。 もねがいします。
>>235 さっきのやつをそのままコピペして、
OPEN_BTN_ClickのとこだけCommand1_Clickに変えただけなんですが無理でした。
>>237 がんがってプログラムを作ってウプしてください
それでこのスレのみんながお金持ちになれば
あなたは英雄です
>>240 レスありがとう。
ではVB4.0で自動注文は可能とみてよろしいですか?
プログラムさえ出来れば言語は簡単なほうがいいと思ったのと
今手元にある言語はそれしか無かったもので
質問しました。
しかし仮に出来るとしても、説明書ないから難儀しそう・・
>>241 ありがとうございます〜。
それを作りたかったんです〜。
ただ、スクロールバーを付けると、やはりタブでは開けなくなってしまいます。
かといって、TabStopをFalseにするわけにもいかないので・・・。
(教授のexeはきちんとタブで開く&移動する)
もう少し、頑張ってみます。
>243 すまん、わからん。 サブクラス化しかないと思う、、が、 >198いわく、他に方法がらしい。 気になるので方法希望!
そんなこともできないVBってうんこすぎ
>>237 >>245 VB4 には、インターネット関連の機能は含まれていなかったはず。
となると、Winsock やら Inet やらの API を使うか、その辺のコンポーネントを
探してこなくちゃならない。
あと、当然 https になるんだろうけど、その辺の実装が↑でできるのか
わからん。
>>237 プログラム売買?
禁止されてなかったっけ?
あった、あった。一応大丈夫だけど気をつけたほうがいいと思う プログラム売買 様々な投資基準を基にした一定の条件で、 売り買いの判断をするようにプログラムを組んだコンピューターで株式を運用することをいい、 東証は「一度に行う25銘柄以上の売買」に報告義務を課している。 この売買を行う際に、コンピューターから一度に多数の銘柄が発注されることが多いので、 単純なコンピューターによる売買と同一視されることがあるが必ずしもそうではない。 また、同じ意味で「システム売買」という言葉を使う向きもあるが適当ではない。
>>244 あまりにもわからんから、教授にメールしたところ
「TextBox の LostFocus イベントハンドラを作成します。その中味は『開く』
ボタンがクリックされた」時の動作をする(呼び出す)だけ。」
と返信が来たんだが、さらにわからんようになっちまった・・・。
>>247 げ、そうなんですか・・・。
ではVBのバージョンいくつからなら、インターネット対応してるのでしょうか?
>>237 のようなことが出来るのはバージョンいくつからでしょうか?
>>248 いや、禁止されてなかった・・・はず・・・なような・・・・。
252 :
デフォルトの名無しさん :03/05/18 18:44
ネタか?なぜにVB4.0?素直に.NET逝かんかい。ゴルァ!
>>250 あー、なるほど。
tabキーを押すとフォーカスが移り、LostFocusイベントが発生する。
そのイベントプロシージャを作って
そのプロシージャ内にファイルのロードの処理しろって事。
フォーカスとか分からんかったら自分で調べれ。すぐ分かるだろうから。
>>250 フォームのほうでタブを横取りして適当なメッセージをTextBoxに投げれば?
つーかLostFocusだとマウスクリックでフォーカスが移動した時どうすんだろ。 フラグ立てるのかもしれないけど汚いなあ。
>>255 まぁ宿題だしな。
作成じゃなくてプログラムを考えるのが主目的な訳で。
そうやってVB厨が大量生産されるわけだな。
んなわけない。
>250 なーんだ。 LostFocusでいいのか。 >254 Tabキーが押された時はそもそも押されたということ自体通知されない。 >255 試してみたけど、 MouseDownや、押されたボタン等のイベントよりも先に、 LostFocusが発生するのでフラグの立てようが無いのでは? ボタンをクリックした時、フォームでMouseDownを先に とらえることもできなかった。 >256 事実教授もそういう考えでこんな問題考えたんでしょうねぇ。 真剣に考えてものすごくあほらしく思えます。
やべえ・・・。全然わかんねえ・・・。 明日学校休むか・・・。
>261 教授はこうさせたいんでしょうねぇ。。 Private Sub TEST_TXT_LostFocus() Call OPEN_BTN_Click End Sub
>262 自己レス。 でもそれなら開くボタン自体 必要なくなるような気もする。。 ファイルオープンダイアログみたいな パスを読み出して表示されるボタン等が あるとも考えにくいし。。
つうか、教授の問題のだしかたにも問題があるな。
まあ、教授の考える仕様なんてこんなもんだ。
だめだ・・・。 いくらテキスト読んでもわかんねえ・・・。 明日は学校休みます。
フックしろよ馬鹿ども。VBじゃできないとでも言うのか?
まぁ、フックでもできるな。VBでもローカルフックはできるわけだし。 でも、フックでやるような内容じゃないと思うよ。
270 :
デフォルトの名無しさん :03/05/18 21:09
ACTIVEX.EXEのデバッグを行なおうと、実行させておいて、他のプロジェクトから呼び出そうとすると、 クラスはオートメーションまたは予測したインターフェースをサポートしていませんというエラーが出てしまいます。 前はできていたのになぜでしょうか?
271 :
デフォルトの名無しさん :03/05/18 21:10
フォーカスが移動する前にタブを奪うのが普通だろ?
CommandのTabIndexをTextの次にして CommandのGotFocusにピクチャー開く処理を記述するとか。
こんな糞仕様却下だろ
宿題系の質問になると糞仕様を叩くのは必然なのか 漏れも糞仕様だと思うけどね。
質問が糞すぎて、返事がないのか、 わかる人が居ないのか、どちらでしょうか?(´・ω・`) 前者なら、追い出して下さい。
278 :
デフォルトの名無しさん :03/05/19 09:47
基本的なことかと思いますが質問させてください。 年齢計算のコードを書いているんですが、 どうもうまくいきません。 知り合いから、365.25で割る方法とかも聞いたのですが、 これだといわゆる「●年目」の値が表示されてしまい 満年齢の計算が出来ません。 何かいい方法があれば教えてください。 よろしくお願いします。
すみません・・・/365.25の式であってました・・
式をみたら、Int関数使うはずが,間違えてCint関数使っていました(死
癖って怖いですね・・・
というわけで、お騒がせしました。
>>279 お答えありがとうございます。
Datediffですね。
この関数も別の方法として調べてみます。
知っている方教えてください。 i-mode って VBScript 使えないんですか? aspとVBScriptのセットで画面作成を行うつもりだったのですが・・・
本当にクライアント側スクリプトが必要か、もう一度考え直せ
>282 はい、if文駆使した場合分けとか、エラーハンドリングもVBScriptだし。 レジストリ情報取得DLLなど使う場面がありまして、どうしても必要なんです。
面白くない
>>283 それはサーバー側の話じゃないんか?それともネタか?
IE for i-mode を作れば解決だ。
>285 すみません。なにしろVBScriptを扱うのもi-modeも初めてでして、手探り状態なんです。 しかし、みなさんの意見をみてるとi-modeで表示するhtmlやaspではVBScriptソースは利用できないと考えてよろしいのでしょうか?
>>277 レスの催促は慎みましょう。ここは解答スレではありません。よって全ての質問に
答える義務はありません。
>>287 i-modeの仕様くらい、探して読もうよ。
どこにあるんですかなんて言わないでくれよ?
291 :
デフォルトの名無しさん :03/05/19 12:23
>>287 ASPはサーバー側で動くものだから見るほうがimodeだろうがPCだろうが
関係ないよ。よってVBScriptでもOK。
そのVBScriptで吐き出すHTMLがimode用のchtmlという規格に
あったものじゃなきゃだめだよ。
293 :
デフォルトの名無しさん :03/05/19 12:56
>>287 ネタなのか?それともi-modeはWindowsで動いてるとでも思っているのか?
>292さん なるほど。そういう事だったのですか、初心者にご丁寧に教えていただきありがとうございました。
295 :
デフォルトの名無しさん :03/05/19 14:27
>>294 292は間違ってるよ。VBScriptっていえば普通はクライアント側で動かすことだ。
296 :
デフォルトの名無しさん :03/05/19 14:27
おっと、292の間違い。
297 :
デフォルトの名無しさん :03/05/19 14:28
と思ったらあってた
>295 ASP触った事無いんだったら素直にそう言えばいいのに・・・
299 :
デフォルトの名無しさん :03/05/19 16:25
ってかVBScriptの場合,クライアント、サーバーどっちでも使えるんでは?
300 :
デフォルトの名無しさん :03/05/19 18:39
すいません質問させて下さい VB6で下記のロジックを動かすと year は2002のまま year2は2004となってしまうのですけど何故かわかりません どなたかご教授願えませんでしょうか? dim year as integer dim year2 as integer year = 2002 year2 = 2003 yaer = year + 0.5 year2 = year2 + 0.5
>>300 小数部の.5を整数に丸めるときに、最も近い「偶数」にするらしい。
(なぜこういう仕様なのかは不明)
Int関数を使えば、小数部切捨てになるよ。
最後の行は本文と関係ありません。 失礼しました。
もうすぐ海が見える寂しがり屋達の伝説さワンナイトカーニバルファンファン
過去にすでに質問したのですが、もう一度質問します。 以下のようなプログラムを組みたいのです。VB6で可能でしょうか? あるアプリケーションの特定の数字を拾い、この数字が既定の値、 または変位がいくつになった時に、IEなどのブラウザで自動で 株注文を出す(ボタンをクリックし自動で買う数量や損切りの額 などを入力する)。 よろしくお願いします。
>>306 レスありがとうございます。
アプリケーションによるとのことですが、どんなアプリなら可能でしょうか?
私が予定しているアプリケーションはマーケットスピードというものですが、
大丈夫でしょうか。
>>307 可能な可能性は高いが今すぐ君ができるレベルではないと思われる。
>>307 どのようなやり方をすればいいのでしょうか?
軽くやり方のヒントだけでも教えてもらえると助かるのですが。
311 :
デフォルトの名無しさん :03/05/19 22:37
VBで開発した自アプリケーションをホットキーで起動させたいのですが なかなか参考になるようなサンプルソースが見つかりません。 どなたかご存知の方がいらっしゃいましたら URLを教えていただけませんでしょうか? よろしくお願いいたします。
ショートカットのプロパティからどうぞ。
SetCursorPos+mouse_event->SendMessageへの置換で途方に暮れています。 別アプリの複数の特定座標をクリックする、というものなのですが、ポインタの移動が上手く行きません。過去ログのpart19の>450近辺を参考にしているのですが、クリックは出来ましたがポインタが動かないんです。 ウィンドウハンドル取得->SendMessage(ウィンドハンドル, WM_LBUTTONDOWN, 0, 座標) というステップだけでは駄目なのでしょうか?
>>311 >>312 、それとも、自分で登録した Hotkey? 後者なら、WM_HOTKEY を
サブクラス化したウィンドウプロシージャで取ることになるね。
>>313 そのメッセージは、押したということを示すだけで、マウスカーソルが移動するわけ
ではないよ。ということで、置換できないね。
>>314 QRコードってことは2次元バーコードか。ってことは、その仕様を調べて実装
するしかないんじゃないかな。結構簡単そうに見えるけど、きちんと読み込める奴
を作るのは面倒だと思う。コンポーネントを探したほうがいいんじゃない?
>>314 どうも!そうですデ○ソーが作った二次元バーコードのことです
オレも簡単だと思ってたが実際は数学の専門的な知識が必要なのよ
やってやれんことはないと思うがそこまで時間をかけられん
フリーの DLL なんかもあるがバイナリデータを扱えるものとなると高額でな
ソースどっかにありゃそれ参考にしてと考えていたんだが。。。
俺のネットでのニックネームはゼブラマン!! ヨロシク!! ちんこぉぉぉぉーーーーーーーーーーーーーーっ ちんっっこっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっxっっっっっっっっっっっっっっっっっc
>315 Σ(´く_` ) ナント!! それではSetCursorPos+mouse_event->SetCursorPos+SendMessageにするしか無い、といことですか? SendMessageの第4引数の座標というのは何を示しているのでしょうか?
>>320 クリックされた位置でしょ?
// horizontal and vertical position
って、ヘルプに書いてあるよ。
なんか荒れてるな。多分向こうの
>>1 が向こうのスレに移動させたいんだろうが。
いっそのこと一思いに向こうのスレ削除依頼出すか。
323 :
デフォルトの名無しさん :03/05/20 17:37
>>316 他の簡単なヤツにかえるっていうオプションはなし?
324 :
狂信的アハァ信者 :03/05/20 17:39
リ,;;;;;;:: ;;;;;:: ;;;;; ::;;;;;; \ 人 从 (彡ノり/リノ" ミ;;;;;;,,,.. ゝ ) あ ( );;; ヾ、;;;;...__,, );;;;;;;; ヾ ) お ( i:::) ` ;;ー--、` 〈;;;;;;;::;;; i ) お ( i i::/ ^:::::::.. i ,ll/ニi ;; l ) / ( i l ヾヽ'' ゚ ))ノ;; / ) っ ( i | | iにニ`i, (_/i;;; | ) !! ( | | ! `ー‐'" / ゞ:l つ (⌒ i l| ! " ̄ ,,,. /,; ミi |l | |i ヾ二--;‐' ,;; ,; ミ ||i il i| | ll _|彡" ,' ; /' ̄^ ̄''''\ || l ,..-'" 〈 ; / ヽ / 、, \) ,,.-/ `i ` ミー,;;' ,l l / ;; / .| | ヾ/ ,i' ト | 'i ' /゙` イ ! ,;;|o; i| / ヲ / ,;;人,,_ ハ / , / リ ‐''"⌒ヾ:;' /'゙ i / /ミ ミ! \ ,/ '';; / ゞ i ヽ , ,ノ _,,;:' ,i / Y \ ' ,;;/ _,.;:' l ;;' l :. \ / / i :: i ''::. \ / ,;;イ ;; . l `'::. ヾ, ';/ |
向こうは超初心者の次スレにすればいいんだよ
326 :
デフォルトの名無しさん :03/05/20 22:16
# If ... Then ...#end ifを使おうとしています。 #Constディレクティブを、モジュール内だけでなく、プロジェクト全体でパブリックな値として 宣言したいのですが、方法がわかりません。 「VB public コンパイル定数」「VB public ディレクティブ」などで検索してみたのですが、 モジュール内での定義しか見つかりませんでした。 プロジェクト全体でパブリックなコンパイル定数はどうやって定義するのでしょうか?
>>326 プロジェクトの情報はもちろんプロジェクトにある。
「プロジェクトのプロパティ」→「実行可能ファイルの作成」→「条件付コンパイル引数」
コマンドラインからコンパイルするときは/dオプション
328 :
デフォルトの名無しさん :03/05/20 23:13
>>326 プロジェクト->Project1
から「実行可能ファイルの作成」タブいって条件付コンパイル引数で
bDebugMode = -1
のように記述する
329 :
デフォルトの名無しさん :03/05/21 03:48
最近、VBを勉強し始めたのですが sendinputの使い方がよくわかりません サンプル等を検索してみたのですが それでも、ピンときませんでした。 たとえば、ハンドルの取得は無視して座標10,20を左クリックする場合は どのよーなコードになるのでしょうか? よろしくお願いします。
330 :
デフォルトの名無しさん :03/05/21 09:28
>>330 レスありがとです。
そのソースも、見てはいたのですが
難しすぎて・・・・。
sendinput自体のパラメタに何が入るのかが
いまひとつ分かりませんでした。
うーん、本屋さんで参考になるものでも探してきます
ありがとでした。
333 :
デフォルトの名無しさん :03/05/21 13:06
>>332 っていうか、何がしたいんけ?もしC++とか知ってるなら,VB上でwin32apiバリ
バリをやるよりC++でやったり、VBでも他のやり方があるかもよ。
334 :
デフォルトの名無しさん :03/05/21 14:08
ACCESSに作成したテーブルから .. SELECT * FROM uriage WHERE uriagebi = "05/20" としてデータを読み出し .. hizuke = rs!uriagebi のように参照できるのですが、別のテーブルも参照したく .. SELECT * FROM uriage INNER JOIN kokyaku WHERE uriagebi = 05/20 として同じように .. hizuke = rs!uriagebi すると「要求された名前、または序数に対応する項目がコレクションで見つかりません。」 とエラーになります。 正しい参照方法を教えてください。
335 :
デフォルトの名無しさん :03/05/21 14:58
>>334 "" (ダブルクォーテーションなし)でレコードセット返ってきてるの?
336 :
デフォルトの名無しさん :03/05/21 15:11
>>335 .. SELECT * FROM uriage INNER JOIN kokyaku WHERE uriagebi = "05/20"
の間違いでした
337 :
デフォルトの名無しさん :03/05/21 15:24
>>336 で、問題解決したのか?それともまだ問題は残っているのか?
338 :
デフォルトの名無しさん :03/05/21 15:27
>>337 まだ解決してません。
.. hizuke = rs!uuriage.riagebi
とかへんなこといろいろやってますが
参照できません。
339 :
デフォルトの名無しさん :03/05/21 15:32
>>338 .. hizuke = rs!uriage.uriagebi
のまちがい・・・
340 :
デフォルトの名無しさん :03/05/21 15:50
1. SQLは正しい? -> Access で実行してみる 2. rs にはレコードセットはセットされてる? -> Debug.Print (rs Is Nothig) で True なら、 rs がない 3. 件数は? -> Debug.Print rs.EOF でTrue なら、 データがない 4. フィールド名はただしいか? rs.Fields(0).Name とかでフィールド名をみてみ (rs!hoge は使わないほうがいいらしい)
341 :
デフォルトの名無しさん :03/05/21 15:52
>>334 そのエラーから察するにSQL文に問題あり。
[uriagebi]テーブルと[kokyaku]テーブルのフィールドはどうなってんの?
>>340 「!」で繋ぐのってVB4や5で一般的だったのかな?
最近の書籍やリファレンスでは見かけないのだが。
それともVBAなんかでよくやんのかな。
とりあえず遅いんだよね。
>>334 とりあえず日付囲むなら"より'のほうがよくない?Jetだと#だっけ?
で、SQLへん。INNER JOINの使い方おかしいんじゃない?
345 :
デフォルトの名無しさん :03/05/21 16:46
>>340 他のフィールドは取り込めることがわかりました
ふたつのテーブルで同じフィールド名(uriagebi)をもっているものがダメなようです。
>>342 すみません。 実際にはONはあります。ココでは省略してました。
>>343 同じフィールド名のときは特別な記述方法があるのでしょうか?
>>344 「!」でつなぐ方法が初心者用VBの本に載っていたので。
他のいい方法があったら教えてください。
346 :
デフォルトの名無しさん :03/05/21 16:49
話は変わるが
>>344 Jetでの日付は #12/31/1999# の形が一番無難だっけ。他のDBとあわせるなら
'1999-12-31' だったっけ。
347 :
デフォルトの名無しさん :03/05/21 16:50
>>345 rs.Fields("tablename.fieldname").Value
348 :
デフォルトの名無しさん :03/05/21 16:51
>>345 省略してるときは,わかるようにしといてくれ。 ... とか (省略)とか
349 :
デフォルトの名無しさん :03/05/21 17:00
SQLを学びなさい。
351 :
デフォルトの名無しさん :03/05/21 17:07
>>347 ばっちりできました!
ありがとうございます。
解決です。
今後、「rs!」をやめて、「rs.Fields("tablename.fieldname").Value」でいきます
>>348 すみませんでした。
>>349 もっと良さげなところを教えてください。
352 :
デフォルトの名無しさん :03/05/21 17:56
>>344 「!」が使われていたのは、多分ACCESSの古い仕様のなごりだと思われます。
以下ACCESS1.1のヘルプからのコピペ。
識別演算子
識別演算子 ! と . (ピリオド) は、識別子の構成要素どうしの関係を表します。
演算子 ! のあとには、必ずユーザー定義によるアイテム名 (ユーザーが作成した
フォーム、レポート、コントロール、フィールドなど) を指定してください。演算子 . (ピリオド) の
あとには、通常、プロパティ名を指定します。
演算子 . (ピリオド) を使って、フィールドの値を参照することもできます。その場合、
フィールドが格納されているテーブル名を入力し、そのあとに演算子 . (ピリオド) と
フィールド名を入力します (例:Customers.Address)。演算子 . (ピリオド) を使って、
SQL ステートメントのフィールドの値を参照することもできます。Access Basic の
モジュールでは、演算子 . (ピリオド) を使ってメソッドが参照できます。
ちなみにVB4.0のヘルプには、コード最適化のテクニックとして以下の記述があります。
レコードセットのフィールドを参照する場合は“!”演算子を使用する
Recordset オブジェクトのフィールドを参照するときは、次のように演算子“!”を使用します。
rstEmployees![First Name]
この方法は、フィールド名をかっこで囲むよりも高速です。
rstEmployees("First Name")
353 :
デフォルトの名無しさん :03/05/21 18:48
VBでjpegやgifなどの画像ファイルから 画像サイズ(幅、高さ)を取得する方法を教えて下さい。
>>354 with TPicture.Create do
begin
LoadFromFile('C:\WINDOWS\winnt.bmp');
ShowMessage('幅'+IntToStr(Width)+' 高さ'+IntToStr(Height));
Free;
end;
UsesにJpegを追加するとJpeg対応になる。
その他多種の形式に対応するならSusieプラグイン等を使うと良い。
356 :
デフォルトの名無しさん :03/05/21 19:16
.net?
358 :
デフォルトの名無しさん :03/05/21 19:20
>>354 バイナリで開いて、数値を取得する。
ただし、jpegは固定位置じゃない。
非表示のimageコントロールに読み込むという手抜きワザもあるけど。
359 :
デフォルトの名無しさん :03/05/21 19:23
Dim objPicture as Picture Set objPicture = LoadPicture (strFileName) Debug.Print objPicture.Width とかでできなかった? gifはできないと思うけど
360 :
デフォルトの名無しさん :03/05/21 19:51
質問です。 過去にActive Report 1.0で作られたデザイナで参照されているのがDAO 3.51らしく、 本体プロジェクトの参照をDAO 3.6に変更してもそれが変わっていないようなのです。 本体でACCESS2000のmdbを読み込んでいる部分(OpenDatabase)でエラー 「データベースの形式 'xxx.mdb' を認識できません。」 が出ていたので試しに参照をDAO 3.6に変更したら修正されたのに、同様にデザイナで OpenDatabaseしている部分ではエラーが出る。 という症状なのですが、このデザイナの参照しているDAOを変更する事は可能でしょうか? それとも、別な原因があるのか、ご存知の方いたらご教授願います。 環境は、Win2000sp3、VB6.0sp5です。よろしくお願いします。
>>354 構造の解説サイト見つけてバイナリで取得が一番スマートだと思う。
362 :
デフォルトの名無しさん :03/05/21 22:45
>>361 そりゃそうだが、VBプログラマでそれができるのがどれほどいるか、、
363 :
デフォルトの名無しさん :03/05/21 22:59
VBのクラスってのがよく分からんのだけど 解説してるサイトってない?
>>362 VBプログラマかどうかなんて関係ないだろ。
ToolTipで改行表示するにはどうすればいいのでしょうか?
366 :
デフォルトの名無しさん :03/05/22 09:44
コードエディタウィンドウである文字列を一時的に色付けする方法があれば教えて
>>366 シンタックスエラーを出せば赤くなりますが、何か?
>>367 変数名とかプロシージャ名とか値とかの特定の文字列だけを色付けしたいのです
行ならブレークポイントでもブックマークでもかまわないですし
370 :
デフォルトの名無しさん :03/05/22 10:47
>>366 ツール -> オプション -> エディタの設定
>>370 説明不足で申し訳ないです
色付けしたいのはひとつの文字列のみです
たとえば変数名 'lngHoge' とか
無理。 ありかが知りたいだけなら適当にCtrl+Fで検索しる。
373 :
デフォルトの名無しさん :03/05/22 11:22
>>372-373 やはりそういう機能はないようですね
アドインでもあればと思ったんですが...
あきらめるとします
皆様どうもでした
Excelの編集で複数行のセルをコピーして、TrueDBGridにCtrl+Cで、 セルを壊さずに貼り付けることは出来るのでしょうか? 知っておられる方がいらっしゃれば方法を教えて頂けないでしょうか? よろしくお願いします。
376 :
デフォルトの名無しさん :03/05/23 09:50
VB標準のコントロールの一覧みたいなのってどっかにあります?MSDNみても コントロールのスクリーンショットまであるようなのは見当たらないんだが (とくに、どのプロパティーを変えると見た目がかわるか知りたい)
>>376 標準コントロールの見た目って
3D→2D、枠線の色、背景の色、文字の色くらいしか変えられないかと。
378 :
デフォルトの名無しさん :03/05/23 10:31
>>377 TreeViewとかListView、FlexGridとかがあればかなり助かるんだが
379 :
デフォルトの名無しさん :03/05/23 10:48
>>345 VBの本って,間違っていないけどあまり薦められないことが平気で書かれてる
ことが多い。
380 :
デフォルトの名無しさん :03/05/23 10:52
VBでフォームの最前面表示などを制御する為に API関数「SetWindowpos」を使用し、開発を行っております。 ところが、コンパイルしたプログラムを客先に納品したところ フォームが全く表示されなくなってしまいました!! こちらの環境では全く問題なく動作します。 試しに客先に「SetWindowpos」をコメントにしてコンパイルし直した ものを送ってみた所、うまく動いたとのこと... ちなみにForm_Activateイベントで行っています どなたかこのような体験のある方、いらっしゃれば 宜しくお願いいたします。
381 :
デフォルトの名無しさん :03/05/23 11:07
>>380 APIの宣言時に、客先では存在しないパスを指定してるとか?
こちらの環境あちらの環境を語らないおまえが本気で回答を聞きたがっているとは到底思えない
開発環境を客先に合わせていない奴が悪い 俺んとこでは 客先=IE5 で、こちらをIE6に上げたとたんにADODCが使えなくなった 原因はわかったもののIEはバージョンダウン不可。(つーかコンポーネント類は戻せない) なんで俺はOSから入れなおしたぞ。 そんなわけでOfficeも2000にはしてない。 Exl2000必須の開発を頼まれた時にはインストールだめと言って別PCは都合してもらった
' ここから************************* Dim objPrinter as Printer Set objPrinter = Printer Set Printer = objPrinter '' <ここで型が一致しないエラー発生 ' *************************ここまで はダメで、 ' ここから************************* Dim objPrinter as Printer For Each objPrinter as Printers If objPrinter.DeviceName = strPrinterName Then '' strPrinterNameはプリンタ名の入った変数。 Exit For End If Next Set Printer = objPrinter '' <似たようなことしてるのに、これはOK。 ' *************************ここまで はセーフなんだけど。 どうして初めのソースはダメで、 後のソースの最後の行がエラーになるのか理解できない。 何かご存知のかた、一手ご教授。
>>383 VMWareとかバーチャルPCとか買えばー
凄く便利だよ
386 :
デフォルトの名無しさん :03/05/23 14:01
よろです。 EXCEL200+VBAなんですが、 リストボックスコントロールに横方向のスクロールバーってつけられますか? 長いテキストをAddしたいんですが、ケツの部分が隠れて見えないんですよ・・・
387 :
デフォルトの名無しさん :03/05/23 14:34
>>383 IEごとこでADODCを変えるMSも悪い
>>380 単純に動作環境が違うんでないか?
オーエスの違いで
サポートされてるAPI関数が異なる場合がある
>384 ahoか。型に代入できるわけねえだろ
390 :
デフォルトの名無しさん :03/05/23 15:28
>>384 おれも詳しくはしらんが、
最初の Set objPrinter = Printer で、 objPrinter と Printer は Printer
オブジェクトと呼ばれるもののアドレスを参照するようになる。そして、
Printer に Printer オブジェクトのアドレスを参照させることは出来ない。
次の Set Printer = objPrinter では、objPrinter は別物。Printers コレク
ションの中のひとつなので、全く別のアドレスを参照している。このアドレス
を渡しても、Printerオブジェクトの方のアドレスは変わらない。
Set Printer = New Printer
392 :
デフォルトの名無しさん :03/05/23 15:53
ちゅうか、客先で環境限定できないならVB使うな。 または、この環境以外保障しないと仕様で言い切れ。 この辺だけだよな、.netでましになった点って。
>この環境以外保障しない それだ!
あるオブジェクト変数が既に使われているか知るにはどうすればいいんでしょうか? if ObjVar <> Nothing とかやってもエラーになります
>>394 例外を取る関数を作るのが早いかと。
関数内でその変数にアクセスして、Objectが初期化されていないというエラーが返るかどうか判断。
IsNULLとIsEmptyがこれに関して機能しないのてつらいよな。
396 :
デフォルトの名無しさん :03/05/23 16:04
>>394 If Not ObjVar Is Nothing Then
397 :
デフォルトの名無しさん :03/05/23 16:18
>>384 つまり、最初の
Set objPrinter = Printer
では、いわゆる Printer オブジェクトを参照していて、 Printer オブジェクト
に Printer オブジェクト を参照させるのは「型が一致しません。」というエ
ラーになるらしい。ためしに、
Set Printer = Printer
ってやったら同じエラーでたし。
マジな話、なんでVB厨ってキモイ配色にしたがるの?
俺もVB厨だが、それは謎。 コマンドボタンに色付けようという発想が分からん。
>>398-399 高校で単位とるだけの為にBASICの授業受けたが、先生から「自分なりに
変えてみれ」と言われると初心者はコードをいじるのが怖いらしく色設定と
コントロールの大きさを変えてばかり。
ラベルのフォントをMSゴシックの12pt太字とかにするなよ…
401 :
デフォルトの名無しさん :03/05/24 17:56
printerオブジェクトで文字列を縦書きしたいんだけど、どうすればいいですか。 たとえば名前とかを 西村ひろゆき じゃなくて、 西 村 ひ ろ ゆ き みたいに。
__ | ヽ_ |_| | ,' ̄| |  ̄ ̄ -→|- / ─┼ 、 ,--' ( `‐-, | | ヽノ\| __ / +-+ ヽ_ ノ , 、 | |_|_|_ | | ええっと、こうやって寝かせるのではないです。 純粋な縦書きで。
君の人生、努力する所を間違ってはいないか。
>>403 どういう事ですか?
簡単に実現できる事なのかしら。
>>406 ばれたΣ(´Д`ズガーン
方法は知らない。ごめんね
408 :
デフォルトの名無しさん :03/05/24 19:07
おまいらおもろい
で、縦書きは・・。 一文字ずつ下にシフトさせながら書いていくしかないのかしらん。 なんかすごいブサイクな方法な気がする。
ガイドライン板からきますた(w >403 Printerオブジェクトに対してグラフィックメソッドを使って文字出力する手法が なかったかいのう?ちょとうろ覚え&手元に環境がないので自信がないけど、 座標を直接指定して文字をOutPutするの。適当でスマソ
×>403 ○>401
ガ板からきますた.
>>401 lfEscapementで日本語ページをぐぐってみて.一番上に答えが.
415 :
デフォルトの名無しさん :03/05/24 21:45
VB6.0です。 文字列"a b c d e f"があって、それをスペースで区切り文字1つごとにある処理をしたいのです。 splitして配列を1個ずつ処理しようと思ったのですが、配列の長さがわからない(毎回変わる)ためうまくいきません。 配列の要素の数を知る方法か、それ以外の方法でうまくいく方法を教えてください。
>>415 splitを自作して動的配列に入れるとか。
>415 UBound()
>>415 Dim s
For Each s In Split("a b c d e f")
Debug.Print s
Next
すいません。VB初心者です。 ACCESSのテーブル定義の画面のようなものを作りたいと思ってます。 で、SPREDを使わずに、sheet上でコンボボックスやチェックボックスを 配置したいのですが、良い方法はありませんか?
VBにもDelphiのコントロールグリッドみたいのがあれば・・・
421 :
デフォルトの名無しさん :03/05/25 10:19
VBで常駐のプログラムを作成して、パソコンの使われてない処理能力だけを使って計算させる。みたいな事はできますか?
>>421 常駐とはサービスプログラムのことか?単なる起動させた状態のことか?
>>420 ちょっと違うけど、データリピータでどう?
>>421 CPU使用率を見ながら処理すればいいんでない?
VB ASP → JSP VB MTS → EJB VB ADO → JDBC VB ADSI → JNDI VB DCOM → RMI IIOP VB MSXML → JAXP VB SOAP Toolkit → JAXM VB MSMQ → JMS VB CDO → JavaMail
427 :
デフォルトの名無しさん :03/05/25 13:44
>>425 どこが凄い?
VBはvariant型がいやな感じ
てかJSPをASPと比較しようとしている時点で終わってる。 ASPはカスタムタグが貧弱だし。
429 :
デフォルトの名無しさん :03/05/25 14:44
〉〉422 サービスプログラムとは何でしょうか? 〉〉423 それは考えたんですけど、たとえばループで何かの計算をする時に、どうすればCPUへの負荷を落とせますかね? あと、CPUの使用率を得る方法でWINTOP.VXDのは知ってるんですけど、APIでやる方法はありませんか?なかなか見つからなくて
>>424 > VB MTS → EJB
ここが非常に引っかかる。EJBはクラス継承が使えないと話にならないフレームワークが
沢山あるしVBでは継承が使えない。
継承が使えなくてはVB MTSは貧弱ではないかと。
そういう言い方すっと余計無視される罠。
433 :
デフォルトの名無しさん :03/05/25 15:20
「スレッド」がわからんだけだろ?
434 :
デフォルトの名無しさん :03/05/25 15:25
「スレッド」って何ですか?
氏んでください。
>>427 バリアント型さえつかわなければいいけど。
バリアント型は楽でいいからって容赦なく使う人がいるから。
VBは簡単にプログラムを作れてしまえるだけに
汚いソースコードを大量に生産できてしまう危険性がある。
仕事では使わないよ。 面倒なソース例出せとかそんな時は使うけど。
438 :
デフォルトの名無しさん :03/05/25 17:35
プロパティのUseMnemonicというのが今一つわからないので教えていただけませんでしょうか? &を使ってアクセスキー定義するってどういうことなんでしょうか?
439 :
デフォルトの名無しさん :03/05/25 17:45
〉〉426 すいません見逃してました。スレッドはわかるのですが、優先度を下げるというのはどうやるのですか?
440 :
デフォルトの名無しさん :03/05/25 18:03
MIDIの事で・・ ストリーム形式の曲ってどうやって保存するんでしょうか? 右クリック禁止のところのソースを見る方法は知ってるけど。
>>441 板違いでしたか・・スイマセン。
こういう事はどこに質問すればいいんでしょうか?
444 :
デフォルトの名無しさん :03/05/25 20:53
Win2k で、VB6 + SP5 の、ListViewコントロールを使ってるんですが、 ListSubItems(1).ForeColor = vbBlue と、設定しても、なぜか青に表示されません。(黒になる) これを、青以外の、vbGreen、vbRed、vbYellow など他の色はすべて表示されます。 なぜ青だけだめなのでしょう?VBのバグでしょうか?
445 :
デフォルトの名無しさん :03/05/25 21:42
DBからデータを読み込んでExcelファイルに書き込みしたいと思っています。 データに改行を含んでいると次のセルへ改行されてしまいます。 1セルに改行コードを含む文字列を書き込むようにするのはどうすればいいですか。 [alt]+[return]の改行コードがあるんですか。
>1セルに改行コードを含む文字列を書き込むようにするのはどうすればいいですか。 >[alt]+[return]の改行コードがあるんですか。 馬鹿にも程度ってもんがあるだろ!
447 :
デフォルトの名無しさん :03/05/25 21:57
うん、Excelのセル内ではvbLfが改行コード。
Excelやなんかのように、「ガワ」のウインドウの中に 小さなウインドウ(ブック)が開くようなのはどうやったら作れるのですか?
451 :
デフォルトの名無しさん :03/05/25 23:07
あるコマンドボタンがどのコンテナに属しているかを知るには、 やはりフレームなどをドラッグしてみて、それにつられてボタンも移動するかどうかで見分けるしかないんでしょうか?
申し訳ありませんが、印刷のことで質問させてください。 都合により、TrueTypeフォントをプリンタに180度回転させて上下逆にした状態で印刷する必要があるのですが、そのようなことは可能でしょうか?
>>455 CreteFontのEscapeMentを1800かな(ためしてないが)
>>456 なんでMを大文字にする? escapementって一語だぞ。
>>454 大昔ではフォームソース見て包含されているか見て編集していたんだが、今のはどうかな?
テキスト形式で吐ければ何か判るんじゃないの。
>>458 .frmファイルを見たら
Begin VB.Frame Frame1
Begin VB.CommandButton Command1
End
End
というふうにフレームの入れ子になってるのがフレームに属してるボタンだとわかりました。
オンラインハイスコアみたいなのを作ろうと思うのですが、 どういう風にしたらいいでしょうか? Open ステートメントかまたはそれと同じように Web上にアップロードしたファイルから読み込むとか出来るますか?
461 :
デフォルトの名無しさん :03/05/27 00:23
>>460 perlかなんかでサーバーサイドに集計プログラム作って、
そのcgiにスコアの引数を送受信する形になってくるだろうな。
むろん、暗号化して。
わかりました、ありがとうございます。 少ない知識で暗号化もがんばってみます
463 :
デフォルトの名無しさん :03/05/27 06:27
構造体と動的配列に関する質問です。 構造体 type Atype b() as integer end type をつくっといて dim a() as Atype redim a(2) ←a()のサイズを2に(これは問題ない) redim a(1).b(3) ←a(1)に属するb()のサイズを3に とすると、二つめのredimもa()に対するものとして受け取られてしまい、 b()のサイズを変更できません。 どうしたらこの状態でb()のサイズを操作できるでしょうか? この方法でなくても、これと同じことができればよいのですが。
Delphiって仕事では使わないからなー
ADOでAddNewでもSQL Insert文をExecuteでも 連続して大量に行おうとすると メモリをどんどん消費してしまいます コネクションを切った時点でメモリを開放するようなのですが 途中で開放したり メモリを消費しないようにする方法はあるのでしょうか?
>>467 ADOを使わないっていうのが一つの手かも
469 :
デフォルトの名無しさん :03/05/27 10:51
VBの開発なんだが、ファイルのアーカイブを行うのってどういう手段がある?
>>468 DAOですかね。ちょっと、ADOを指定されてて、まいったなぁ。
再現コードです。ループでメモリがどんどん消費されます。MSGBOXのところで、いったんコネクションを切るとメモリが開放されます。
大量のデータをDBに登録したいとき、みなさんだとどうやりますか?
Private Sub Command1_Click()
Dim fso As New FileSystemObject
Dim cat As New ADOX.Catalog
Dim cn As ADODB.Connection
Dim rs As New ADODB.Recordset
Dim i As Long
Call cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mdb & ";Jet OLEDB:Engine Type=5;")
Set cn = cat.ActiveConnection
cn.Execute "CREATE TABLE XXX(a CHAR(10),b CHAR(10),C CHAR(10),D CHAR(10),E CHAR(10));"
rs.Open "XXX", cn, adOpenKeyset, adLockPessimistic
For i = 0 To 999999
rs.AddNew Array("a", "b"), Array(Format(i, "000000"), "000000")
If i Mod 10000 = 0 Then
MsgBox "refleshしたい"
End If
Next i
End Sub
あんま意味無いか
Delphiの企業向けの仕事ってあるの?
475 :
デフォルトの名無しさん :03/05/27 11:12
476 :
bloom :03/05/27 11:13
>>472 接続プールって知らない。
ありがとう。それも調べてみるね。
最近VBの仕事が少ないと聞くけど、 delphiほど少なくはないんでしょ?
仕事ならDelphiよりVBだろうけど、VBはこの先先細りだからねえ。 Delphiでなくとも今のうちからC#かなにか覚えておいたほうがいいよ。
>>480 調べてみた。うん、関係ないか。
コネクションを切っても、即効でつなぎなおすとメモリは開放されないんです。
コネクションを切ったあとにMSGBOX出して1秒ぐらいあけて閉じれば
メモリは開放されるんです。
非同期でやってるわけでもないのに、いったい何をキャッシュしてるんだろう。
しばらく毎にアイドリングしなければだめなのかな。
オプションやプロパティーの設定で回避できるものなのか調べてるけど、さっぱりです。
もともとメモリなんてすぐ解放されるもんじゃないだろ。 メモリ管理もろくすっぽやってないDOSとかならともかく。
>>482 そうですが、大量のDB登録で
メモリスワップまで発生してパフォーマンスが落ちては問題ですし
途中でコネクションを閉じてアイドリングさせる方法以外に
もっとスマートでオフィシャルな開放方法があるんじゃないかなと思いまして。
ADOって、連続してレコードを追加する際は、合間に休ませろ
なんて仕様なんでしょうか
聞き方が悪いのかgoogleさんは答えてくれないし、困りました。
484 :
デフォルトの名無しさん :03/05/27 11:46
どうでもいいけど、リフレッシュのスペルはrefreshだ。
487 :
デフォルトの名無しさん :03/05/27 11:58
ADOで十万件のINSERTじゃ、どうやっても遅いのは仕方ないんじゃなかろうか。 サーバー側でスクリプトやストアド組むのはダメなの?
>>487 ええと、サバクラじゃなくて、ローカルアプリケーションの内蔵DBといった用途でして
スピードは問題ないんですよ、メモリをなぜか消費してしまうと。
で、今、adLockBatchOptimisticでrs.BatchUpdateにしたら、ぜんぜんメモリ食わなくなりました。
しかも速度もアップ。Batchでまとめるほうがメモリ食わないんでうすね。
そんなわけで、とりあえず、解決しました。いろいろありがと>みなさん
489 :
デフォルトの名無しさん :03/05/27 13:15
お邪魔します。 あのぉー、どこに質問したらいいのか分からない くらいもしかしたら初歩的な質問かもしれないの ですが、、、(汗) 自分でサイトを作っているのですが、 リンクを張って、普通にページに飛ぶのではなくて 小さい小窓のようなウィンドウが開くように するにはどうしたら良いのでしょうか? スレッド違いだったらホントごめんなさい。 どなたかよろしくお願いします。。
>>488 あ、嘘。追加されてなかった。
エラーも出ないのかな????
492 :
デフォルトの名無しさん :03/05/27 13:37
>>490 エラーの場合,エラーが出るはず。UpdateBatchの前にUpdateしてる?
UpdateBatchのサンプルくれ
494 :
デフォルトの名無しさん :03/05/27 13:49
On Error GoTo ErrH If (rs.ActiveConnection Is Nothing) Then Set rs.ActiveConnection = cn End If Call cn.BeginTrans rs.Fields(flagName).value = "1" Call rs.Update Call rs.UpdateBatch Call cn.CommitTrans Set rs.ActiveConnection = Nothing Exit Function
495 :
デフォルトの名無しさん :03/05/27 13:57
レコードセット使わず、ConnectionかCommandだけでやったらいかが?
493 494 は私ではないです。
>>492 メインで書いてるコードではエラーが起きない
AddNewのあとにはUpdateしてる
小さいシンプルなコードで書いたらエラーでました。
ちょっと、大きなコードのほうは別のエラーも入っていそうなので、
ちょっと精査してます。
>>495 ええとですね、Connection.Execute で SQL Insert文を連続発行しても、メモリが消費されてしまうんですよ。
で、スピードはAddNewの方が圧倒的に早いのでそっちでためしています。
ですが、メモリの問題がクリアできるなら多少遅くともExecuteでSQL投げます。
Const mdb As String = "c:\tmp.mdb" Dim cat As New ADOX.Catalog Dim cn As ADODB.Connection Dim rs As New ADODB.Recordset Dim i As Long Call cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mdb & ";Jet OLEDB:Engine Type=5;") Set cn = cat.ActiveConnection cn.Execute "CREATE TABLE XXX(a CHAR(10),b CHAR(10),C CHAR(10),D CHAR(10),E CHAR(10));" rs.Open "XXX", cn, adOpenKeyset, adLockBatchOptimistic For i = 1 To 999999 rs.AddNew Array("a", "b"), Array(Format(i, "000000"), "000000") rs("c") = "cccc" rs.Update If i Mod 1000 = 0 Then rs.UpdateBatch End If Next i
>>497 Execute のオプションに adExecuteNoRecords を付けてる?
付けてないみたいだね。
>>499 あ、新情報ありがとうございます。調べてみます。
Call cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mdb & ";Jet OLEDB:Engine Type=5;") Set cn = cat.ActiveConnection cn.Execute "CREATE TABLE XXX(a CHAR(100),b CHAR(100),C CHAR(100),D CHAR(100),E CHAR(100));", , adExecuteNoRecords For i = 0 To 999999 cn.Execute "INSERT INTO XXX VALUES( '" & Format(i, "000000") & "', 'b', 'c', 'd', 'e' );", , adExecuteNoRecords Next i これでも、どんどんメモリが消費されてしまうんです。
VB で、自プロセスの消費メモリ容量ってどうやって調べるのでしょうか?
消費してるメモリってDB側なんじゃ
506 :
デフォルトの名無しさん :03/05/27 14:49
win2kならprocess viewer 立ち上げる方法しか知らない。 細かいけど,Formatは遅いから1000000回のループだと別の方法の方が いいと思われ。
>>504 DB側だと思うけど(JETエンジンのDLL?)
タスクマネージャだとVB6.EXEが増大してます。
>>506 Right$("000000" & i, 6) って感じでしょうか。まぁ、これは実際には使わないコードだし、DBのパフォーマンスからみればチリのようなものかと。
今までメモリの消費量なんて気にしたことなかった。 いったい何件追加するの? DBはAccessなんですよね? 大丈夫ですか?
510 :
デフォルトの名無しさん :03/05/27 15:01
っていうか、mdbで100万件はMSの保証値を大きく超えてるな
>>509 >>510 ん、まぁそう判断してあきらめるのを、どの辺りでするかといったところですかね。
どう判断した場合、何回かごとにコネクションを切断して、数秒アイドリングさせるといったことが必要になります。
できれば避けたいと思っています。
もう少し探してみます。
>>510 100万件というのも、場合次第なのですが
レコードサイズもフィールド数も大きいので
メモリの消費量も大きくなるみたいです。
先ほどのコードのCHAR(10)ってのをCHAR(100)にすると、がんがんメモリ食います。
>>470 Connection を使わずに Recordset をダイレクトに開く・・・
なぜにADOX?
>>513 試してみます。
>>514 あー、MDBを生成する為です。なにか問題あったりするのでしょうか。
VBに触れて5ヶ月、まだまだわからない定石だらけでして。
これで作ったmdb。うちのAccessだと開けない・・・ データベースの形式 <ファイル名> を認識できません。(Error 3343)
ところで、ふつうADOを扱うときは コネクションを頻繁に切断するものなのでしょうか? たくさんInsertをしたりするアプリケーションを掻いたことのある人 どうしてましたか?
>>516 MDBのバージョンかしら。
Microsoft.Jet.OLEDB.4.0 のところを下げたら見えるかも。
当方Accsess2000で開けています。
>>513 rs.Open "XXX", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mdb & ";Jet OLEDB:Engine Type=5;", adOpenKeyset, adLockPessimistic
ってしても、案の定なんら変わらなかったです。
>>518 うちとこAccess97やけん。おかしいと思った、いつもはOLEDB.3.51やもん
やっぱDAOやな。俺はそれしかしらん。
ADOには泣かされた経験多々,がんがれ
>>520 どうしてもADOだめならDAOもやってみるよ
なんか、コネクション切れば開放されるとか言ったけど
それも違ってたよ、開放されたようにみえて開放されてませんでした
再開したら同じとこまで戻っちゃう。
>>521 今ダオってみてるけど。桁が違うだけでリークされちまう・・鬱 ビルゲイツのバカやロウ!
>>522 そうですかぁ。DAOはさわったことなかったので、調べつつやってみてますけど
気力が・・・。
こつこつ、ひとつづつ、つぶしていきます。
524 :
デフォルトの名無しさん :03/05/27 17:09
>>517 それは接続プール。
cn.Closed
とすると、実はWindowsが裏でしばらくの間保持していてくれる。つぎにコネ
クションを張ったときにはこのプールされた接続を使う。
>>524 なるべく、メモリを消費しないようにするにはどうしたらよいのでしょう?
アプリケーションを再起動しないとだめなんでしょうか?
vbsでDOSプロンプトから入力する方法を教えて下さい > test.vbs > メッセージを入力して下さい ← これが表示される > xxxx ← 値を入力する ソース側で値を受け取る方法も教えて下さい よろしくお願いします
'一応DAO貼り。環境が違うので保証しがたいです。 'メモリ使用はワークスペースのサイズで、一度膨れたサイズは再利用されてる様子。 '(一回目Cancel→弐回目Cancel として動きを確認 排他制御やインデックスは別問題としてほしい) 'とりあえずうちとこの三勝設定 Microsoft DAO 3.51 Object Library のみ Private Sub Command1_Click() Dim db As Database: Dim rs As Recordset: Dim td As TableDef: Dim I As Long Dim rc As Integer On Error GoTo eHandle Set db = Workspaces(0).CreateDatabase(Format(Now(), "HHNNSS") & ".mdb", dbLangJapanese) Set td = db.CreateTableDef("XXX") td.Fields.Append td.CreateField("A", dbText, 10) td.Fields.Append td.CreateField("B", dbText, 10) td.Fields.Append td.CreateField("C", dbText, 10) db.TableDefs.Append td Set td = Nothing Set rs = db.OpenRecordset("XXX") For I = 0 To 999999 rs.AddNew rs.Fields(0) = Format(I, "000000"): rs.Fields(1) = "000000" rs.Update If I Mod 10000 = 0 Then rc = MsgBox("refleshしたい", vbYesNoCancel + vbDefaultButton2) If rc = vbCancel Then Exit For ElseIf rc = vbYes Then End If End If Next I Exit Sub eHandle: MsgBox Err.Description, vbMsgBoxHelpButton, , Err.HelpFile, Err.HelpContext End Sub
>>527 ああ、とても助かります。ありがとうございます。
で、DAOも駄目なのかぁ。。。さてと。どうしようかなぁ。
まだやってんのか、これ…
>>531 すんません、なんかFAQネタかと思うぐらいシンプルなのに
はまってしまったようで・・・
>>528-529 有難うございます。
inputboxでpop upからの入力は分かりますが
DOSのコマンドプロンプトからの入出力が分か
りません
お手数ですがお願いします
536 :
デフォルトの名無しさん :03/05/27 18:11
VBでスレッドの優先度を落とすのはどうすればいいのですか?VCならそれっぽいのがあるのですが・・・。VBでは見つかりません。
>>533 なんで気を悪くされたのか、わかりません。
簡単な問題そうに思えたのに、意外と難しかった。
と思っています。
>>536 VCでのそれっぽいやり方を晒せや。それが可能かどうか答えが返ってくるだろ。
539 :
デフォルトの名無しさん :03/05/27 18:18
vbsを右クリして”コマンドプロンプトで開く”でやっても pop upが出ます。 cuiで入出力をやりたいんですが...。
VBでエラーが発生したとき、その発生した行を特定する方法ってありますかね?
>>542 できないんですか。分かりました。
有難うございます。
>>543 EXEになってたら行もなにもあったもんじゃないだろ?
>545 確かにそのとおりなんだけど・・・・ On Erorr goto ×××でエラートラップして、エラー内容と発生した関数をログに 落とすようにしてるんだけどさ、「どの行でエラーになったか」までが把握できたら いいなあと思ったわけなんですわ。それで皆様のお知恵を借りたいな、と。
>547 昔のBASICにはあったけど、VBにもありましたっけ? ヘルプでは出てこなかったので・・・・( ´・ω・)
>>548 インタプリタとコンパイラを同じように見られてもな。
>>547 ヘルプには載ってない。疑うより、試してみろ。
>550 そりゃ解ってんだけどさー( ´・ω・) >551 ありがとう。当たって砕けてみるっす。
>>553 Dim str
WScript.echo("メッセージを入力して下さい")
str = WScript.StdIn.ReadLine
WScript.echo(str)
557 :
デフォルトの名無しさん :03/05/27 20:10
タスクバーに表示されるアイコンで XPのWindowsUpdateのような吹き出しのメッセージを表示させたいのですが 吹き出しを作り右隅に表示されることはできたのですが、そのプログラムの アイコンから吹き出しがでてるようにすることができません。アイコンの 座標がわかれば出来ると思うのですが、方法がわかりません。どなたか 教えてください。
559 :
デフォルトの名無しさん :03/05/27 22:27
ブロック崩しを作っていて、球(picture1)を跳ね返す台(picture2)ありますよね。 球が台に当たれば跳ね返すという判定がわかんないんだけど どうすればいいのでしょう?アホっぽい質問で申し訳ないんだけども(;´Д`)
560 :
デフォルトの名無しさん :03/05/27 22:29
562 :
デフォルトの名無しさん :03/05/28 00:11
>>546 各行ごとに lngLine = lngLine + 1 として、エラートラップでそれを吐き出
せば?
563 :
デフォルトの名無しさん :03/05/28 02:51
>>464 463です。この書き方で動いてました。
何か勘違いしてました。どうもありがとうございます。
ちなみに、こういう配列は「ジャグ配列」といってVB.netには
実装されているみたいですね。
>>562 下らんネタ言ってないで真面目に答えてやれよ。
行番号をつけるにはawkでも使うと楽。
Sub Main()
On Error GoTo ErrorHandler
100 Debug.Print 1 / 0
Exit Sub
ErrorHandler:
MsgBox Erl & " " & Err.Description
End Sub
VBでADO+MDBのように使えるローカルアプリケーション用のデータベースってありますか。 MySQLにはたしか内蔵用のライブラリもあったような。。。 DLLにしてAPIコールすれば使えるのか試してみよ・・・。
567 :
デフォルトの名無しさん :03/05/28 09:57
VBのコメントの ' を付け消しするボタンってショートカットキーありますか
Shift+7
>>567 ツールバーに「編集」を表示し、ツールバーをユーザ設定状態にし、
コメントブロック、非コメントブロックを右クリックしてボタンのテキストを表示して、
名前に(&C)とか入れるとALT+Cをショートカットとして使えるようになる。
>>543 金をかけてもいいなら DevPertner とかいうソフトがそんな機能持っている気がする。
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
573 :
デフォルトの名無しさん :03/05/28 13:02
574 :
デフォルトの名無しさん :03/05/28 14:59
クラスのコピーってどうやって作んの?
575 :
デフォルトの名無しさん :03/05/28 15:32
クリレポ(8.5)のスレありませんか?
577 :
デフォルトの名無しさん :03/05/28 15:56
>>577 インスタンスのことかどうかはよくわからないのですが
自分自身のコピーを作り一部のプロパティを変更して
最終的にグローバルなコレクションに追加したいのです
もちろんコピー元のクラスもこのコレクションのメンバです
しかし普通に代入すると元の値まで変わってしまうようで
見当違いなこと考えてるのかも知れませんが
>インスタンスのことかどうかはよくわからないのですが レスもらったら、まず調べてから次のレスしる。
580 :
デフォルトの名無しさん :03/05/28 16:28
>>569 ありがとうございます。
設定はできたけど、なんか動きませんでした。
いろいろ試してみます。
581 :
デフォルトの名無しさん :03/05/28 16:48
>>578 その話し振りだと、クラスのこと理解してないね。クラスの勉強をしたらどう?
>>557 できましたよー
NOTIFYICONDATA構造体を新しくして
NIF_INFOでMODIFYすればいいみたいですよ。
tnd.uFlags = NIF_INFO;
lstrcpy(tnd.szInfo, "aaa");
tnd.uTimeout = 15000;
lstrcpy(tnd.szInfoTitle, "AAA");
tnd.dwInfoFlags = 1;
Shell_NotifyIcon(NIM_MODIFY, (NOTIFYICONDATA *)&tnd);
585 :
デフォルトの名無しさん :03/05/28 17:25
Berkeley DB をVBで使えますでしょうか? どこかにラッパーでCOMになってるようなものがあったら教えてください
>578 =演算子をオーバーライドしてください。
587 :
デフォルトの名無しさん :03/05/28 18:10
クラスモジュールって、どういう時に使ってる? 共通的な処理でもないのに徹底的に処理をクラスモジュール化したPGMあるんだけど、 こんなのってどうよ? 追っかけきれん。
初心者で申し訳ございませんが、是非皆さんの知恵をお貸しくださいませ。 ランダムアクセスファイルで検索機能をつけたいのですが、1つだけ検索結果を 表示することができるのですが、複数の場合(住所が東京で複数ある) For i = i To LOF(filenum) \ Len(Address)'レコード全部読み込む Get #filenum, i, Address If Address.Name Like (strtemp & "*") Then '.Nameとstrtempを比較 rcNo = i '検索条件にヒットしたレコード番号を取得 End If Next i Get #filenum, rcNo, BihinType '取得したレコード番号のデータを取得 複数検索条件と一致した時にどうすればすべてのレコード番号を取得できますか? すみませんが、よろしくお願いします。
うえばー
>587 共通処理かどうかは、クラスモジュールにするかどうかとは関係ない。 オブジェクトにすべき物をクラスに分割する。 静的分析に関しては、 [憂鬱なプログラマのためのオブジェクト指向入門]でも読め。
592 :
デフォルトの名無しさん :03/05/28 18:35
>>587 > 共通的な処理でもないのに徹底的に処理をクラスモジュール化したPGMあるん
> だけど、こんなのってどうよ?
VB.Netでは、標準モジュールもクラスの特別な例だそうだから、おんなじ
じゃない?おれが作るプログラムは大体標準モジュールはほとんどない。
593 :
デフォルトの名無しさん :03/05/28 18:43
三本の棒が立っている。 この三本の棒の一番左の棒には下が一番大きな輪 上が一番小さな輪がくなるようにはめてある。 この輪を全て中心の棒に移動させる訳だが、それにはルールがあり ・一度にひとつの輪しか移動できない。 ・必ず下に大きな輪が来るように移動させなければならない。 10 LET X=2 20 PRINT X-1;"枚" 30 PRINT 2^X-1 40 LET X=X+1 50 GOTO 20 END
とやると、49枚あたりからうまく表示されないんだよな〜
スレタイ嫁よ。
あるコントロールのツールチップをポップアップさせる方法ありませんか? マウスカーソルを上に持ってくるとかは無しで
上にラベル表示させる。
>>598 APIでメッセージ送る。具体的な方法はぐぐれ。2000件ほどヒットする。
ググッたんならアドレス貼ってやればいいのに。
602 :
デフォルトの名無しさん :03/05/28 22:12
印刷はどんな方法使ってますか? どれが一番いいと思いますか?
>>602 プリンタ使わないときついだろ、やっぱ。
漏れもプリンタだな。
605 :
デフォルトの名無しさん :03/05/28 22:17
≡ ∧_∧ ∧_∧
≡( # `Д´)⊃ )Д`)
>>603 ≡/つ / ⊂ ⊂/
>>605 ___ ビシ!
 ̄ ̄ ∧_∧ ピシ!! ∧_∧
 ̄ ̄ <丶`∀´> ☆ (#)´Д`)
ー ノ⌒つ ノ⌒て〕☆ノ # ⌒つ
( ´ / ̄ ̄ /# ノ´
/ ) )__ / /\ く
〆 レ ' ̄ レ´ し´
やりやがったな!そりゃそりゃ
607 :
デフォルトの名無しさん :03/05/28 22:19
608 :
デフォルトの名無しさん :03/05/29 01:23
csvファイルに出力する方法で A列、B列の順に出力したいです。 xx.WriteLine(a b) aとbの間に何を入れればいいでしょうか。当方office2000です。 初歩的な質問ですみません
>608 xxx.WriteLine(a &"," &b) カンマ
610 :
デフォルトの名無しさん :03/05/29 01:56
クソ初心者な質問をさせてください。 VBプログラムを配布したのですが、実行環境に必要なファイルが ないと怒られるので起動できません。 とりあえずVBの標準ランタイムなどもふくめ、必要なdllやらocxやらを exe本体と同じフォルダに置いたらいいんでしょうか? system32の中とかあまりいじりたくないので・・・。 よろしこおながいすます。
>>610 Side-By-Sideを使うなら、それでOKです。ただし、レジストリへの登録は、
すでに同じCOMコンポーネントがあるなら、それを上書きしてはなりません。
Side-By-Sideを使わないのなら、それは不可能です。
612 :
デフォルトの名無しさん :03/05/29 08:19
>>587 そのプロジェクトはオブジェクト指向でつくられたんだろう。君はOOPをしらないよう
だから、へたに手を出さないほうがいいよ。手続き型しか知らない人がオブジェクト
指向でできてるものをいじると、せっかくのオブジェクト指向を壊すから。
オブジェクト指向なんていらないと思われ
614 :
デフォルトの名無しさん :03/05/29 09:23
615 :
デフォルトの名無しさん :03/05/29 11:50
ピクチャーボックスの中に置いたテキストボックスやラベルをそのまま印刷する方法を教えていただけますか? printpictureでは、画像しか印刷されず、何も映らないんです。
printscreen
617 :
デフォルトの名無しさん :03/05/29 11:53
すいません、
>>615 のものです。form自体はプリントアウトしたくないんです。あくまでピクチャーボックスの中だけをプリンターで出力したいんです。
>>617 A案
1.もう一つ,裏に同サイズのピクチャ(p2)を用意する(Vis=False,AutoRedraw=True)
2.さらに,テキストのコピー用にピクチャ(ptxt)を用意する(Vis=False,AutoRedraw=True)
ptxt.FontName = text1.FontName
ptxt.FontSize = text1.FontSize
ptxt.Print text1.Text
p2.Picture = p1.Image
p2.PaintPicture ptxt.Image, text1.Left, text1.Top
Printer.PaintPicture p2.Image
Printer.EndDoc
3.ボックスの境界線とかが居るならそれは自分で書く。
B案
1.API,GetWindowDCとBitBldを定義
BitBlt p2.hDC, 0, 0, 100, 100, GetWindowDC(text1.hwnd), 0, 0, &HCC0020
p2.Refresh
619 :
デフォルトの名無しさん :03/05/29 13:34
>>618 ひとまずAでやってみます。ご丁寧にどうもありがとうございました。
620 :
デフォルトの名無しさん :03/05/29 13:47
ADOのRecordsetのFieldsで、フィールドがあるかどうかはどうやってわかります? If (rs.Fields("FieldName") Is Nothing) Then ではダメなので、For で rs.Field(i).Name = "FieldName" で判定しているん ですが、もっとかっこいいやり方がないかと。
あるかないか分からない状況って何?
622 :
デフォルトの名無しさん :03/05/29 13:54
SELECT * FROM hoge したときにあるかどうかわからん、みたいな状況です。
答1 For Each fldWk In rs.Fields If fldWk.Name = "hogege" Then Msgbox "I't so cool!!" Exit For End If Next 答2 基本設計を見なおせ
答2ワラタ 後々の事考えると、こっちが有力だろうな。
625 :
デフォルトの名無しさん :03/05/29 14:11
>>623 >答1
既にやってます。
>答2
たんなる SELECT * なら基本設計見直すべきところでしょうが、DBスキーマを
見るモジュール作ってるんで。
>既にやってます。 十分かっこいいだろ、まだ不服なのか?
627 :
デフォルトの名無しさん :03/05/29 14:34
>>626 620でそれ以外にといってるのに、あえてその方法を出してくるところが
わからん。
>>620 フィールドの構成を取得したいなら SQLDMO を使え。
SQLDMOを使ったところで同じことだろう。もう少し考えてから発言しろ。
630 :
デフォルトの名無しさん :03/05/29 16:08
失礼します。 Inetコンポーネントで、FTPサーバからファイルを取得するプログラムを 作ってるんですが、相手がUNIXのためEUCで取得してしまうので(?)、 改行コードが消えてしまい、その後のファイルから1レコードづつ 配列に格納する部分で、データが1レコードに全部収まってしまいます。 ファイル取得時に改行コードが消えない方法を教えていただきたいのですが。 よろしくお願いします。
631 :
デフォルトの名無しさん :03/05/29 16:29
>>630 俺も似たようなやつ作ってるんだが
一旦 ローカルにFTPしたファイルを
VBで改行コード リプレースする処理作ってるぞ
632 :
デフォルトの名無しさん :03/05/29 16:30
>>630 Unixの改行コードは LF (ちなみに、Winは CR + LF、マックは CR)だから、
置換すれば?
633 :
デフォルトの名無しさん :03/05/29 16:32
>>631 >>632 ありがとうございます。
一度置換するクッションをいれればよかったですね。
やってみます。
ありがとうございました。
ASCIIモードで転送できないのかい? WinInet.DLLなら指定できるが。
お初です。 前から疑問だったのですが、VBで作成した EXE はリターンコードを 返せないのしょうか??
ExitProcessで返せるよ
>>637 おっしゃる事は分かるのですが、VBの中でExitProcessは
やっぱまずいと思います。
VBでも END を実行する訳ですよね。
>>638 イヤなら他の方法考えたら?
CでVBのプログラム呼んで、VBプログラムを監視し、
VBは終了際に特定のファイルを作成
Cプログラムはそれを読んでリターンコード作成。
(あほらしいか)
やっぱり、それしか無いですかね。 ちょっと、だるいですね。
>>609 どうも有難う。
ここは親切なインターネットですね
>611 Side-by-Side というのですね。初めて知りました。 とりあえずキーワードを頼りに調べながら、実際にやってみます。 ありがとうございました!
標準モジュールの宣言セクションで変数を宣言した場合は Privateで宣言してもどのFormからも利用できる変数になってしまうのでしょうか?
すんません、あと1つ。 必要なコンポーネント(ディストリビューションウィザードとかでくっ付け られるファイル)を、ぜーーんぶexeに入れてしまうことってできます?
そういうのはコンポーネントと言わんような
>>610 そういうツールが海外のものであったりするけど、日本語環境で
うまく動くかは不明。
基本的にはできないって考えたほうがいいよ。
>>610 VBのフリー・シェアウェアが嫌悪される理由その1
Delphiマンセー
すいません質問させていただきます FF F4 BC のバイナリデータを BC F4 FF にしたいのですが BC 81 45 になってしまいます。 なぜでしょうか? プログラムはこんな感じです Dim Strbuff As String Dim FileNo1 As Integer Dim FileNo2 As Integer FileNo1 = FreeFile Open "rp" + ".txt" For Binary Access Read As #FileNo1 FileNo2 = FreeFile Open "rp2" + ".txt" For Binary Access Write As #FileNo2 Strbuff = String(3, Chr(0)) Get #FileNo1, 1, Strbuff Strbuff = StrConv(Strbuff, vbFromUnicode) Strbuff = MidB(Strbuff, 3, 1) + MidB(Strbuff, 2, 1) + MidB(Strbuff, 1, 1) Strbuff = StrConv(Strbuff, vbUnicode) Put #FileNo2, , Strbuff Close #FileNo2 Close #FileNo1
'F4BC を1文字として認識してるね。バイト操作ならバイト型がいいでしょう Private Sub プログラムはこんな感じです() Dim FileNo1 As Integer Dim FileNo2 As Integer Dim rb(1 To 3) As Byte Dim wb(1 To 3) As Byte Dim I As Byte FileNo1 = FreeFile Open "c:\temp\a.tmp" For Binary Access Read As #FileNo1 FileNo2 = FreeFile Open "c:\temp\b.tmp" For Binary Access Write As #FileNo2 Get #FileNo1, 1, rb For I = 1 To 3 wb(4 - I) = rb(I) Next I Put #FileNo2, , wb End Sub
レスさんくす。
>648
dllとかocxの集まりですよね。コンポーネント類とでも言ったらいいのかな。
>649
なるほど、VBでは基本的にはできないと。
そうなると例えば、exeとテキストファイル(INIとか)だけを解凍して使わせる
アプリはVB以外ってことでしょうか。
>650
確かにいろいろ調べていくうちに面倒に思えてきました。
http://www.galliver.co.jp/writing/vmx/sxs2k/ とかにside-by-sideについて詳しく書かれてるけど、う〜むって感じ。
659 :
デフォルトの名無しさん :03/05/30 13:59
こんにちは。
今VBでメールの送受信をしたいと思っています。
(常時稼動のシステムがエラーを起こしたとき、携帯のメール宛
に報告を行いたいから)
そこで現在 下調査中ですが
酒井法雄氏のサイトより
http://www.int21.co.jp/pcdn/vb/noriolib/vbcomp/6/vbcomp6/vbcomp6.html >Internet Controls Packは、32bitのInternet用ActiveX コントロール集である。
>ActiveXコントロールはOCXだから、VB, VC++, Access などで利用することができる。比較的上位のプロトコルに合わせて作成されているので、WinSock APIやプロトコルに対する詳しい知識はなくてもなんとかなってしまう。さらに、フリーライセンスである。
なんて素敵なものが!!(SMTP,POPコントロールも付いてる)
そこでそのコントロールパックを入手したいのですが、見つからなくて困ってます。
提供してある場所をご存知であれば教えていただけないでしょうか?
また、検索で見つけられたかたは?
どのようにして見つけられたか後学の為、合わせて教えてもらえれば幸いです。
#WinSock作ろうとしていた矢先にこれを知り、是非しようしたいなぁ
661 :
デフォルトの名無しさん :03/05/30 14:43
>>660 ぎくっ!日本語サイトだけを見てました。
660のサイトですが、同名ですが別のソフトウェアみたいです。
重い腰を挙げて、現在英語ページも検索対象として探すと
発見できたみたいですが、本家でもなく・・・なんとなくダークな感じの
ページで本当にダウンロードしていいのか躊躇しています。
http://webm43ac.ntx.net/files.html だって血だらけの人間のアイコンがあるページだし。。。。
今、本家MSサイトで探してます。
度々です。
MSのInternetControlsPackは以前 ベータ公開されていたものを
>>660 の会社に移籍したそうです。
現在、MagnetSoftwareが開発、サポートしています。
ただMSが公開していたバージョンには搭載されていたPOP、SMTP機能が
MagnetSoftwareバージョンでは削除されており、ガーンって感じです・・・
やっぱり、VBでメールを使うのって(Outlookは使わないで)
WinSockで組むのが定番なのでしょうか?
ありゃ、ほんとだ、Microdoftのって書いてあったね。こっちも早とちりしますた、スマソ メールの送受信だけならそんなに難しくもなかった・・・・・はずだよ。たしか。
ご、ごめん、漏れは>660だ。本物の>659氏ごめんよおぉぉ
MFCのMAPIをVBから呼び出して使えないかなあ?
>>665 ちょっとビックリしました(^_^)
>>666 ありがとうございます。BASP21は以前ASPで使用したこともあり
前向きに検討しています。
現在、ライセンス情報を確認してます(やったー 業務利用OK)
おそらく、BASPを使用する方向になりそうです。
皆さん、ありがとうございました。
669 :
デフォルトの名無しさん :03/05/30 15:21
えと、Access⇒VBのノウハウなどが書いてあるWebPageとか、ご存知ありませんか? 多分同じような経験をした方は多いと思いますので、まずは先人の知恵に縋ろうと思います(^^; さしあたって問題なのがDBグリッド(データシートビュー)とあの多機能なコンボボックス(^^;の移植だと アタリを付けているのですが、やはりBOCあたりのコントロールを使ったほうがカンタンでしょうか? 他にも「ここは気をつけれ!」という部分があればご指摘ください。よろしくお願いいたします。
>>669 > 「ここは気をつけれ!」
(1) エラー処理には神経使わないとダメ。
・Accessだと、エラー時は実行中のスレッドが停止するだけだが、VBで適切な
エラー処理ルーチンが記述されていないと、プロセスが落ちる。
・VBでは通常、実行ファイルしかお客に再配布しないので、メッセージやログ
の文言でエラーの原因がわかりやすいように配慮をしないとエラー原因の追求
& 解明が困難。
(2) 同名のクラス(例: TextBox、ComboBox)、メソッド、プロパティでも、Access
とVBで仕様が違う場合がある。なまじ経験があると、確認を怠る場合があり、
危険。
他の留意点は次の人、どうぞ。
>>670 アドバイスありがとうございます。その後中身を洗い出している最中なのですが、
結構複雑(Accessのカンタンさにモノを言わせた画面(^^;))が多いので、あまり
クリティカルでない部分はプロジェクト(.adp)を併用しなければならないかも、
と考えております。
……プロジェクトの事って、「ビジネスsoft」で聞いたていいのかなぁ?(^^;
(3)実行前にファイルを保存(Ctrl+S)する癖をつけたほうが(・∀・)イイ!! やべっ、無限ループ・・修正内容あぼ〜ん!
Ctrl+Breakで止まるよ
674 :
デフォルトの名無しさん :03/05/30 16:22
入力と出力でファイルを開きたいんですが、出力先のファイルが 他のアプリで開かれているか調べる方法はありませんか? 今は、OpenステートメントのOutputで開いているんですが、 他アプリが排他制御で開いていると On Error GoTo になってしまうもので。 何かいいやり方がありましたらよろしくお願いしますm(__)m
>>674 ん? On Error でエラートラップできるならそれでいいんでないの?
>>675 さんレスどうもですm(__)m
あまりよく分かっていないのですが、On Error は自分の予想外のエラーの為だと思っていました。
できれば入力と出力ファイル別にエラーメッセージを分けたいのですがm(__)m
>>676 Err.Number(だっけ?)でエラー番号を調べれるし
On Error goto 0 でエラートラップの範囲も指定できる
多分やりたいことは On Error で十分トラップ可能と思われ。
On Error Resume/Goto を使い分けるのがプロ On Error 禁止で挑むのが匠 あえてOption Explicit も禁止で挑むのがDQN
>>677 可能性のあるエラーコードの種類が多い局面ほど、知識と経験とセンスが問われる。
発生し得るエラーが一種類しかない状況なら、初心者でも新人でも対応は容易。
ファイルが開けないなどの、実行時に発生するエラーを捕らえるにはOn Errorを使う。 これ以外の方法では捕らえられないし、On Errorを使うのはごく普通の話。 余談 C言語などでは関数の戻り値でエラーをチェックするが、エラー処理が煩雑になる、 エラーチェックをしなければエラーであってもそのまま処理が続行されるなどの問題があり、 VBではそれが改良されて実行時エラーが発生する方式になっている。 C++、C#、VB.NETなどではtry-catchを使用する。これはさらに改良されており、 エラー情報がエラー番号、エラーメッセージだけでなく、任意のオブジェクトになっている。
>>680 > C++、C#、VB.NETなどでは
Delphiは無視でつか?
「など」と書いてあるだろ。いちいち出てこなくていいよ。
683 :
デフォルトの名無しさん :03/05/30 17:30
684 :
デフォルトの名無しさん :03/05/30 17:32
エラートラップでもいいが、674はFileSystemObjectとかでなんとかならん かったっけ。
> On Error 禁止で挑むのが匠 タダの馬鹿だと思うぞ。 C++等で言えばtry禁止か?
>>684 VB(VBS)のライブラリを使っている限り、エラーは実行時エラーになります。
APIを使えば旧式の「戻り値でチェック」が使えます。
それだけのためにわざわざ面倒なことをする必要はないけど。
687 :
デフォルトの名無しさん :03/05/30 17:36
>>677-680 さん
>>674 = 676です
Err.Number 55 で出来そうです。エラー番号があるのを知りませんでした。
どうもありがとうございましたm(__)m
>>688 Err.Descriptionでエラーメッセージが分かるぞ。
ユーザーフレンドリーなエラーとしては使えんが、デバッグ用ならOK。
あと、Err.Raiseで好きなエラーを作成・発生させられる。
これも一緒に覚えておこう。
>>689 さん
ありがとうございます
MSDN見て勉強してみますm(__)m
691 :
デフォルトの名無しさん :03/05/30 18:46
InetでTXTファイルをUNIXのFTPサーバにPUTしようとしているのですが、 自分のローカルでS-JISからEUCに変換して PUTしても、行の最後に^Mがついてしまいます。 これは、どうやったら消せるでしょうか? 初心者質問で申し訳ありません。
692 :
デフォルトの名無しさん :03/05/30 19:34
>>691 改行コードだろ、多分。WindowsはCR+LFだから、CRを消してLFだけにする。
693 :
デフォルトの名無しさん :03/05/30 22:03
DataComboについて質問させていただきます。 DataComboのドロップダウンリストの横幅を変更したいのですが 下記のソースの様にAPIのSendMessageを使用しても、変更する事 が出来ません。 通常のComboBoxは上記のAPIを使用して変更できるのですが、DataComboは 無理なのでしょうか? それとも別の方法で変更することが可能なのでしょうか? ご存知の方がいましたら、教えてください。 環境 VisualBasic6.0(SP5) Microsoft DataList Controls6.0(SP)(OLEDB) *****標準モジュール**************************************************** 'API宣言 Declare Function SendMessage Lib "USER32" Alias "SendMessageA" _ (ByVal hWnd&, ByVal wMsg&, _ ByVal wParam&, ByVal lParam&) As Long '定数 Public Const CB_SETDROPPEDWIDTH = &H160 *****フォームモジュール************************************************* Private Sub Form_Load() Call SendMessage(Combo1.hWnd, CB_SETDROPPEDWIDTH, 500, 0) Call SendMessage(DataCombo1.hWnd, CB_SETDROPPEDWIDTH, 500, 0) End Sub
>>685 不用意に適用するのは駄目だろ。
保守性は下がるしエラー原因の特定が困難になる。
ちゃんとログを残しながらトラップしてれば良いけど・・・
695 :
デフォルトの名無しさん :03/05/30 23:47
USBで繋げた複数のHDを自動的にフォーマットを行ったり、 ボリュームラベルを変更したりするようなソフトは作ること可能ですか?
697 :
デフォルトの名無しさん :03/05/31 00:12
>>696 5つぐらい繋げたHDのパーティションを分けることも可能ですか?
楽勝
699 :
デフォルトの名無しさん :03/05/31 00:32
>>698 なるへそ。
ありがと〜。作ってみます。
>>695 Shell "format ドライブ"
SetVolumeLabel()
>>697 かなり難しいと思う。DeviceIoControl で IOCTL_DISK_SET_DRIVE_LAYOUT で
できそうではあるけどね。
にゃん
VB糞だな
704 :
デフォルトの名無しさん :03/05/31 14:54
,
705 :
karen :03/05/31 17:28
VB6.0で画像のヒストグラフ書きたいんですけど よくわかりません。 とる込むところまではできているんですけど この後、どうすればいいのですか?
706 :
デフォルトの名無しさん :03/05/31 17:35
取り込むってなんだよ、プログラミング用語でいってくれ。
>>705 とる込むって何を?
まぁPictureBoxでLineやPsetメソッドなんかを使って描画して
SavePictureでbmpで出力。
708 :
デフォルトの名無しさん :03/05/31 20:34
激初心者なのですが、 誰か暇で心麗しいシトがいたら宿題教えてください。 おながい致します。 *フィボナッチ数列を任意の項数まで求める事のできるプログラムを <For~Next文>を使って作る。 求める項数はテキストボックスを使って入力する。
710 :
デフォルトの名無しさん :03/05/31 20:54
711 :
デフォルトの名無しさん :03/05/31 23:55
>>700 ありがとー
ボリュームラベルの変更は出来たよ!
でもやっぱ、パーティションの変更はよく分からん( ´・ω・)
今回はフォーマットとラベル変更で勘弁してやら−ヽ(`Д´)ノ
標準EXEのプロセスの優先度をAPIで下げた場合、そのプログラムから 呼び出されるACTIVEX.EXEの優先度はどうなるのでしょうか? くだらない質問ですいません。
713 :
デフォルトの名無しさん :03/06/01 03:42
VBのメッセージ出力のような、表示したいメッセージの番号を組み合わせて (1,2,4で、1,2のメッセージを表示したい時は3というような) 作るパターンの関数を作りたいのですが、これで良いのでしょうか? Function test(int_ChkNo) arr_Data = Array(1,2,4) For i=UBOUND(arr_Data) to 0 Step -1 If(int_ChkNo >= arr_Data(i)) Then Select Case arr_Data(i) Case "1" Case "2" Case "4" End Select int_ChkNo = int_ChkNo - arr_Data(i) End If Next End Function
>>714 簡単で結構ですので詳しくお願いしまする
「簡単で結構」≠「詳しくお願い」
ワロタ
さげろ .NETスレほど注目されてねーんだよ 勘違いやろーども こぴぺ推奨
719 :
デフォルトの名無しさん :03/06/01 05:03
>>715 const MSG_A = 1
const MSG_B = 2
const MSG_C = 4
という形で宣言しておき、
If value and MSG_A Then
End If
If value and MSG_B Then
End If
If value and MSG_C Then
End If
という形で使う。
720 :
デフォルトの名無しさん :03/06/01 05:05
>>719 続き
ビット演算は基本的テクニックだから、覚えておいたほうがいいぞ。
10進の1 が 2進の0001
10進の2 が 2進の0010
10進の4 が 2進の0100
10進の3(1+2)だと、0011になり、0001、0010のどっちでもヒットする、ってわけだ。
わかりづらかったら、電卓で変換しながら試してみるといい。
721 :
デフォルトの名無しさん :03/06/01 07:11
VisualBasic6.0ってXPでも動きまスカ?
724 :
デフォルトの名無しさん :03/06/01 07:48
>>723 レスありがとうございます。
問題とは具体的にはどういったものでしょうか?
msのnewsgroupの過去ログに詳しい情報があった。 開発環境が固まるとか、Formatでの丸めが違うとか、等幅フォントの扱いが 違うとか、そんな感じ。
726 :
デフォルトの名無しさん :03/06/01 07:56
>>725 調べてみます。本当にありがとうございました。
Enterキーを入力すると編集モードになるコントロールがある場合 プログラムで編集モードに入る方法を教えて頂けませんか? 厨房な質問ですいません
>>727 たとえばどんなコントロール? 普通、なんらかのインターフェイス(メソッドとか
プロパティね)を用意してると思うんだけど。
そういうのがないなら、keybd_event()とかで、Enterを送っちゃうとか。
>>728 スプレッドシートみたいなものです。
メソッドやプロパティにもないようなので困っています。
>そういうのがないなら、keybd_event()とかで、Enterを送っちゃうとか。
ありがとうございます。試して見ます。
>>729 だから、どのコントロールか書けっての。
もしかしたら、すごく詳しい人がいるかもしれねーべ。
それが他の人が作ったコントロールなんです(^^;
>>719-720 レスありがとうございます。
僕の作ったやつは必ず値の大きい方から表示されていたのですが、
それも一気に解決できました!
助かったです。
勉強になりました。
詳しいお答えありがとうございましたm(_ _)m
734 :
デフォルトの名無しさん :03/06/01 13:59
時々意味不明に悩まされています。 例えばステータスバーのちょい上にCommandボタンを置いて実行すると、 時々ボタンがステータスバーに半分以上隠れちゃうのです。なぜなんでしょうか またどうすればいいのでしょうか。 それと、テキストボックスでエンターキーを押すと次のテキストにフォーカス を移ろうとしても、なぜかコマンドボタンが実行されてしまいます。よく わからないのですがこれは仕様なんでしょうか?ボタンのコントロールを作っ て使えば大丈夫くさいんですけど。原因が知りたいと思います。
ニポンゴ シャベッテ クダサーイ
>>731 ユーザーコントロールでいじくれるなら自分で改造すれば?
>>734 シ ツ モ ン ノ イ ミ ガ カ イ ド ク デ キ マ セ ン
C:\>□
>>728 keybd_eventでクリアできました。
ありがとうございました。
>>734 マウスでプログラミングすることなんかにたよってるからそうなるんだよ。
741 :
デフォルトの名無しさん :03/06/02 05:03
ボタンを押したら画面が切り替わるのは どうやったらいいのですか? 例えば、最初に名前入力させて 実行ボタンを押すと問題がでるみたいに したいんですけど…
>>734 ステータスバーはコンテナではないので、その上にコントロールは置けない。
なので、コントロールの上下関係に気をつける必要がある。
Enterでボタンが実行される件は、デフォルトボタンになっていないか確認すれ
>>741 フォームをShowすれ
なんでVBにはSenderないんだYO! わざわざクラスで作るかYO! この糞プログラムめ! Delphiマンセー スマソ、自分に知識のない香具師の愚痴ですた。
745 :
デフォルトの名無しさん :03/06/02 11:12
>>743 VBとスクリプトぐらいしか知らん者ですが、Senderってなんですか?
Sender偉い!Sender偉い!
749 :
デフォルトの名無しさん :03/06/02 11:55
GP-IB通信ついて、おすすめサイトを教えてくれ
naha naha naha!!!!
>>749 GP-IBボード/カードのサイトがいいよ。
Senderオブジェクトが好きなDel厨よ、 ならば次から作るVBプログラムは全部コントロール配列にしる。
Senderオブジェクトって何?
754 :
デフォルトの名無しさん :03/06/02 15:33
結局ここには説明できるまともなDel使いはこないのか、、
>>753 イベントプロシージャを呼び出したコントロール。ボタンのクリックイベントなら、
クリックされたボタンが入ってる。
VB.NETでは、Delphiと同様にSenderが利用できる。
前と同じような事を書き込んでしまうのですが、アウトプロセスの ACTIVEX.exeの優先度を下げるにはどうすればよいのでしょうか?
だれか教えてくらはい〜
>>693 やはり普通のコンボボックスではないと駄目なのでしょうか?
pointメソッドでPicture1の色情報を得て次に何をしているのかが わかりません。 HFFってのは色を表しているのだと思うんですが、、、 どなたか教えてください。 For j = 0 To 199 For i = 0 To 199 k = Picture1.Point(i, j) And &HFF hist(k) = hist(k) + 1 Next Next
>>757 やって駄目なら無理でしょ。
>>758 色は表してない。いわゆる、「アンドを取る」ってやつだね。
ビット演算について学ぶとよし。
まともなVB厨がんばってるか? ときどき糞スレたてるVB厨を矯正してくれよ
761 :
デフォルトの名無しさん :03/06/03 15:33
VBの質問じゃないかもしれないですが MDBファイルをADOで触ってます ACCESSでいう「テーブルのレイアウト」というのを、VBから設定することは出来ますでしょうか?
>>758 赤の輝度を取得している。
AND &HFF00 で緑
AND &HFF0000 で青
(´-`).。oO(VB知らんけど、&H000000FFって書かなくていいんだ・・・)
765 :
デフォルトの名無しさん :03/06/03 21:33
picture1とpicture2の画像を重ね合わせて表示する方法ってありますか?
>>765 ありますが、どんな結果が望み?
透明色とかアリ?
767 :
デフォルトの名無しさん :03/06/03 21:48
>766 もちろんありです。
>>767 方法を言い出せばうんざりするほどある
VB標準の機能で自力で描画、TransparentBlt、DIB、DirectXまで。
てきとーにやりたいならTransparentBltをお勧めする。
IE5以降が入ってないと使えない上にリソースリークするらしいがな。
769 :
デフォルトの名無しさん :03/06/03 22:25
テキストボックスの途中に文字列を挿入ってできますか? [abcghi]→[abcdefghi]みたいな感じに cとgの間クリックしたらそこにクリップボードから貼り付けみたいな
771 :
デフォルトの名無しさん :03/06/03 22:30
765です。 いろいろありがとうございます。 もう少しがんばってみます。
772 :
デフォルトの名無しさん :03/06/03 22:51
例えばテキストボックスでform1で入力させた文を form2に持ってく方法ありますか?
form1.text1.text1とか頭にフォーム名つける
>>769 クリックイベントに
Text1.SelText = "ほげほげ"
みたいなイメージ?
勝手に補足。対象のインスタンス名がform2の場合は、form2でいいが インスタンス名が別ならそのインスタンス名をつけること。 例 Dim form2instance As Form2 Set form2instance = New Form2 なんてコードならform2instance.text1.textという風になる。
777
778 :
デフォルトの名無しさん :03/06/04 00:08
>>774 ほんとありがとうございます。
初心者でとりあえず、某書のビギナー編を買ったんですが載ってなくて…
ググっても見たんですけど、vbのいいHPがなかなか見つからなくて苦労してました。
779 :
デフォルトの名無しさん :03/06/04 00:17
すいません、vb使ってるとよく馬鹿にされるので他の言語に移行したいのですが、 無理ですか?
>>779 2ch以外で馬鹿にされることはないだろ
>>780 プロなら職場でも思いっきり馬鹿にされるだろ
783 :
デフォルトの名無しさん :03/06/04 00:25
すいません、2chができる前から良く馬鹿にされていました。 VC++などにも挑戦したのですが、挫折したので何かもうちょっと 簡単なものないですか?
馬鹿にされる要素に気づけ
>>783 C++Builderは結構いいと思うよ
Javaもいいね
http://www.geocities.co.jp/SiliconValley/5944/bookback/bbv15.htm プログラミング関係
> [Q] たか子さん
> 今度はSQLが走る部分で、
> 実行時エラー”3706”プロバイダが見つかりません
> というエラーが出てしまいます
> SQLの部分はMicrosoft.Jet.OLEDB.3.51;を
> 使っています
> どうもADOのエラーらしいのですが
> [A] アルシャーネさん
> 憶測で書くならば最初のVB5.0の端末へのインストール時のエラーは
> 上位バージョンから下位バージョンへのインストールの為にうまくインス
> トールされなかったことが考えられます。
> 次のVBが入ってないほうの端末の場合では、
> プロバイダが見つからないということなのでインターネットへのアクセスに
> 失敗していると思われます。それでは、ダ フストリェーチャ
>
> PS:ADOではなくDAOの間違いでは?(苦笑)
787 :
デフォルトの名無しさん :03/06/04 09:10
>>778 vbの本でいいのはなかなかない。vbの構造上解説しにくいのかもしれない。
789 :
動画直リン :03/06/04 09:13
>>783 馬鹿にするのは馬鹿だから。大抵無知な学生が理由もなしに言っているだけだから気にするな。
たしかに出来ないことはあるがそれは馬鹿にすべき要素じゃなく適材適所ってだけの問題。
プロの世界じゃ普通に使われる。
(入社時期なんかなまじ知識つけた奴がVBを馬鹿にして恥を書く姿がちょこちょこ見られる(w)
もちろん他の言語「も」使えるのは当然なんで他の言語を勉強するは当然いい。
ただ、VC++でウインドウをもったアプリを作ろうとすると、C++とともに複雑なMFCを理解しなければ
ならないので挫折しやすい。コンソールアプリからちまちまとやるか、GUI作成がVBと同じ
RAD系の言語、C++BuilderやJavaやMS製ならC#なんかがいいだろう。
(VB.NETもオブジェクト指向なんでいいんだが、名前で馬鹿にする程度の奴には理解不能なんで
やっぱり馬鹿にするかもしれない。馬鹿は放置すればいいだけなんだが。)
>>787 こんな本いいと思うよ。構造上解説しにくいなんて勘違いが直るかもね。
Visual Basicによるビジネスアプリケーション開発
- オブジェクト指向設計で作る3層C/Sアプリケーション -
http://www.rational.co.jp/products/books/bk_19.html あとVBを作ったのはマイクロソフトなんでマイクロソフトの本もなかなかいいと思う。
ただ俺は買っていなくて本屋で立ち読みする程度なので具体的に進めることが出来ない。
MSDNライブラリ(ヘルプ)で十分だしね。本じゃないけど。
ただどの言語にも当てはまるけど初心者むきでいい本ってのは少ないな。
VBは良くも悪くも「作るための言語」なんで勉強には向かないかも。
プログミングで必要なことってのはどの言語でも通用するから
違う言語の本でも読んでみるのもいい。
791 :
デフォルトの名無しさん :03/06/04 10:35
793 :
デフォルトの名無しさん :03/06/04 10:46
>>778 Codegruやplanet-source-code.comなんかで他人のソースみてみるのもいいかも
794 :
デフォルトの名無しさん :03/06/04 10:57
VB5でInetコントロールを使用したあと、1分ほどフリーズするんですが、 なにが原因ですか? Inet1.Cancelもやりましたがダメでした。
スイマセン vbでGetSettingっていう特定のレジストリキーを操作する関数があるんですが あれって 制限とかあります? 例えばDWORDの値だとエラーが発生するんです。 今 VCで同じレジストリを流用してるんだけど VB側でエラーになってます
あげさせてください すいません
vbってリジストリいじれるのはあそこだけじゃなかったっけ?
>>797 はい ヘルプをみてるとそのようです
ただその使用出来る値の型もREG_SZのみっていうとさすがに
辛い感じです
799 :
動画直リン :03/06/04 13:13
>795 そのDWORDって値をVB側では何の型で宣言してんの?
>>800 型をinteger にしていたので エラーになってたみたいです
variantに変更したら解決されました ありがとうございます
とおもったんですが やっぱり駄目みたいです
DWORDはVBで言うLong
long も ダブルもチャレンジしてみましたが プロシージャの呼出が不正ですのエラーがでちゃいます
うむ。APIでやってみたらできた。あたりまえか。
そうします。ありがとうございました。
Debug.printは書き残したまま本番用exeファイルをつくってしまってかまわないのでしょうか?
かまわないけどその分パフォーマンスが落ちるかも知れない。
ちょっと質問なんですが、WinsockコントロールでTCPでは普通に送れていた データがプロトコルをUDPにしたら、「データグラムはバッファより大きい ため切り詰められます」と出るようになってしまいました。内容はそのままんま なのかもしれませんが、これを解決するにはやはり小出しにして送るしか ないのでしょうか?やはりこれがプロトコルの違いなんですか?
>>811 ただ小出しにするだけじゃだめだよ。
届く順番も送った順番で届くとは限らないし
同じデータが2回届くかもしれない。
そういう制御をやってくれてるのがTCPだから。
UDPにするならその辺も考えないとね。
まあ、そんなの気にしなくていいデータならいいけど。
813 :
デフォルトの名無しさん :03/06/05 10:39
>>809 ん? Debugってコンパイル時に除かれるんじゃないの?パフォーマンスは
落ちないと思うが
815 :
デフォルトの名無しさん :03/06/05 11:49
Win98以降とVB5で使えるFAX送信OCXを探しています STARFAXが有名ですがこれはVBで作ったFAXアプリを使う PC全てにSTARFAXをインストールしないといけないのですよね そうではなくVBアプリと一緒に配布可能なやつが欲しいのですが NetMan for FAX以外で何かありますか?
816 :
デフォルトの名無しさん :03/06/05 11:49
>>814 VB6のドキュメント(プログラミングガイド p.602)によると
アプリケーションをコンパイルして実行可能ファイル(.EXE)を作成すると、
Debug.Print ステートメントは自動的に削除されます。 ... ただ
し、Debug.Print の引数に関数呼び出しを使っていると、そのDebug.Printは自動
的には削除されません。 ...
ってことだ。たぶんオブジェクトのメソッドやプロパティーも削除されない。
>VB6の ... VB4.0のドキュメントだった
>>813 VBにそんな最適化機能はない。
もっとも、落ちるパフォーマンスなんて大した事無いし、
Debug.Printを取り除いた事による生産性の低下の方が怖い。
819 :
デフォルトの名無しさん :03/06/05 13:05
もともとのパフォーマンスがたいしたことない と言ってみる
>>819 で、元々のパフォーマンスの低さが、Debug文を利用した場合とそうじゃない場合の
差異にどのような関係があるのか?とマジレスしてみる。
821 :
デフォルトの名無しさん :03/06/05 13:10
Debug.Print を除くことは最適化とはいわないが
822 :
動画直リン :03/06/05 13:13
条件付コンパイルも知らないヴァカどもが集う糞スレはここでつか?
824 :
デフォルトの名無しさん :03/06/05 13:33
条件付コンパイルとDebug.Printは違うんだが
>>824 消さずに条件付コンパイルで無効化汁と言ってるんだが。
行間が読めないヴァカは死んでくれ。
>>821 確かに、除くことが確実に良いわけじゃないしな。
Debug.Printに副作用を持つ関数が含まれている。
たとえば、関数にフォームのCaptionを変える命令が含まれている場合。
Debug.Printを行うのと行わないのでは処理が違ってしまう。
こっちの方がパフォーマンスの問題なんてちっぽけだと思ってしまうほど重要。
最適化ってのは処理は変わらないから勝手に書き換えたりするわけだが、
Debug.Printのように処理が変わって勝手に取り除くのがまずい場合は、
取り除くかどうかは仕様によるとしかやりようがないだろう。
ちなみにDebug.Assertの方はコンパイルすると消えるという仕様だね。
で、コンパイルすると消えるようにしたい場合は条件付コンパイルを使うわけだ。
デバッグなんてしないにこしたことはない
828 :
デフォルトの名無しさん :03/06/05 13:48
>>826 Debug.Print があるかないかでプロパティーが変わるっていうのは Debug.Print
の使い方としておかしくないか?
>>818 落ちるパフォーマンスは場合によるよ。この例だと取り除かれない場合、一分も遅くなる。
Debug.Print foo()
Function foo()
'データベースとかに接続して'大量のデータ読んで
'値を得るのに1分かかる代わりにスリープ
Sleep(60000)
foo="ok"
End Function
830 :
デフォルトの名無しさん :03/06/05 13:50
>>825 816にあるとおり、変数の出力だけならDebug.Printはコンパイラが勝手に無視し
てくれる。それをわざわざ #If hogehoge Then なんてするのは馬鹿らしい。
プロパティの出力は消してくれない。 だから、Fields("NAME").Valueとかも消されない。 勘違いするなよ。
832 :
デフォルトの名無しさん :03/06/05 13:56
833 :
デフォルトの名無しさん :03/06/05 14:02
何げにつかってたDebug.Printだけど、うまく使うには奥が深いな
引数もデバッグプリントだとたぶん自動削除されないうえに無限ループになるかもしれない。 Debug.Print (Debug.Print)
835 :
デフォルトの名無しさん :03/06/05 15:34
コマンドボタンを押すと画像が500msecだけ 出したいんですけど、Timerとかやっても うまくいかず、秒間隔ならできるんですけど… うまい方法はですか?
837 :
デフォルトの名無しさん :03/06/05 15:45
838 :
デフォルトの名無しさん :03/06/05 15:55
ADOでAccess97形式のMDBはSeek出来ないものなのでしょうか?
>>834 なんでやねん!
Debug.Printは戻り値を返さない上にたとえ返したとしても(略
それよりか、イミディエイトウインドウで、do:loopと書いてエンターを押すと・・・。
840 :
デフォルトの名無しさん :03/06/05 17:39
>>838 本によるとRecordsetのOpenメソッドの第4引数で adCmdTableDirect をつかうと
できるとある。
rs.Open "TableName", cn, adLockPessimistic, adCmdTableDirect
rs.Index = "PrimaryKey"
rs.Seek 12, adSeekFirstEQ
この方法はJet以外には使えないので、移植性を考えると使わないほうが
いいらしい。
初心者むけのVBのサイトってないですか? 検索してもパソコンスクールの宣伝だったり閉鎖中だったりでなかなか見つからなくて。
845 :
デフォルトの名無しさん :03/06/05 19:50
テキストボックスにスクロールバーがついたやつで そこに入力されてる文字の最後尾までスクロールさせてくる みたいな方法ありますか?
846 :
デフォルトの名無しさん :03/06/05 19:51
>>845 Text1.SelStart = Len(Text1.Text)
>>845 Text1.SetFocus
SendKeys "^{END}"
852 :
デフォルトの名無しさん :03/06/05 21:25
3桁の数字を001、002みたくレコードに連続で番号をふっていくようなこと できる?
853 :
デフォルトの名無しさん :03/06/05 21:34
フォーム Load Timer1.Enabled = False Timer1.Interval = 500 コマンドボタン Click Picture1.Visible = True Timer1.Enabled = True タイマー Timer Picture1.Visible = Flase Timer1.Enabled = Flase
part24のスレでもありましたが、 ダブルクオーテーションの"をテキストボックスに表示したいです。 どうやったら"を表示できるでしょうか? "" や """ や " としてみても、うまくいかないです。
857 :
デフォルトの名無しさん :03/06/05 23:11
>>755 というか、
Java作ったのがDelphiつくってC#つくったんだろ?
859 :
デフォルトの名無しさん :03/06/05 23:17
860 :
デフォルトの名無しさん :03/06/05 23:27
>859 できました。ありがとうございます。
861 :
デフォルトの名無しさん :03/06/05 23:33
>>812 具体的に小出しにするにはどうすればいいのでしょうか?バイト型で宣言
した変数にデータを代入しても、それをどうやって分割して送ればよいか
わかりません。よろしければ他のどなたかでもいいので教えてやってく
ださい。
864 :
デフォルトの名無しさん :03/06/06 01:02
>>852 意味が分からん。00を頭につけたいのか?そうだとしたら
コードを書く方が「圧倒的に」良いが、Format$(var, "000") でもできる。
Format$は癖があるので勧めない。
>>863 それもそうなのですが、いろいろ事情があって、2つのプロトコルを用いた
結果を比較したいのです。面倒でしょうが教えてください。
>>865 分割して、ヘッダ(ユーザー定義のね)にシーケンシャル番号を振っておき、
取得した側で組み立てればいいんでないの。
867 :
デフォルトの名無しさん :03/06/06 08:57
>>790 話を蒸し返すようでスマンが、vbが馬鹿にされるのには理由がある。
本当はvbというか、vbしか使えないヤツの事なんだけど。
と、いうか馬鹿にしたくなるよね。VBオンリーPGのソース見てみればな。
前どっかのスレでも話題になったけど、論理演算さえも知らないヤツが何人もいたし・・・
それに、フリーソフトとか見てもVB製の優秀なソフトを見た事がない
868 :
デフォルトの名無しさん :03/06/06 09:05
>>865 素人にUDPは使いこなせない。
そもそもTCPもあやしいな。あんたの場合。
870 :
動画直リン :03/06/06 09:13
┌───────────────────
│あ、どうもスイマセン、お騒がせしますた・・・
└───v───────────────
/⌒\ っ /\
/'⌒'ヽ \ っ/\ |
(●.●) )/ |: | すぐ連れて逝きますんで・・・
>冊/ ./ |: /
/⌒ ミミ \ 〆
/ / |::|λ| |
|√7ミ |::| ト、 |
|:/ V_ハ |
/| i | ∧|∧
и .i N /⌒ ヽ) ←
>>867 λヘ、| i .NV | | |
V\W ( 、 ∪
|| |
∪∪
wavファイルを録音、波形表示したいのですが 情報を下さい。 現在やりたいのはマイクを使っての音声録音です。 mci〜を使えば録音自体は出来るようなのですが 波形の表示もしたいのです。
>>875 情報ありがとうございます。
良さそうなので早速買ってみます。
877 :
動画直リン :03/06/06 13:13
878 :
デフォルトの名無しさん :03/06/06 14:48
Win32 DLL の 〜A と 〜W ANSI と UNICODE だそうだが 結局どう使い分けんの? 〜A しか使ってないんだけど
>>878 API呼び出しの際に、自動的にANSI変換がかかるから、A の方だけでおっけー。
どうしても W が使いたければ、バイト配列でどーぞー。
>>879 ありがと
これで安心して 〜A を使えるよ
>>866 もう少し具体的に方法を教えていただけないでしょうか?無理でしたら
そういった事を扱っているサイトでもいいです。お手数ですがよろしくおね
がいします。
>>869 そうかもしれませんが、あなたにそんな事を言われる筋合いはありません。
>>881 何故そこまでしてUDPにしたいのですか?
UDPの特徴はわかってるでしょうから、不具合ないように使えばいいだけですのに。
883 :
デフォルトの名無しさん :03/06/06 23:33
PictureBoxのフォントの色を指定するにはどうすればいいですか?
884 :
デフォルトの名無しさん :03/06/06 23:47
ソースをコーディングしたパソコンから違うパソコンに移して 起動したところ、コンボボックスのコントロールに埋め込んだリストが 読み込めなくてエラーになりました。 何でなんでしょうか? 環境は両方ともXP+VB6(SP5)です
885 :
デフォルトの名無しさん :03/06/07 00:03
「文全体の終端」を示す記号はありませんでしょうか? 「行の終端」はCHr(&HD)があるというのに・・・。 EOFかなとも思うのですが、少し違うような気がします。 どなたか教えて下さい。
>884 移し方が悪い。ソースディレクトリごっそり移せば動くはず。
888 :
デフォルトの名無しさん :03/06/07 09:52
ファイルを移動する関数っていうのはないんでしょうか? 今はFileCopyした後にKillしてるんですが、でかいファイルだと時間がかかります
>>888 APIにSHFileOperationがあります。
CやDelphiならそれ以上の速度のルーチン作れるのにプププ
>>888 Scripting.FileSystemObject を使うのが簡単。
あと dos command で move を呼び出すのもありかな。
>>888 MoveFileってその名もずばりのAPIがあった
>>889 結局API呼び出すだけなんだから、速度は同じでは?
もしかしてAPI知らなかった?
894 :
デフォルトの名無しさん :03/06/07 12:48
リンクをたどって画像収集するプログラムを作ろうと思っていますが、 どこかに参考になるいいサンプルのソースはないでしょうか?
>>893 メモリを多く使えば高速にコピーできるけどそういう事じゃないの?
コピーじゃなく移動だろ。ファイル管理情報を書き換えることになる 移動ならなんの処理使おうが速度に大差ないと思うな。 (ディスクが異なればコピーと変わらないことは解ってるよな?)
>>897 違うでしょ。SHFileOperation以上のルーチン作るなんて言っているから
MoveFileを知らなかったと思われ。
>>888 Name ステートメントじゃダメ?
バグってて使えないとか。
901 :
デフォルトの名無しさん :03/06/07 16:59
FTPで長時間ダウンロードしたいのですが、 ほかの処理をストップさせずにバックグラウンドで走るAPIなどの方法はありますか?
>>901 FTP関連のAPIの引数にコールバックがあるだろ?
あれ使って非同期で実行すればいいよ。
>>901 InetコントロールやWinSockコントロールでも可
904 :
デフォルトの名無しさん :03/06/07 17:28
メールを送るにはどうすればよいでしょうか?
>>904 基本はhttpを使ってサーバーに接続して、決まった文字列を送信するだけ。
サーバに接続するのはwinsock等でやる。
決まった文字列はRFC等を調べる。
もっと簡単に済ませたいならそういうコントロールがあるはず。
ごめん。httpじゃなくてsmtp
EnterキーのKeyAsciiはどんな整数値でしょうか?
>>908 そのくらいトレースして追いましょうよ。
13
>>909-911 ありがとうございます。
Text1のKeyPressイベントでKeyAsciiが13のときはText2にSetFocusしてみます。
dbgrid にソート機能をつけたいんだけど どうすればいいのでしょう? コードを書くところがわからないのですが
914 :
デフォルトの名無しさん :03/06/08 08:43
>>913 接続したテーブルをソートするだけでは?
>914 ソートはできたんですけど、、 dbgridのフィールド名のところにボタンをつけたいんですが、
916 :
デフォルトの名無しさん :03/06/08 14:04
VB4.0です。 プリンターで印字するとき、プログラム中に Printer.FontSize = 30 と書いたのですが、いうことを聞くときと聞かないときが あります。おなじコマンドの中に数カ所書き込んでも、ある 場所は30ポイントになっているのに、他の場所は小さな 文字しか印字されません。これはいったいどうしたことな のでしょうか。
VB6ラーニングエディションは、ピクチャークリップがついていないために、 一つの画像をいくつかに分割するのが出来ないですよね。 MCI32.OCXを強制認識させるか、ピクチャークリップを使わないで分別させる 方法を、誰か詳しい人教えてください。よろしくお願いします。
ピクチャークリップを使わないで分別させる →ピクチャークリップを使わないで分割させる です。
>>917 PictureBoxを分割する数作っておいてバラバラにしておくとか
関数でもつくって呼び出されたときに範囲を計算して絵を返すとか。。。
920 :
デフォルトの名無しさん :03/06/08 19:52
>PictureBoxを分割する数作っておいてバラバラにしておくとか バラバラにする方法を教えてください。 お願いします。
>>920 PaintPictureのヘルプを見てわからなかったらまた書き込んでみてください
922 :
デフォルトの名無しさん :03/06/08 20:16
配列(サイズ不定)を返す関数の定義を (1) Public|Private Function Hoge() As Type() と書くのと、 (2) Public|Private Function Hoge(ByRef vntArray As Variant) [As RetVal] 'VariantのByRef引数に配列を割り当てて返す。 と書くのと、どちらが正統(正しい作法)ですか? どちらも動作には問題ないようですが、(1)の形式のコードは見たことがないので、 邪道なのか気になります。
Picture1.PaintPicture Picture1.Picture, 0, 0, 200, 500, 0, 0 = Image1(0).Picture で無事に表示されたんですが、 x1, y1 width1 height1 x2, y2 width2 height2 について分かりやすく説明していただけないでしょうか? 申し訳ありません。
925 :
デフォルトの名無しさん :03/06/08 22:53
Set objArguments = WScript.Arguments strRet = InputBox("題名","新規ファイルの作成","無題") に、「/\:*?"<>|」は入力できないようにしたいのですが、 どのようにしたら良いのでしょうか? 若しくはstrRetの文字列の中の文字のうち「/\:*?"<>|」だけ削除できれば それでも大丈夫です。
>>925 削除するのか? エラーにしたほうがいいと思うんだが。
消すのなら正規表現使って消すのが一番楽かな。
ファイル名として使えないものをはじくわけだから
入力されたファイル名でOpenしてエラーになるのを
捕らえるという手もあるかも。
927 :
デフォルトの名無しさん :03/06/08 22:57
>>925 性器エクスプレッション使うだけだろ?アフォは氏んでね。
928 :
デフォルトの名無しさん :03/06/08 22:58
MS-DOSで --- set /a count=0 set dp=%~dp1 set aaa=%DATE:/=.% set bbb=%~nx2 if exist "%dp%%aaa% - %bbb%.txt" goto sub date /T >> "%dp%%aaa% - %bbb%.txt" goto end :sub set /a count=%count%+1 if exist "%dp%%aaa% - %bbb%(%count%).txt" goto sub date /T >> "%dp%%aaa% - %bbb%(%count%).txt" --- これをVBSに書き直したいのですが、 どなたか翻訳して頂けませんでしょうか?
930 :
デフォルトの名無しさん :03/06/08 23:28
>>925 Dim strRet
a:
strRet = InputBox("題名", "新規ファイルの作成", "無題")
If InStr(strRet, "/") <> 0 Or InStr(strRet, "\") <> 0 Or InStr(strRet, ":") <> 0 Or InStr(strRet, "*") <> 0 Or InStr(strRet, "?") <> 0 _
Or InStr(strRet, """") <> 0 Or InStr(strRet, "/") <> 0 Or InStr(strRet, "<") <> 0 Or InStr(strRet, ">") <> 0 Or InStr(strRet, "|") <> 0 Then
MsgBox "ファイル名やフォルダ名に/\:*?""<>|は使えません。"
GoTo a:
End If
>>811 すいませんが、これを親切な方教えていただけないでしょうか?ちょっと
急いでまして・・・あつかましい御願いですがよろしくおねがいします。
>>931 色々解答を出してる人がいるようですが?
>>930 Likeが早い。IsDisitとかより俺は長宝
If strRet Like "*[/\:*?""<>|]*" Then
935 :
デフォルトの名無しさん :03/06/09 09:52
>>922 おれは(1)を使うときあるよ
tukautokiaruyo
936 :
デフォルトの名無しさん :03/06/09 10:16
>>902 >>903 どうもありがとうございます。
コールバック関数はどのように使えばよいでしょうか?
>>783 VBだけでどんなプログラムも作れるからVBで設計しよう、というと
馬鹿にされるどころか嫌われるよ。とくにエンタープライズ系では。
オブジェクト指向言語でやっているところをアセンブラでやれ、と押し付けられちゃたまらんからね。
関数のアドレスセットして、呼び出されるの待つだけ。
939 :
デフォルトの名無しさん :03/06/09 11:18
すいません、新すれのほうに書き込んでしまいました。 質問内容は以下のとおりです。 ファイル変更をフックしようと思い ReadDirectoryChangesW API を調べているのですが なかなか VB でのサンプルが見つかりません。 もしVBで組んだことある方がいましたら 多少の手解きお願いできませんでしょうか?
>>935 ありがとう。
よく考えたら、(2)の方もVariantにする必然性がないですね。
個別の型指定(String()、Long()等々)で問題なく動作しました。
配列を返すと最初から決まってるなら、Variantにしない方がいいみたい。
Hoge() → Hoge型の配列を受けられる。
Hoge → Hoge型の変数は受けられるがHoge型の配列は受けられない。
Variant → 配列も配列以外のオブジェクトも代入可能。
Variant() → 配列は受けられるが、配列でない変数は受けられない?(未確認)
つうことで、sage
厨な質問ですいません。 datagridオブジェクトは、貼り付けたフォームがロードされたとき、 1行分しか見えてませんよね。それを初期状態だとすると、 いったん何かデータを読み込んだものを、もう一度その状態に 戻すことは出来るのでしょうか?
943 :
デフォルトの名無しさん :03/06/09 14:57
GetMetaFileBitsEx で lpvData に Null 又は 0 を指定しとるのだが データを格納するために必要なバイト数というのが取得できん 予め大きなサイズを割り当てれば関数自体は成功するが後味悪い やり方教えてくれ
945 :
デフォルトの名無しさん :03/06/09 15:28
質問です。
ホームページをアップするのに、
どこかの本を参考に下記のコードでやってますが、非常に遅いです。
いくつものファイルを転送するとかなりの時間がかかります。
FTPソフトで転送するととても早いのですが、
何か技があるのでしょうか?
. With objInet
. .URL = "
ftp://********* "
. .UserName = "******"
. .Password = "******"
.
. .Execute , "CD ********"
. Do While .StillExecuting = True
. DoEvents
. Loop
.
. .Execute , "PUT index.html index.html"
. Do While .StillExecuting = True
. DoEvents
. Loop
. End With
946 :
デフォルトの名無しさん :03/06/09 16:02
DoEvents を全部コメントアウトしてやったらどう?
948 :
デフォルトの名無しさん :03/06/09 16:06
>>946 これでいいんですか?
誤動作しません?
. .Execute , "CD ********"
. Do While .StillExecuting = True
. ' DoEvents 'コメントにする
. Loop
.
. .Execute , "PUT index.html index.html"
. Do While .StillExecuting = True
. ' DoEvents 'コメントにする
. Loop
950!
>>945 ファイルを転送するごとにログインしなおしとかしてない?
>>945 マルチスレッドにして5つくらい一気に平行してUPするようにしたらどうよ?
>>946 あんまり意味ないと思われ。むしろCPU使用率が増えて逆に遅くなる可能性も。
>>948 DoEventsで処理が割り込まれる可能性が無いから、こっちの方が誤動作しにくい。
ただし処理速度にはなんの影響も無いか少し遅くなるかも知れない。
.StillExecutngでグルグル待つやり方(ビジーウェイト)はやめて、StateChangedを
使った方法がいいと思う。プログラムの構造が大きく変わりそうで面倒なら、
せめてDoEventsの前に10ミリ秒ぐらいSleepを置いた方がいい。
でも遅い原因は他にあると思われる。
>>952 FTPサーバーにマルチでログインするつもりか?
955 :
デフォルトの名無しさん :03/06/09 20:55
あまり有効なのはないのでしょうか? FTPソフトだと問題ないのはなぜでしょう?
遅いって転送し始めるまで時間がかかるの?それとも転送速度が遅いの?
958 :
デフォルトの名無しさん :03/06/09 21:27
>>957 はっきり調べてませんが
ひとつひとつの.ExecuteからDoEventsを抜けてくるのが遅いです。
ねむくなるスレだ
>>958 StateChanged方式に変えてみたら?
あっち・・・・あのスレか。
>>962 VB厨がVB厨と言われるゆえん。
Win32システムプログラミングぐらい読めよ。
>>959 あんた、こっちでそんな事言っていると煽りだといわれるぞ。
あっちでいえ。
966 :
デフォルトの名無しさん :03/06/09 21:37
>>960 StateChanged方式を教えてください。
>>964 もういいよ。あっていでやれ。
これ以上ここに書きこするなら荒らしとみなす。
>>966 途中まで出いいからやってから分からないことろを書いてね。
たぶんそれじゃレスつかないと思うけど。
あと無駄な空行いれてあげるのもやめたほうがいいよ。
偽者扱いされるのがオチだから。
971 :
デフォルトの名無しさん :03/06/09 21:40
VB初心者スレを質問スレと勘違いして質問してしまいましたので 再度こちらで質問させて下さい。 ファイル名に今日の日付が入ったファイルを作成したいので、 日付から、例えば2003.06.09という文字列を作って 文字列の変数に入れたいのですが、 どのように書けばよろしいのでしょうか?
>>970 はい。がんばります。すみませんでした。
>>971 Format$(Date(),"yyyy.mm.dd")
976 :
デフォルトの名無しさん :03/06/09 21:45
>>970 StateChanged がなんだかもわかりません。
参考になるサイトを紹介していただければ、勉強してみます。
なんかスレのびていると思ったら粘着煽り厨が出現してるのか。
980 :
デフォルトの名無しさん :03/06/09 21:49
埋めるぞコルァ!
ゴルァゴルァ
モララララララァ
おまんこやりたい