名前 題名 ▼ Mr.XRAYさん > > UniqueString(LErrStr); > > なんでもやってみると,ということでやってみました. > 使用した DLL は以下の質問者が提示したコードです. > > [DLL上の例外をコピーした文字列をFreeLibraryにアクセスとエラーになる] > http://madia.world.coocan.jp/cgi-bin/DelphiBBS/wwwlng.cgi?print+201809/18090005.txt > > DLL を使用する Delphi のコードです. > UniqueString を使用しない場合です. > > procedure TForm1.Button1Click(Sender: TObject); > var > DLLExecute : function : Integer; stdcall; > ModuleHandle : HModule; > TPExecute : TFarProc; > S : string; > LInt : Integer; > begin > ModuleHandle := LoadLibrary('DUMMY.DLL'); > if ModuleHandle <> 0 then > begin > TPExecute := GetProcAddress(ModuleHandle, 'Execute'); > if (TPExecute <> nil) then > begin > @DLLExecute := TPExecute; > try > LInt := DLLExecute; > except > on E: Exception do > begin > S := E.Message; > end; > end; > end; > Memo1.Lines.Add(S); > // 以下のコードが実行されないので,メモリリークが発生する > FreeLibrary(ModuleHandle); > Memo1.Lines.Add(S); > end; > end; > > デバッガ例外通知で [継続] をクリックすると何回かデバッガ例外通知となります. > 最後に下図のように表示されます. > 動作確認は Windows 7 U64(SP1) + Delphi XE5(UP2) Pro VCL-32 です. GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link