delphi idftp控件的问题

yang1870049 2012-02-02 01:40:27
程序中循环向ftp服务器上传文件,但是每运行一会(上传几条后)便会提示一个错误
Project UpLoad.exe raised exception class EAccessViolation with message 'Access violation at address 00000000. Read of address 00000000 '. Process stopped. Use Step or Run to continue.

程序调试发现每次报错都是在下面这段代码上:

FmyFtp :Tidftp;
FMyFtp.Put(FileLocalPath,(ExtractFileName(FileLocalPath)));

FileLocalPath为本地文件绝对路径

请教高手!这可能是什么原因造成的?
...全文
137 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzg827 2012-02-03
  • 打赏
  • 举报
回复
楼主,结贴了说说解决方法啊
yang1870049 2012-02-02
  • 打赏
  • 举报
回复
说的也是!谢谢你!tmpfile 应该没有问题的!上传前 我已经用fileexists 判断它是否存在了!再说还有try 结构,应该不是他的问题!呵呵![Quote=引用 5 楼 lzg827 的回复:]

找问题总是艰难漫长的,楼主加油哈,再次帮顶。
[/Quote]
lzg827 2012-02-02
  • 打赏
  • 举报
回复
找问题总是艰难漫长的,楼主加油哈,再次帮顶。
lzg827 2012-02-02
  • 打赏
  • 举报
回复
上传线程这个过程中
TmpFile 你传个空值或者非法路径看看什么效果。
tmpFile是从一个list里面循环读取出来的,能保证一直是有效路径吗?
yang1870049 2012-02-02
  • 打赏
  • 举报
回复
求高手!
yang1870049 2012-02-02
  • 打赏
  • 举报
回复
//判断ftp上文件是否存在
function TFtpThread.FtpFileExists(FileName: string):Boolean;
begin
Result := False;
try
if FMyFtp.Size(FileName) = -1 then //没有返回 -1 函数返回 true 文件不存在
begin
Result := True;
end;
except
end;

end;
//文件上传函数
function TFtpThread.UpLoadToFtp(FileLocalPath:string):Boolean;
begin
Result := True;
Try
if FtpFileExists(FileLocalPath) then //文件不存在,上传
begin
FMyFtp.Put(FileLocalPath,(ExtractFileName(FileLocalPath)));
end;
except
Result := false;
end;
end;

// 上传线程
procedure TFtpThread.Execute;
begin
while not Self.Terminated do
begin
if FMyftp.Connected then
begin
UpLoadToFtp(TmpFile);//tmpFile是从一个list里面循环读取出来的!
end;
end;

end;
lzg827 2012-02-02
  • 打赏
  • 举报
回复
这两行看不出问题
楼主,再贴些代码吧。
你说到循环传文件,有没有发生阻塞,或者重复连接。

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧