▼ Mr.XRAYさん
> ▼ takaさん
>
> > UniqueString(LErrStr);
> > でアクセス違反になってしまいました。
>
> このアクセス違反のダイアログの表示は 1 回だけのようです.
> EXE を直接起動すると表示されませんでした.
>
> デバッガで追跡したわけではないのですか,
> IDE から実行すると DLL がメモリにロードされます
> すると,デバッガの機能が働いて,DLL 側の (メモリ上の) エラーを検出するのでは
> と思ってします.この DLL 側のアクセス違反は try - except で捕捉できないのではと.
dll2個と関数2個の4回チェックしていたので
コードを1回チェックに修正したらでなくなりました。
落ちていた原因がUniqueStringではなかったみたいです。
違うところで落ちてたみたいです。
if (PChar(LErrStr) = PChar(E.Message)) then
Memo1.Lines.Add(Format('%d %d', [Integer(PChar(LErrStr)),Integer(PChar(E.Message))]));
UniqueString(LErrStr);
Memo1.Lines.Add(Format('%d %s', [Integer(PChar(LErrStr)), LErrStr]));
を別々のところに差し込むとアドレスが変更されたのがわかります。
|