Ziya 发表于 2010-7-24 22:24:30

[已解决]当FTP中无文件时,_FTP_ListToArray报错的问题

本帖最后由 Ziya 于 2010-7-25 22:46 编辑

代码如下#include <FTPEx.au3>

$Open = _FTP_Open('MyFTP Control');打开FTP连接
$Conn = _FTP_Connect($Open, "地址", "用户名", "密码", 1);连接到指定FTP
$aFile = _FTP_ListToArray($Conn, 2);列出文件
MsgBox(0, "", $aFile);显示文件数
$Ftpc = _FTP_Close($Open);关闭FTP连接测试FTP中如果有文件,则可以正确列出文件数量
但是当FTP中无文件时,则会报错
>运行:(3.3.6.1):J:\My Dropbox\Au3\Autoit\autoit3.exe "J:\My Dropbox\Au3\temp_au3\temp.au3"   
J:\My Dropbox\Au3\temp_au3\temp.au3 (6) : ==> ???????????.:
MsgBox(0, "", $aFile)
MsgBox(0, "", $aFile^ ERROR
试过 _FTP_ListToArray ,_FTP_ListToArray2D,_FTP_ListToArrayEX都是这样...不知道是哪里错了=.=

Ziya 发表于 2010-7-25 20:47:55

貌似是这个udf的bug?

republican 发表于 2010-7-25 21:56:56

if @error 试过了吗?

Ziya 发表于 2010-7-25 22:10:40

没有用到@error吧?
貌似ftp有没有文件,@error都是0

C.L 发表于 2010-7-25 22:13:12

没有文件,函数也许不会返回一个数组


$aFile = _FTP_ListToArray($Conn, 2);列出文件
MsgBox(0, "", $aFile);显示文件数,当返回的值$aFile不是一个数组时,就会出错


MsgBox(0, "", $aFile);这句,当返回的值$aFile不是一个数组时,就会出错
可以用3#的代码检查一下@error的值,或者自已用IsArray检查$aFile是否为数组
$aFile = _FTP_ListToArray($Conn, 2);列出文件
If IsArray($aFile) then MsgBox(0, "", $aFile)

Ziya 发表于 2010-7-25 22:41:48

还真是
用IsArray($aFile)判断就可以了....
感谢楼上的指点

z761003 发表于 2011-11-16 20:58:24

呵呵,很多困难往往是在简单的办法中得以解决的

twomax 发表于 2011-12-6 21:17:31

也來學習一下

twomax 发表于 2011-12-16 16:04:28

正好也在找一些ftp的相關資料,剛好用上

zxhou1 发表于 2014-2-28 11:02:57

谢谢,问题解决。。。
页: [1]
查看完整版本: [已解决]当FTP中无文件时,_FTP_ListToArray报错的问题