VCL フォーム アプリケーションに次のコードがあります。
implementation
{$R *.dfm}
var
MyBitmap: TBitmap;
procedure TFormMain.FormCreate(Sender: TObject);
begin
MyBitmap := TBitmap.Create;
end;
procedure TFormMain.FormDestroy(Sender: TObject);
begin
if Assigned(MyBitmap) then
MyBitmap.Free;
end;
procedure TFormMain.Button1Click(Sender: TObject);
begin
if Assigned(MyBitmap) then
MyBitmap.Free;
end;
MyBitmap.Free;
ボタンを 2 回目にクリックすると、ボタンのクリック ハンドラでアクセス違反が発生します。ただしMyBitmap
、最初のボタン クリック後は、もう割り当てるべきではありません。if Assigned(MyBitmap) then
では、最初のボタン クリックでは明らかに機能したのに、2 回目のボタン クリックでは機能しないのはなぜでしょうか。
Delphi 10.1 ベルリン アップデート 2