はじめまして。投稿します。
例外が発生した関数名をエラーメッセージとして表示したいのですが、
どうすれば良いでしょうか?
具体的にはtry..except間でコールした関数のネストした先の方でエラーが発生しその発生場所を情報として出力したい場合です。
MemCheckで実現しています。
http://www.yks.ne.jp/~hori/MemCheck.html
こちらを参照してください。
なお、Delphi7(おそらくDelphi6も)だと、MemCheckのサンプルが動きません。
MemCheck.pasの、最初のusesを、
uses Windows,SysUtils;
とし、
MemCheck.pasのPExceptionRecordを、SysUtils.PExceptionRecordとすれば動くと思います。
# PExceptionRecordがWindowsにも含まれるため
どうもご返事ありがとうございます。
早速ためして見たいとところですが、どうもサンプルソースを理解するのに
時間がかかりそうなので、結果は後ほど報告します。
(実はdelphiは1週間前から導入検証を行っていて全くの素人なので、javaのExceptionのような感じとで取得できるだろうと思い込んでましたが
結構難しいですね ちなみにdelphi7を使用しています)
さっそくMemCheck.pas::MyGetExceptionObject関数をトレースしてみました。
一応例外オブジェクトからPExceptionRecordを取得し、そこから
スタック情報のアドレスを進めて取得し...とやればなんとかtry..exceptで
キャッチした例外からほぼ期待した情報が取得出来そうです。(ほんとに?)
大変参考になりました。
ツイート | ![]() |