No.5ベストアンサー
- 回答日時:
今読み直して気が付いたのですが、、、
>止まる時は決まっていないのですが、Tabキーでの移動やコマンドボタンを
>クリックした時が多いような気がします。
もしかしてですが・・・・
SetFocusやGotFocus/LostFocusのイベント類を使用していませんか?
もし、コントロールAがフォーカスを受けた時、処理によってはコントロールBにフォーカスを移動させるなど・・・
フォーカス永久ループっていうことも考えられます。
以前に書いたように、1度目と2度目の実行は、メモリにロードされていない/されているという違いがあります。
よって、1つの処理についてのPCへの不可が比べ物にならないくらいかかります。
先に挙げたGotFocus/LostFocusイベントは、OSの状況によって左右されることもあります。
フォーカス永久ループの調査方法として、各GotFocusイベントにDebug.Print ActiveControl.Nameなどと記してみてください。
それと、、、思い出したのでついでに書いておきます。
Command1.FontBold = True とかしてませんか?
以前に経験したのですが、VB4ならこれでよいのですが、VB6のときたまにフォーカス永久ループになった経験があります。
Command1.Font.Bold = True とすることで回避できました。
FontBoldとFont.Boldの違いが、HP上では違いがわかりづらいですね。
一度、このページをテキストか何かにコピペして読んだらわかりやすいかも?
前回に頂いた回答と合わせてお礼を申し上げます。おかげさまで私自身、たくさんの勉強になりました。本当にありがとうございます。
前回の回答でご指摘のあった点で、その通りの指摘事項がありました。
・DBを使っています。
・たくさんのコントロールを使っています。
・EXEの容量も大きいような気がします。約750KB位です。初心者の本を参考に、初めて作ったプログラムなので分割の方法があるということはわかりませんでした。やり方もわかりません。
そして、今回の回答にも私はびっくりしています。まさにその通りです。初心者のはずかしいプログラムを見られているようです。
SetFocusもCommand1.FontBoldも使っています。
回答して頂いた内容をそのまま使用してみることにします。
助かっただけでなく、勉強にもなり、ご親切にありがとうございました。
No.3
- 回答日時:
前回の発言は、1度目と2度目の実行時の差を説明しました。
>VB6で作成したプログラムを実行していると、突然フリーズしたように
VBだからそうなるとは考えにくいですよね ^^;
VBで作ったソフトだからそうなるとは、聞いたことがありません。
そちらの状況が良くわからないため、その1度目になぜそのような状況になるのかわかりません。
考え付くのは「環境」「プログラムの作り」ぐらいです。
以下に想像されることを書いておきます。
※1.ソフトを起動しているPC環境
一.メモリが少なくないですか?
二.CPUが古いタイプではないですか??
三.OSがインストールされているドライブの空き容量が少なくなってませんか?
四.常駐ソフトが多数起動中ではないですか?
※2.もし環境に問題がなければ、プログラムの作りに問題があると思われます。
一.DBを使用していますか?
二.画像/アイコンなどをたくさん使用していませんか?
三.コントロール類を多様していませんか?
四.FileSystemObjectを使用してませんか?(ルートを参照するとたまに重くなります)
五.PCが起動してすぐに立ち上げてませんか?(HDDにがビジー状態でないときに起動したほうがよいですよね)
六.コンパイル後のEXEの容量はいくつですか?(大きいEXEなら、機能分割をした別EXEにする方法もあります)
七.OLEオブジェクトを使用したフォームをロードしてませんか?(外部アプリの埋め込みは、結構処理が重いです)
八.市販のDBGridのようなもの(名前を書きたいけれど、批判されそうなので、名前は伏せます)を使用していませんか?
一番の解決方法は、ソースをここで公開することかも?
No.2
- 回答日時:
いろいろなことが考えられます。
起動時の処理が重ければ重いほど、2回目以降と差が生じます。
OSのメモリに一度ロードされたものは、メモリに残っている時はプログラムを毎回見に行かず、メモリを参照します。
なので、2回目以降は早くなることも考えられます。
あるいはDBに接続を行っている場合もそうです。これはスペックが低いPCほど、初回と2回目以降に差が生じます。
WinNTやWin2000を使用したことがあるのであればわかると思いますが、最初のログイン時と、ログオフして再ログインするのとでは、起動速度が違います。常駐ソフトの立ち上がりが違うからです。
一番の回避方法は、無駄にメモリを消費するようなプログラムを作成しないように努めることです。そうしたら、他のプログラムを邪魔をしないし、OSがメモリを参照しないでプログラムを見ていても、実行速度の差が少なくなります。
でもやはり、どんなプログラムを見ても、メモリ参照に勝るものはないですね。
実行した途端に現象がでることもあります。
止まる個所はまったく決まっていないのですが。
メモリの問題なのでしょうか。
メモリの問題があるということを初めて知りました。
回答してくださってありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- その他(プログラミング・Web制作) プログラムが書けません。 6 2023/01/22 22:58
- C言語・C++・C# C言語 3 2022/10/04 15:07
- ノートパソコン Windows 10 動作改善方法 6 2023/04/26 22:30
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 1 2022/06/18 21:20
- その他(セキュリティ) これはDos攻撃になりますか? 1 2022/06/30 09:46
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、写真のプログラムをどう直せ 2 2022/07/09 21:13
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- C言語・C++・C# ActiveXコントロールを.NETにインポートできない??? 2 2023/05/02 02:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
プログラミング ソースコード
-
プロセス間通信について
-
JavaScriptでレースゲームを作...
-
MACで動く実行ファイルをWindow...
-
なんかC言語でプログラム書いて...
-
バックグラウンドで実行される...
-
実行時エラー429
-
SNMPマネージャAPIでメモリリー...
-
C言語でフォルダを開く
-
VB6とExitProcess
-
VB上で実行中の無限ループの止め方
-
Visual C++ 6.0で作成したプロ...
-
matlabでのif文の重複
-
アクセス[ファイルを開かずに、...
-
CreateProcessについて
-
初期化は、main関数の外で...
-
システム資源とは?
-
あるプログラム実行中に別のプ...
-
プリントスクリーンをプログラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
MACで動く実行ファイルをWindow...
-
sendkeysにてALT+CTRL+INSERTを...
-
他のPC上にあるexeを、そのP...
-
VB上で実行中の無限ループの止め方
-
system関数を使用してsuコマン...
-
VBAで外部プログラムを非表示で...
-
実行時エラー429
-
プロセス間通信について
-
並列計算をしたときのシステム...
-
終了してもプログラムが実行し...
-
システム資源とは?
-
C言語で途中までしか、プログラ...
-
PIC のデータEEPROMに書き込み...
-
RPG パラメーターについて
-
Windows10でDOSゲーム
-
ラズパイ プログラム 自動起動 ...
-
プログラムを走らせる
-
C言語でフォルダを開く
-
アクセス[ファイルを開かずに、...
おすすめ情報