VBプログラマ質問スレ(6.0以前) Part46
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/02/03(金) 22:58:330797デフォルトの名無しさん
2006/02/21(火) 22:02:46これは値を参照するだけにとどまりますか?
0798デフォルトの名無しさん
2006/02/21(火) 22:09:00こんなのがあぼーん?
単にURL貼ってあっただけだと思ったけど。
ずいぶんおかしな奴が削除人やってるんだな。
なんか2ch用語でいう「プロ市民」的な病理を感じるよ。
0799デフォルトの名無しさん
2006/02/21(火) 22:57:44何故?
0800デフォルトの名無しさん
2006/02/22(水) 00:12:480801デフォルトの名無しさん
2006/02/22(水) 01:08:100802デフォルトの名無しさん
2006/02/22(水) 01:10:14ある
0804デフォルトの名無しさん
2006/02/22(水) 01:16:10"アプリの検索ボックス"とやらの具体的な例を出したらな
何も分からないのなら、
SendKey()とかWinAPIのSendInput()とかkeybd_event()とか使ったり、
ウィンドウメッセージ送って(運良く)反応してくれるかもしれない。
とだけ言える
0805デフォルトの名無しさん
2006/02/22(水) 01:33:07調べてみます。ありがとうございました。
0806デフォルトの名無しさん
2006/02/22(水) 09:06:50そこのWin32_TemperatureProbeを試してみましたが,
For Eachの中が一度も実行されなくて,
何も表示されませんでした.
他のサンプルなら成功するのですが
温度が読めないのはどこに問題があるのでしょうか?
0807デフォルトの名無しさん
2006/02/22(水) 13:05:00ドライバが入ってないか、そもそも温度センサーが付いていない
0808デフォルトの名無しさん
2006/02/22(水) 13:15:49MobileMeterというソフトでは
(たぶん)正しい温度が読めているので
そういう問題ではないと思います.
逆にどのような環境では上のスクリプトで
リアルタイムに温度をモニタできるのでしょうか?
0809デフォルトの名無しさん
2006/02/22(水) 13:27:17っ [S.M.A.R.T機能(対応されているか確認しる)]
つか、製品わかってるなら参照しているDLLをDependencyWalkerなんかで調べればいいのでは?
0810デフォルトの名無しさん
2006/02/22(水) 13:47:54そのソフトはACPIとかのAPIを直接呼んでるんじゃないの?
0811デフォルトの名無しさん
2006/02/22(水) 14:19:14調べる前に確認したいのですが,
SMARTはHDDだけでなくCPU温度にも関係あるのでしょうか?
依存しているDLLは以下の通りです.
いずれも基本的なDLLばかりに見えますが
POWRPROF.dllあたりにそういう関数があるのでしょうか?
$ objdump -x mobmeter.exe | grep "DLL Name"
DLL Name: KERNEL32.DLL
DLL Name: ADVAPI32.dll
DLL Name: COMCTL32.dll
DLL Name: GDI32.dll
DLL Name: MSVCRT.dll
DLL Name: POWRPROF.dll
DLL Name: SETUPAPI.dll
DLL Name: SHELL32.dll
DLL Name: USER32.dll
>>810
MobileMeterはACPIを使っているようですが,
これは私の環境ではSMBIOSから読み取るWMIは使えなくて,
ACPIを直接呼ぶ必要があるという理解でよろしいでしょうか?
WindowsでのACPIをいじり方の解説などはないでしょうか?
0812pp
2006/02/22(水) 21:37:19どなたか、知恵をかしてください。初歩的な質問ですいません。
0813デフォルトの名無しさん
2006/02/22(水) 21:53:490814デフォルトの名無しさん
2006/02/23(木) 22:20:52VB6 sp5の環境で開発してるのですが、昨日まで使えてた
Right関数が今日になって 「配列がありません」 と、
未定義の配列であるかのようなエラーとともに使えなくなってしまいました。
VSの標準エディタで right と小文字で打って改行すると、
Right と変換されてるし、識別子カラーで表示されているのにです。
ちなみにLeft関数Mid関数は動きますが、
Right$関数だと、「型宣言文字と宣言されたデータ型が一致しません」と
エラーになってしまいます。
まったく謎な状態です。
どなたか対処方法を教えて下さい。
0815デフォルトの名無しさん
2006/02/23(木) 22:26:02気のせいですよ
0816デフォルトの名無しさん
2006/02/23(木) 22:29:45できない奴ほど真っ先に道具を疑う。
VBのバグを疑う前に自分のやってることを疑ってみた?
0817デフォルトの名無しさん
2006/02/23(木) 22:30:59なぁに、アフリカではよくある事。
それはそうとして、VB6にはSP6を当てましょうね。
0818デフォルトの名無しさん
2006/02/23(木) 23:36:34とりあえずStrings.Rightに改名する
0819デフォルトの名無しさん
2006/02/23(木) 23:38:01誰がVBのせいにしてるの?
>>814
標準モジュールでRightという名前の関数を定義していない?
標準関数と同じ名前の関数は作らないほうがいい。
まあ、標準モジュールでRightを定義しても、標準関数を
VBA.Strings.Rightと冗長な正式名で使用する方法もあるけどね。
ちなみに、標準モジュールのRightの正式名は、「標準モジュール名.Right」となる。
0820デフォルトの名無しさん
2006/02/23(木) 23:50:59814の彼はVBのせいにしてるんだよ。間接的に、ではあれ。
でなきゃこんなところで質問する前にリテラルの文字列でRight$が
正しく動作することを確認するはず。
ついでに言えば、814の彼みたいなのは自分の勘違いに気づいて
問題が解決しても絶対に何もレスしないよ。
0821デフォルトの名無しさん
2006/02/23(木) 23:53:420822デフォルトの名無しさん
2006/02/24(金) 11:25:16本当に参照設定がおかしい可能性もあるが、まず100%ソースのどこかにコンパイルエラーがある
0823デフォルトの名無しさん
2006/02/24(金) 12:51:170824デフォルトの名無しさん
2006/02/24(金) 15:39:15たまになったな。
Windows自体をリブートしたら直ったけど。
0825814
2006/02/24(金) 21:16:33参照設定で、「使用中のコントロールまたは参照を削除することはできません」って
怒られないものを全部外してみたら動くようになりました。
(何故か同じものが複数チェックされてたり謎な状態だった、、、)
0826デフォルトの名無しさん
2006/02/24(金) 21:47:59そのなぜか同じ物が複数チェックされているのがVB標準ライブラリだったりとか。
0827デフォルトの名無しさん
2006/02/24(金) 21:50:31ときどき起こります
参照をはずせない場合はvbpファイルを直接エディタで書き換えたりもします
(,,゚Д゚) ガンガレ!
0828デフォルトの名無しさん
2006/02/25(土) 00:48:330829デフォルトの名無しさん
2006/02/25(土) 01:33:44あります
0830デフォルトの名無しさん
2006/02/25(土) 02:01:281個必ず作られて、App.Titleプロパティはこのウィンドウの
GetWindowText()を返してるんじゃなかったっけな確か。だから逆に
App.TitleでFindWindow()すれば、そのウィンドウのハンドルは取れるよ。
ウィンドウクラスはvbNullStringでも取れるけど、開発環境だと
"ThunderMain"でexeだと"ThunderRT6Main"になる。
これで開発環境とexeの区別を付けてもいいかもしれん。
0831デフォルトの名無しさん
2006/02/25(土) 02:57:22なんでそんなあやふやな方法で、しかもわざわざAPI使ってやる必要があんのかと
0832デフォルトの名無しさん
2006/02/25(土) 10:00:11開発環境と実行環境を区別するプロパティ、何だっけ・・・?
0833デフォルトの名無しさん
2006/02/25(土) 11:00:28ttp://support.microsoft.com/default.aspx?scid=kb;ja;JP177636
0834デフォルトの名無しさん
2006/02/25(土) 11:31:47項目数、INDEXなど全く同一のTblに対し、VBからSQLを発行して検索した場合と
SqlPlusから検索した場合とで検索結果が違ってくるのですが、
どなたかこういう現象を見た、とか知っている方いらっしゃいませんか?
0835デフォルトの名無しさん
2006/02/25(土) 11:35:200836デフォルトの名無しさん
2006/02/25(土) 11:40:10件数が違うのです
件数にして5件VB側の方が少ないです。
他のPCではVBでもPlusでも検索結果が同じなのですが...
0837デフォルトの名無しさん
2006/02/25(土) 11:49:02長音oを含む場合母音を重ねないってとこが上手くいきません・・
0838831
2006/02/25(土) 12:38:58もともとそんなプロパティは用意されとらんよ
>>833 のEXE名変更は利用者にリネームされたら終わりなのでダメ
GetModuleFileName の方法もEXEをVB6.EXEにリネームされる危険があるんで、
レジストリキーからVB6のインストール先を取得するところまで考慮してなんとか使えるレベル
以下の方法が一番明快、かつ簡単だと思うぞ
Public Function IsIDE() As Boolean
Debug.Assert IDETest(IsIDE)
End Function
Private Function IDETest(ByRef bIsIDE As Boolean) As Long
bIsIDE = True
IDETest = True
End Function
API が使いたくて辛抱溜まらんなら、こういうトリッキーな方法もある
Public Function IsIDE() As Boolean
Debug.Assert lstrcpy(IsIDE, Chr(1))
End Function
0839831
2006/02/25(土) 12:41:43まあ分かるか
0840デフォルトの名無しさん
2006/02/25(土) 13:00:40まあギャグのつもりかもしれないが、普通の人はそれを「痛々しい」と見るんだよ。
ひとつ大人になったね坊ちゃん。
0841デフォルトの名無しさん
2006/02/25(土) 13:31:58痛々しい
0842デフォルトの名無しさん
2006/02/25(土) 13:37:17何やってるコードかさっぱり分からん・・・
0843デフォルトの名無しさん
2006/02/25(土) 14:37:33SQLの条件が違うとか?w
0844デフォルトの名無しさん
2006/02/25(土) 14:42:570845デフォルトの名無しさん
2006/02/25(土) 14:43:21ほとんどない。
0846デフォルトの名無しさん
2006/02/25(土) 14:58:07何で処理速度なんか気にするのか理解出来ない。
例え差があったって、1000億回位ループする中でやるとか以外、
何の問題もないだろうに。
そうじゃない処理を1msや2ms速くしたって何だと言うのか。
0847デフォルトの名無しさん
2006/02/25(土) 15:02:17OracleのOO4OのどっかのバージョンはFetchにバグがあって、ページまたぎのFetchを取りこぼすとか昔あったな〜
で、DBのバージョンとミドルウェアのバージョンは?
0848デフォルトの名無しさん
2006/02/25(土) 15:25:02SQL文が間違ってるんでしょう。
0849デフォルトの名無しさん
2006/02/25(土) 16:35:21ほかのPCが何を指してるのか
0851デフォルトの名無しさん
2006/02/25(土) 18:52:01http://www.vector.co.jp/soft/winnt/net/se392514.html
0852デフォルトの名無しさん
2006/02/25(土) 20:16:08> カナからローマ字のヘボン式に変換するソースありますか?
あるよ。
先に言っておくけど、呉とか言わないでね。
>>838
超有名な手法だね。
2ch以外でも掲示板でこの手の質問が出ると、必ず誰かがコレを書き出す。
まぁ関数名や引数名はちょっと違ったりするけどね。
個人サイトのVB Tipsなんかにも載ってたこと有るし。
0853デフォルトの名無しさん
2006/02/25(土) 20:56:23長音を含む母音のときどう書くのですか?
促音とかはできたのですが。。
0854デフォルトの名無しさん
2006/02/25(土) 22:12:53文字入力したいんですが・・・テキストボックスの指定の
仕方がわからない。どうやってかいたらいいのか・・・orz
わかる方教えてくださいm(_ _)m
0855デフォルトの名無しさん
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" で、つまり見た目どおりの文字列。
■ このスレッドは過去ログ倉庫に格納されています