[Delphi:89117] TNMFTP の Disconnect で読み込み違反

169 views
Skip to first unread message

yusuke kashihara

unread,
Dec 27, 2006, 1:30:10 AM12/27/06
to Del...@ml.users.gr.jp
株式会社ヒューネスの柏原と申します。

WindowsXPPro SP2
Delphi5 Enterprise を使っています。

FTP接続で画像をダウンロード、アップロードする機能を作っていたのですが、
WindowsXPのファイアウォールを有効にした状態でDisconnectすると
「モジュール 'ftpdemo.exe' のアドレス 0044D254 でアドレス FFFFFFFC に対
する読み込み違反がおきました。」とエラーが発生してしまいます。
ファイアウォールの許可リストに実行ファイルを追加しても同様です。

Delphi5についているFTPデモで実行してもまったく同じ現象が発生します。
(C:\Program Files\Borland\Delphi5\Demos\FastNet\Ftp)
(ちなみに上のエラーはデモで実行したときのものです。)

たとえばデモのソースを借りますが、下記で
Button1Click で接続
Button2Click、Button3Click をクリックしリストを表示(何度か繰り返す)
Button3Click で切断

とすると、必ずではないですが、上記エラーメッセージがでます。
何度か繰り返すとほぼ確実に再現します。

ファイアウォールを無効にするとエラーは発生しません。

現在は、Disconnect をせずに使用しています(エラーは発生しません)
接続時間(TNMFTP.TimeOut)を5000(5秒)にして使用していますが、
Disconnect をしないで毎回Connectで接続して画像をダウンロードするといった
プログラムで問題は出ないでしょうか?
とりあえず今のとここちらでは問題は出ていないようです。

また、この現象を回避する方法などはあるのでしょうか?
特に回避策がない場合は、「Disconnect をしない」という方法で運用しようと
思いますが、
何かアドバイスいただければ幸いです。

それではよろしくお願いいたします。

-------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
If CheckBox1.Checked then
Begin
NMFTP1.Proxy := Edit6.Text;
NMFTP1.ProxyPort := StrToInt(Edit7.Text);
End;
NMFTP1.Host := HostTxt.Text;
NMFTP1.Port := StrToInt(PortTxt.Text);
NMFTP1.Timeout := 5000;
NMFTP1.UserID := UserTxt.Text;
NMFTP1.Password := PassTxt.Text;
try
NMFTP1.Connect;
except
On E:Exception do
writeln(E.message);
end
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
NMFTP1.Disconnect;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Q := 1;
try NMFTP1.Nlist; except end;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Q := 1;
try NMFTP1.List; except end;
end;

------------------------------------------------------

--------------------------------
株式会社 ヒューネス
柏原 佑輔 kash...@hunes.co.jp
--------------------------------

Reply all
Reply to author
Forward
0 new messages