TIdFTPServerの例外エラーの表示を消すには?

解決


迷子の子犬  2003-07-03 03:58:39  No: 3993

TIdFTPServerを使用してサーバープログラムを作りました.
データを取得できるようになったのですが
現在時々ですが、『EAccessVioration』のエラーが表示されます。
ただ、動作的に停止するわけでなく
ボタンを押せばメッセージウィンドウは消えます.
処理も続行しています。
イベント上では引っかからないので
たぶんTIdFTPServerのコンポーネント内部で表示されるのだと思いますが、
この表示を行わないようにするにはどうすればよいのでしょうか?
例外エラーを表示しないというような設定ができるのでしょうか?
よろしくお願いします.


にしの  2003-07-03 04:00:56  No: 3994

MemCheckなどで、TIdFTPServerのどこで例外が発生しているか確認してみてはどうでしょう。

Indy8であれば、もしかしたらIndy9でバグフィックスしているかもしれません。
# 未確認です


迷子の子犬  2003-07-03 17:33:18  No: 3995

Indy8なのかIndy9なのかは
どうやってしらべるのでしょうか?
現在使用しているのはDelphi7に
もともとついているものです.


迷子の子犬  2003-07-03 18:16:55  No: 3996

MemCheck をダウンロードしました。
ためしにサンプルをコンパイルしようと思ったのですが
コンパイルできません。

MemCheckInstallExceptionHandler(GetExceptInfoFunc, SetExceptMessageFunc);
この行で、以下のメッセージが出ます。

[警告] Project1.dpr(18): シンボル 'ExceptionRecord' はプラットフォームに依存すると宣言されています

どうすればよいのでしょうか?


にしの  2003-07-03 18:18:28  No: 3997

それならばIndy9.00.10でしょう。ソースに、IdVers.incというファイルがあり、そこに書いてあります。

サイトには、現在、Indy9.00.14が出ています。
バージョンをあげたからと言ってバグフィックスされているかわかりません。
IndyのサイトのBugListに載っていなければ、バグフィックスされていないと思います。

何にせよ、原因となる部分を突き止めてから、バージョンアップに踏み切った方がよいと思います。
もしかしたら、Indyではなくコーディングが原因かもしれませんし。


迷子の子犬  2003-07-03 20:21:07  No: 3998

やっぱり、MEMCheckの使い方がわかりません。

こちらにあったものを使用すればよいのかと思うのですが
http://www.yks.ne.jp/~hori/MemCheck.html

Delphi7.0では使えないのでしょうか?
どうやってもサンプルプログラムがコンパイルできないです。


にしの  2003-07-03 20:30:32  No: 3999

それについては、一昨日ここの掲示板の「例外が発生した関数名を取得するには?」にて回答しています。


迷子の子犬  2003-07-04 17:41:16  No: 4000

MEMCheckを試してみましたが
現状では何も代わりません.

表示されているのはIdFTPServerの内部だと思います.

プログラム構成的には
FTPサーバー部分はDLLで作成しています。

呼出側のプログラムのプロジェクトファイルでMemCheckを対応し、
Dllを呼び出してDLL側でIdFTPServerのインスタンスを作成し、
FTPサーバーを起動しています。
DLLの関数は
IdFTPServerのOpen、Get、Closeの3つを対応し
OpenではActive=True
CloseではActive=False
GetではIdFTPServerで取得したデータをメモリから読み出す
ということをしています。

DLLにMemCheckを入れるべきなのでしょうか?
入れるとすればMemCheckInstallExceptionHandlerを
どのように設定すればよいのでしょうか?


にしの  2003-07-04 18:53:00  No: 4001

DLLでエラーが起きているのであれば、DLLに入れる必要があると思います。
使い方は全く変わりませんよ。
DLLのソースに、同じように記述すればOKです。


迷子の子犬  2003-07-05 03:44:20  No: 4002

DLLにMemCheckを入れました.
例外エラーが発生しなくなってしまいました.

MemCheckが隠蔽工作を行っているのでしょうか?
それとも、MemCheckを入れることで
例外エラーが発生しなくなる要素があったのでしょうか?
これを調べる方法はないのでしょうか?


迷子の子犬  2003-07-10 22:37:06  No: 4003

エラーが発生しなくなったので
現状で少し様子を見ていきたいと思います.


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加