0

これまでプログラムで気づいたことはありませんでしたが、TFormの1つに、オブジェクトを解放するdestroyイベントがあり、複数回呼び出されたり、起動されたりします。理由がわかりません。

procedure THTrendFrm.FormDestroy(Sender: TObject);
begin
  LogAlarm.Free;  <---Invalid Pointer Operation exception is raised
end;

前もって感謝します、

更新:プログラムがシャットダウンされた直後のFastMMメッセージウィンドウは次のとおりです。TAlarmMsgは、LogAlarmの作成元のクラスです。 ここに画像の説明を入力してください ここに画像の説明を入力してください

4

3 に答える 3

2

イベントは複数回呼び出されないため、イベントがトリガーされる前に、コード内の別の場所でオブジェクトTForm.OnDestroyを解放する必要があります。LogAlarmOnDestroy

于 2012-04-12T20:09:26.813 に答える
1

David Heffernan などに感謝します。問題を見つけて修正しました。問題の TForm は、私のプロジェクト ファイルで 2 回作成されていました。

Application.CreateForm(HTrendFrm, HTrend);

これは、destroy が 2 回呼び出された理由を説明しています。

重複行を削除すると、正常にシャットダウンされます。

于 2012-04-13T13:42:03.213 に答える