メインFormのonCreateで、外部の設定ファイルを読んで、フォーム上に必要なオブジェクトを生成して、それらの準備が完了したらタイマーをスタートさせてゲーム開始、というシナリオを実現したいのですが、onCreateで生成命令を出したあと、準備が終わったというのはどうやって判定するのがいいでしょうか。
onCreateの一番最後でタイマーを作動させたところ、まだオブジェクトの準備が終わっていないようで、PCの処理速度によってはアクセス違反が起こってしまいました・・・。
onCreate内で生成しようとしたオブジェクトの実体があるかを逐一チェックして、無かったら作られるまでwaitをかけるという方法もあるかもしれませんが、音声と映像だけで200個近くあるので、一個ずつやるのは辛いです・・・(汗
No.3ベストアンサー
- 回答日時:
再びこんにちは。
動作を確認出来る最低限のソースを掲載された方がより詳しい方から「ここがまずい」ってレスが付き易いのでは、と申し上げたつもりだったのですが。。処理の流れだけでは。(^^;
それほど詳しい訳ではないのでハズしているかもしれませんが、オブジェクトの動的生成に失敗しているか、別のThreadで動かしているって事は無いですか?
であれば、どこに書いても発生する可能性がありますね。
ちなみにTCustomForm.OnCreateのヘルプによれば、下記の順でイベントが発生するようです。
# フォームが作成されるとき,Visible プロパティが
# True であればイベントが以下の順序で発生します。
# 1. OnCreate
# 2. OnShow
# 3. OnActivate
# 4. OnPaint
ありがとうございます。
onCreateを見たところ、1,250行もあり、簡単に解説できる状態ではありませんでした(汗
動的生成の部分で何かしらがあるんでしょうね・・・タイマーのスタートを自動的にしなければ問題は起こらないので、ワンクッション入れてクリックしたらスタート、みたいな感じでまずは作り、解決策を探していこうと思います。
No.2
- 回答日時:
こんにちは。
> onCreateの一番最後でタイマーを作動させたところ、
> まだオブジェクトの準備が終わっていないようで、
> PCの処理速度によってはアクセス違反が起こってしまい
> ました・・・。
PCの速度によってアクセスバイオレーションが発生するなんて、そもそもその処理が危ういような気がします。
どんな処理を書かれているのか、再現出来るソース(簡略化してもの)があると答えが得られやすいかも。
この回答への補足
そうですか・・・CDに焼いて実行すると、リソースを読むのに時間がかかり、コケてしまうような印象がありました(HDDだと上手く行っています)。
Form1.onCreate begin
設定ファイル.open
設定ファイル.読み込み
設定ファイル.close
imageの読み込み
imageをFormに配置
waveの読み込み
waveからDirectSoundオブジェクトを生成
Timer.start
end;
滅茶苦茶簡単ですが、このような処理を行っています。(onTimer内では周期的に演算を行い、image,soundにアクセスしています)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vba メモリ節約 3 2022/09/16 21:45
- Visual Basic(VBA) Excel・ユーザーフォームの情報を受け渡したい 4 2022/06/08 10:11
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- 工学 音声合成を追加 3 2023/01/30 11:52
- IT・エンジニアリング ドメイン駆動設計の値オブジェクトについて質問 1 2023/05/13 02:50
- 友達・仲間 友達がゲームばかりやって「やらなくちゃいけないことをしない」 1 2022/09/30 20:31
- フリーソフト libreoffice drawのツールバーのチェックが外れてしまう 1 2022/10/04 22:02
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- 法学 設立が募集設立の場合において、定款に出資された財産の一部を資本準備金とする記載がなく後に定メタ場合 3 2022/12/31 17:02
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで =EMBED("Acrobat Docu...
-
COMコンポーネントって何?
-
ワイルドカード<?>と型パラメー...
-
ビジュアルC++でボタンの有...
-
JSPのout.printについて
-
多人数のじゃんけんプログラム
-
JAVAからHTMLへ値を返す方法
-
bmp画像をjpegやpng画像に圧縮...
-
パワーポイントのVBAでテキスト...
-
VBAのWindowオブジェクトとWork...
-
VBからBATファイルを起動して戻...
-
戻り値がクラスオブジェクト
-
オブジェクトに値を保持させる...
-
C#でフォームのオブジェクト名...
-
エプソンVP-930のESC/Pの操作に...
-
Vbで通常使用するプリンターを...
-
ワードで画像をドロップすると...
-
Date型オブジェクトから日付の...
-
newは明示的にした方が良いのか?
-
Google Apps Scriptの時刻の計算
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
Excelで =EMBED("Acrobat Docu...
-
ワイルドカード<?>と型パラメー...
-
EXCEL VBAにて動的にCheckBOXを...
-
VBAのWindowオブジェクトとWork...
-
C#でフォームのオブジェクト名...
-
LISTBOXの内容が更新されま...
-
Object型からDouble型へのキャスト
-
JAVAからHTMLへ値を返す方法
-
COMコンポーネントって何?
-
ビジュアルC++でボタンの有...
-
戻り値がクラスオブジェクト
-
VBA 同じ名前のオブジェクトを...
-
ASP.net 教えてください!!(...
-
Vbで通常使用するプリンターを...
-
newは明示的にした方が良いのか?
-
CoCreateInstanceでエラーになる。
-
オブジェクトレベルとメタレベル
-
bmp画像をjpegやpng画像に圧縮...
-
Accessの連結・非連結オブジェ...
おすすめ情報