当服务器 文件很大 超过2G(不过我没有测试大于多少就会有问题)我这里测试 是 大小为4.34G的一个iso文件 返回值为 300多M 后来我找几个大文件测试了下
2-3G 返回 -1 也就是得不到
大于4G 返回好像一个随机值 大小在 3、4百M
不知道现在 最新版本 是多少 有没有改bug
2-3G 返回 -1 也就是得不到
大于4G 返回好像一个随机值 大小在 3、4百M
不知道现在 最新版本 是多少 有没有改bug
解决方案 »
- ACCESS+ADOQuery查询和取字段内容问题
- 随机数的产生
- 新手入門!!
- 我装了delphi7,可是控件面板中并没有QReport组件,请问怎么才能添加此组件?
- 求一表达式?
- 关于按钮(简单送分了!)
- 急急急!高手帮忙,怎么在DELPHI中导出一指定KEY的注册表文件(*.reg),不是用savekey,他只能生成一二进制文件,不胜感激!
- 大家在做进销存时,商品零售价应放在商品基本信息表上还是放在入库,出库表上?
- 与winNT有关的delphi问题
- 数组定位的问题,谢谢!
- ClientDataSet如何获取ServerSocket上的一个Memo里的字符串信息?
- 请教WebBrowser问题
你可以跟踪呀 size 这个函数 返回值就是 int64 的
但是 值不对
声明的地方:
function Size(const AFileName: String): Integer; //修改Integer-->Int64
实现的地方:
function TIdFTP.Size(const AFileName: String): Integer; //修改Integer-->Int64
var
SizeStr: String;
begin
result := -1;
if SendCmd('SIZE ' + AFileName) = 213 then begin {do not localize}
SizeStr := Trim(LastCmdResult.Text.Text);
IdDelete(SizeStr, 1, IndyPos(' ', SizeStr)); // delete the response {do not localize}
result := StrToIntDef(SizeStr, -1); //修改StrToIntDef-->StrToInt64Def
end;
end;同样在把IdFTP.Size()得到的值,赋给你的自定义变量时,也需要Int64类型。这样只要文件不超过{(2的63次方)-1 }都是没问题的。
function TIdFTP.Size(const AFileName: String): Int64;
var
SizeStr: String;
begin
Result := -1;
if SendCmd('SIZE ' + AFileName) = 213 then begin {do not localize}
SizeStr := Trim(LastCmdResult.Text.Text);
IdDelete(SizeStr, 1, IndyPos(' ', SizeStr)); // delete the response {do not localize}
Result := IndyStrToInt64(SizeStr, -1);
end;
end;
已经是int64类型 可还是返回错误 所以来发问 !
而且不同文件也一样返回-1,估计是因为sendcmd <> 213,但没办法去证明