VBプログラマ質問スレ(6.0以前) Part46
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2006/02/03(金) 22:58:330855デフォルトの名無しさん
2006/02/25(土) 22:30:17ああごめん、>>792を読んだもんだからちょっと思い出してみただけです。
アンカー付け忘れ。IDEとexeうんぬんは余談で。
0856デフォルトの名無しさん
2006/02/25(土) 22:41:18Debug.Assertが実行されるかどうかをブール値で返してるの。
あと誰も「API」を「使いたくて」使ってるわけなんかないから、最後の
トリッキーとか言うのは読まなくていい。
0857デフォルトの名無しさん
2006/02/25(土) 23:13:06AllWin32.Ocx を使うとか。
>>856
自分自身の Function 名を引数で渡して ByRef bIsIDE As Boolean で受ける、
なんて、よく思い付くな・・・
確かに、関数名の変数に戻り値を設定出来るけど・・・
ったく、世の中には頭の良い人が一杯だ。
0858デフォルトの名無しさん
2006/02/26(日) 05:53:39ThunderRT6Main の「Thunder(サンダー)」はVBの開発プロジェクトコード名
MSのプログラミングツール製品のイベントには雷のアイコンが使われているけど ココから来てるとの事
VB誕生当時、完全なイベント駆動は画期的だったらしく 現在も「サンダー」が名残っています
まぁ知ってても役に立たないVB豆知識でした
0859デフォルトの名無しさん
2006/02/26(日) 07:59:13一番最初にVBを開発したのはMSじゃぁないんだけど・・・
0860デフォルトの名無しさん
2006/02/26(日) 14:47:40フォルダ監視のプログラムを常駐させています
FindFirstChangeNotificationがタイムアウトを返せば関数を再帰呼び出し、
ファイル変更のシグナルを検知すれば処理を行って、また監視継続させます
日中はそれでうまく動いているのですが、深夜・早朝も使うことがあるため、
パソコンをつけっぱなしで放置しています
次の日の朝確認すると、再帰呼び出しのCallのところで
「スタック領域が不足しています」とエラーが出て、止まってしまいます
スタックを増やすか再帰呼び出しごとに解放できればいいと思うのですが、
方法がわかりません・・・
VBでは無理なんでしょうか?
0861デフォルトの名無しさん
2006/02/26(日) 15:02:21そんな処理になんでリエントリを使う必要があるのよ。
根本的に考え方がおかしい。
0862デフォルトの名無しさん
2006/02/26(日) 15:13:470863デフォルトの名無しさん
2006/02/26(日) 15:16:48わざわざ API なんか使わなくても Dir$ でいいじゃん。
0864デフォルトの名無しさん
2006/02/26(日) 15:18:39今の問題はそこではない
0865860
2006/02/26(日) 15:25:59CPU使用率が常に100%になってしまうので
別の方法はないかと、見つけたのが
こういうやり方だったんです…
どんな考え方をするべきなんでしょうか
0866デフォルトの名無しさん
2006/02/26(日) 15:27:38本当にこれに「再帰呼び出し」を使ってたらただの馬鹿だが、
繰り返し呼び出すくらいの意味に勘違いしてるだけだと思うが。
0867デフォルトの名無しさん
2006/02/26(日) 15:28:11つ Timer
0868デフォルトの名無しさん
2006/02/26(日) 15:31:52つDoEvents
0869デフォルトの名無しさん
2006/02/26(日) 15:35:03DoEvents はスタックオーバーフローの温床になるので
使用は極力控えましょう
0870デフォルトの名無しさん
2006/02/26(日) 15:35:18タイマなんか使えるわけないだろw
次のインターバルで待機関数呼び出すまでの間にイベントが起こったらどうするんだよw
正攻法にCでdll作ってスレッドでやるのがいいんじゃないの?
スレッドでフォルダを監視して、イベントを検出したらフラグを立てる。
VB側ではそのフラグをポーリングすると。
あるいはウィンドウメッセージ送出するとか。
0871デフォルトの名無しさん
2006/02/26(日) 15:35:51しかしVB6では無理だしなー。
まあ、再起呼び出しはアホ過ぎるが
0872デフォルトの名無しさん
2006/02/26(日) 15:37:160873870
2006/02/26(日) 15:41:42スマン、俺が馬鹿だったw
0874860
2006/02/26(日) 15:44:07単純に呼んでませんでした…
今日はこれを入れて常駐させて様子見します
ありがとうございました
>>870-871
Cはやったことないです…
馬鹿ですみませんでした
これで失礼します
0875デフォルトの名無しさん
2006/02/26(日) 15:47:34VB.NETに乗り換えればそのものずばりのコンポーネントがデフォであるぞよ。
0876デフォルトの名無しさん
2006/02/26(日) 15:50:43再起呼び出しをやめないとcloseしても
そのうちスタックオーバーフローは発生するぞ
0877デフォルトの名無しさん
2006/02/26(日) 15:50:440878デフォルトの名無しさん
2006/02/26(日) 15:53:52それは使い方を間違えてるだけ。
0879デフォルトの名無しさん
2006/02/26(日) 15:59:18単に画面が張り付くのを回避できるだけ。
0880デフォルトの名無しさん
2006/02/26(日) 16:04:48別に使うなとは言わん
Gotoだって使い方を間違えなければ、使えないことはない
俺は間違えない!って考えの人なら、もはや言う言葉は無いがな
0881デフォルトの名無しさん
2006/02/26(日) 16:17:270882デフォルトの名無しさん
2006/02/26(日) 16:21:25他の作業で上がった場合、他の操作に影響出るけど。
>>881
通信系とかは、Sleep 使わない方がいいと思う。
0883デフォルトの名無しさん
2006/02/26(日) 17:26:31カナからローマ字のヘボン式に変換するソースありますか?
長音oを含む場合母音を重ねないってとこが上手くいきません・・
上記のソースないっすか?
0884デフォルトの名無しさん
2006/02/26(日) 17:39:310885デフォルトの名無しさん
2006/02/26(日) 17:43:54> DoEvents で CPU 使用率上がっても、別に他の操作に影響ないよね。
あるだろ。他の操作に割り当てられるCPUが減る。
他の操作に使用するCPUが少なければ実害は無いかもしれんが、
他の操作に使用するCPUが多ければ、確実にその操作に影響を与える。
0886デフォルトの名無しさん
2006/02/26(日) 18:04:25その上手くいかないコードを出せば、修正点を指摘してくれる人は居るかもしれないが
このスレに限らず、コード丸投げソースクレクレはこの板では嫌われてる。
結局それらは努力せずに利益だけ得ようっていう甘ちゃんな考え方だし。
「ものすごく努力したんですが上手くいきません」って、その努力の結果(ソースコード)も出さずに
口先だけで語られても全然説得力無いし
0887pp
2006/02/26(日) 18:18:15文字列が改行のみの場合にその文字列自体をなくすには、どうすればよいでしょうか。
Replace関数で”\n”を””にしてみましたけどだめでした。初心者の私に教えてください。
0888デフォルトの名無しさん
2006/02/26(日) 18:48:07vbcrlfをvbnullstringにしないと。
RegExpやBREGEXPのReplace関数なら普通は\r\nでしょ。
まあ、\nでいい場合や\rのみの場合もあるので、
改行コードについては自分で調べて適切なもの使いな。
VBの組込定数でもvbcrとかvblfとかあるからさ。
0889デフォルトの名無しさん
2006/02/26(日) 18:52:49いや感覚としてサ。
他の作業(例えばスーパーπとか)でCPUが100%になると、
他の作業がカクカクするけど、DoEvents を入れたVBの無限ループで
CPUが100%になっても、大してカクカクしないからサ。サ。
ちょっとVB起動して検証してみてくれるカナ?カナ?
>>887
置き換えるのをやめればいいんじゃね?
一行読む→変換→変換後を書き込む、なら、「変換後を書き込む」をしない。
0890デフォルトの名無しさん
2006/02/26(日) 19:07:34DoEventで未処理のWindowメッセージを処理するわけだから
GUIについては「感覚として」重くはならんだろうけど
低プライオリティで動いてるプロセスやCPUの使用率見て動作する省電力機能などに影響は大きいよ。
外注がそんなプログラムをもってきたら即差し戻しだな。
0891デフォルトの名無しさん
2006/02/26(日) 19:11:160892デフォルトの名無しさん
2006/02/26(日) 19:22:03メッセージループのアイドルタイムにCPUバウンドな計算をさせるってテクニックがあったのを思い出した。
0893デフォルトの名無しさん
2006/02/26(日) 19:30:06Line Input だと LFのみは行区切りとは見なしてくれないの?
そうだとすると、vbCR ( chr(10) ) を "" にリプレースではだめかな。
VBでは¥はエスケープ文字としては使えない。
0894デフォルトの名無しさん
2006/02/26(日) 19:35:56カクカクとかそういうアバウトな感覚で答えないでくれないかな。
仮にOS上で優先順位が同じ二つのプロセスしか動いていないとする。
一つはCPU100%使用するアプリ。一つはCPU10%程度ですむアプリ。
OSはこの二つのアプリに50%ずつ割り当てるから、
当然、CPU10%程度ですむアプリは十分なCPUを割り当てられているから
カクカクならない。
これをみただけで結論だしてるでしょ?
一つはCPU100%使用するアプリ。一つはCPU70%必要なアプリ。
こういう場合には、50%しか割り当てられないから、
CPU70%必要なアプリは遅くなるんだよ。
0895デフォルトの名無しさん
2006/02/26(日) 19:37:55成る程、ポン。
0896デフォルトの名無しさん
2006/02/26(日) 19:40:31訂正 vbCR > vbLF
補足すると VBで "\n" にあたるのをCで書くと "\\n" で、つまり見た目どおりの文字列。
0897pp
2006/02/26(日) 19:52:22もともとLineInputには改行コードが含まれてないようなので>>889さんの意見の通りに
書き込みをしない事にして解決しました。みなさん、貴重な意見ありがとうございました
0898デフォルトの名無しさん
2006/02/26(日) 20:25:26>>891
0899デフォルトの名無しさん
2006/02/26(日) 20:40:020900デフォルトの名無しさん
2006/02/26(日) 21:13:09その言語仕様が解説されたサイトを教えて下さい。
0901デフォルトの名無しさん
2006/02/26(日) 21:16:11http://www.1101.com/MOTHER3/
0902デフォルトの名無しさん
2006/02/26(日) 22:02:25P-CODE?
VB5以降は、とりあえずオブジェクトファイル作られて(そして普通は消される)けど、最終的にはネイティブ
0903デフォルトの名無しさん
2006/02/26(日) 22:08:30コンパイルでPコード選んでも?
0904デフォルトの名無しさん
2006/02/26(日) 22:35:11あんまり使わないからよーわからん
0905デフォルトの名無しさん
2006/02/27(月) 11:14:16getElementByIdかgetElementsByNameで取得して代入。
0906デフォルトの名無しさん
2006/02/27(月) 21:30:47ネットワークカードは別セグメントで
1枚目:192.168.10.1 → VBから使用している側
2枚目:192.168.20.1 → ルーターを介して別ネットワークへ
といった感じになっています。
この場合、Winsockに「192.168.10.1」側のLANカードを使用する、といった設定は
必要になるのでしょうか?
というのも通信が不安定で頻繁に接続が切断されているんです…orz
試しにルーター側のネットワークケーブルを引っこ抜いてみると
通信は安定します。
ルーターの設定が原因かもしれませんのでスレ違いかもしれませんが、
わかる方いらっしゃいましたら教えてくださいm(_ _)m
0907デフォルトの名無しさん
2006/02/27(月) 22:43:30IPアドレスとポート番号の指定だから、それは関係ない様な気がするけど・・・
route コマンドとかは?
0908デフォルトの名無しさん
2006/02/28(火) 00:26:35選択部分とキャレットの位置はそのままにしたいのですが
テキストを右の方から選択してキャレットが選択位置の
左側にある場合はSel***系のプロパティだけで実装できるでしょうか?
0909デフォルトの名無しさん
2006/02/28(火) 01:29:20出来る。
0910デフォルトの名無しさん
2006/02/28(火) 01:39:44うそつき
キャレットの位置は無理
0911デフォルトの名無しさん
2006/02/28(火) 08:22:24まあ相手されないならされないでこういう奴はされるまで居つくだろうけどw
地縛霊みたいなもんか。
0912デフォルトの名無しさん
2006/02/28(火) 11:20:45何がやりたいのかサッパリ理解出来ない・・・
0913デフォルトの名無しさん
2006/02/28(火) 13:18:40を
AB[cd]lE
にして、選択範囲もキャレットも維持したいんだろ。
で、キャレットが選択範囲の左右どちらにあるかで、Sel****で
実現できるかどうか変わると。
0914デフォルトの名無しさん
2006/02/28(火) 13:59:27右から左へ反転選択した場合だって実現出来るんじゃないの?
SelText / Mid$ とか使えば、どっちにキャレットがあるから分かるから、
改めて左から右へ反転選択し直すとかして。
単なる文字列処理なんだし。
0915デフォルトの名無しさん
2006/02/28(火) 14:11:31キャレット位置の取得/設定プロパティはない。
0916デフォルトの名無しさん
2006/02/28(火) 14:42:100917デフォルトの名無しさん
2006/02/28(火) 15:19:37OSは何?98/Meはどうあがいても無理
NT系ならrouteコマンドでちゃんとルーチング設定しろでFA
0918デフォルトの名無しさん
2006/02/28(火) 16:22:21あったっけ?
どんな名前?
0919デフォルトの名無しさん
2006/02/28(火) 16:35:06ないよ、909と916がアホなだけ
たぶんキャレットと選択範囲の区別すらついてない
0920デフォルトの名無しさん
2006/02/28(火) 17:11:53でも、確かに、あってもいいプロパティだよね。
って、今迄に一度も必要になった事はないけど・・・
0921デフォルトの名無しさん
2006/02/28(火) 17:19:50この先どうなろうと俺らの知ったことじゃないし
0922デフォルトの名無しさん
2006/02/28(火) 20:14:340923デフォルトの名無しさん
2006/02/28(火) 20:46:53private sub Text1_Change()
debug.print Text1.SelStart
end sub
0924デフォルトの名無しさん
2006/02/28(火) 21:51:36クライアント座標を受け取っても、何文字目かは分からない・・・
0925デフォルトの名無しさん
2006/02/28(火) 22:17:540926デフォルトの名無しさん
2006/02/28(火) 22:49:06それ、複数行のやつしか使えないんじゃなかったっけ?
0927デフォルトの名無しさん
2006/02/28(火) 22:53:370928デフォルトの名無しさん
2006/02/28(火) 23:02:000929デフォルトの名無しさん
2006/02/28(火) 23:11:26複数行じゃないやつに使えない。
0930デフォルトの名無しさん
2006/02/28(火) 23:12:42つMSDN
0931デフォルトの名無しさん
2006/02/28(火) 23:44:16何か問題でも?
0932デフォルトの名無しさん
2006/03/01(水) 00:25:11まーた、試したこともないのに適当なこと抜かすやつが出てきたな
SetCaretPosで見た目上、位置を変更できたように見えるが
VBのテキストボックスが内部でキャレット位置を保持していて
現在の位置を無視するので動作がおかしくなるだけ
>>924
EM_POSFROMCHAR で分かる
0933デフォルトの名無しさん
2006/03/01(水) 02:05:15KeyPressイベントでKeyCode=0にするまでは解ったのですが、
既に入力されている文字をDELETEキーで削除できてしまいます。
DELETEキーを受け付けないようにしたいのですが、
どのようにすればいいのでしょうか??
0934デフォルトの名無しさん
2006/03/01(水) 02:21:38KeyDownイベントで KeyCode = 0
というか、テキストボックスに文字を入力できないようにするなら
Text1.Locked = True でいいんじゃない?
KeyPressやKeyDownでキーコードつぶすのは、
キーによって細かく動作を変えたいような場合にしか使わんよ
0935デフォルトの名無しさん
2006/03/01(水) 02:22:430936デフォルトの名無しさん
2006/03/01(水) 06:14:49With Text1
s = .SelStart
l = .SelLength
.SelText = UCase(.SelText)
.SetFocus
.SelStart = s
.SelLength = l
End With
0937デフォルトの名無しさん
2006/03/01(水) 08:09:43> Dim s, l As Integer
> Dim s, l As Integer
0938デフォルトの名無しさん
2006/03/01(水) 14:11:43> Dim s, l As Integer
> Dim s, l As Integer
0939デフォルトの名無しさん
2006/03/01(水) 16:03:540940デフォルトの名無しさん
2006/03/01(水) 21:22:09keydownイベントに
if keycode = (107) then
commanbutton1.value = true
end if
じゃだめなんですかねー^^;
0941デフォルトの名無しさん
2006/03/01(水) 21:30:40commanbutton1→commandbutton1
0942デフォルトの名無しさん
2006/03/01(水) 21:45:110943デフォルトの名無しさん
2006/03/01(水) 21:52:51Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = &H6B& Then
KeyCode = VBRUN.KeyCodeConstants.vbKeySpace
End If
End Sub
0944デフォルトの名無しさん
2006/03/01(水) 21:53:18ボタン押してるアニメーションも欲しかったので
0945デフォルトの名無しさん
2006/03/01(水) 21:56:03&H6B& → vbKeyAdd
0946デフォルトの名無しさん
2006/03/02(木) 03:34:33Locked ってXPだとバグあるよね
Locked = True なのにコンテキストメニューからペーストできちゃう
0947デフォルトの名無しさん
2006/03/02(木) 05:14:00そんなバグつきのバージョン使ってるやつのことなんかしらね
アップデートできない事情があるならコンテキストメニューも潰せ
0948デフォルトの名無しさん
2006/03/02(木) 05:59:450949デフォルトの名無しさん
2006/03/02(木) 06:00:200950デフォルトの名無しさん
2006/03/02(木) 06:37:520951デフォルトの名無しさん
2006/03/02(木) 09:13:44VB6はXPで動作保証されてません。
「MSのサイトでは云々」って話は無意味だから。
0952948
2006/03/02(木) 10:34:560953デフォルトの名無しさん
2006/03/02(木) 10:42:450954デフォルトの名無しさん
2006/03/02(木) 10:51:08ドメインが違うとアクセス出来ないのは何故?
URLでサイト開くんじゃないの?
レス数が950を超えています。1000を超えると書き込みができなくなります。