当我上传大于2G得文件时put方法就报错:no data to trasfer 小于2G得没事
这是为什么呢?难到是bug?
大家给个解决办法呀 我得文件都是DVD盘制作得iso文件所以很大另一个问题:
我搜索一个文件夹得全部文件 不包括下一级文件夹得文件
 ...
dim s as string
SearchResult: TSearchRec;
......
s:=Format('%.2f',[SearchResult.Size/(1024*1024)])当文件比较大时 (大约2G左右)s返回'-XX' 而且数值xx和实际文件大小不同。
文件小得没有问题。
请大家帮忙 

解决方案 »

  1.   

    还没解决呢
    我一上传大文件>2G得就报错:no data to read
    为什么?
      

  2.   

    可以的~
    官方版本Indy 9.0.18需要使用Int64
    TSearchRec不支持的~
    直接用Win32 API才OK
      

  3.   

    TSearchRec也可以,但是要用
    TSearchRec.FindData.nFileSizeHigh和nFileSizeLow两个域来读文件大小。
      

  4.   

    哦原来时bug 我下载 了indy 10.0.5 
    请大哥明示win32 api 获取文件大小属性方法关于TSearchRec  我是这样解决得 
    var s:longword;s:=SearchResult.Size取s得值
      

  5.   

    var
      s: int64;
    // ...
    s := int64(SearchResult.FindData.nFileSizeHigh) shl 32 + SearchResult.FindData.nFileSizeLow;
      

  6.   

    谢谢现在问题是我再idftp 得onwork , onworkbegin 里设置了gauge进度条显示上传进度
    现在当我传大文件时 该过程
    procedure TfrmMirrorSend.ftpClientWorkBegin(Sender: TObject;
      AWorkMode: TWorkMode; const AWorkCountMax: INTEGER);AWorkCountMax: INTEGER是integer类型会溢出得。
    如何解决这个问题呢?我下载了upp_Indy_snapshot_2006-9-9.rar 不知能否解决这个问题。
      

  7.   

    请大虾指点如何查看delphi 7安装自带得indy是哪个版本
      

  8.   

    用最新的Indy 9.0.18
    修改4个相关文件的Integer为Int64
    即可支持>2GB的文件
      

  9.   

    我下载了indy10.1.5_d7.exe  和indy9.0.18_d7.exe 我装后着时显示for d6 ?
    我得是delphi  7.0装前者是不是更好,安装之前要卸载delphi 自带得indy 嘛?如何卸载呢我装了后者后发现onwork事件 还是integer类型得。??
      

  10.   

    Gauge只是一个比例问题,你自己缩放一下就可以了。
    就是累计传送的字节 / 总量 * 100,再取整。(假设gauge的最大值设置为100)
    在OnWork中,AWorkCount是指本次已传送的字节数,为什么还是integer呢?因为Win32上缓冲区最大也只能开到2GB(实际比这个还要小一点),当然不可能一次发送超过2GB的数据了,那需要多次发送。
      

  11.   

    另外,如果你有使用Indy9的项目,最好不要切换到Indy10,变化很大(为了兼容.net的缘故)。
      

  12.   

    楼上朋友:是这样得我在idftp onworkbegin 事件中procedure TfrmMirrorSend.ftpClientWorkBegin(Sender: TObject;
      AWorkMode: TWorkMode; const AWorkCountMax: INTEGER);
    begin
    ggProgress.maxvalue:=AWorkCountMax;
    end;
    当put发生时触发此事件 AWorkCountMax获得文件大小
    但AWorkCountMax是integer类型,当传送>2G时就报错溢出了 因为他只能达到20亿。
    如何处理呢?
      

  13.   

    那你下一个indy9.0.19_d7,估计修正了。
      

  14.   

    都说了~
    修改Indy 4个源文件
    全部更改为Int64接口,包括函数的实现部分,(提示: ReadStream和WriteStream是关键)修改后的Indy,支持>4GB的文件都是OK的至于如何修改Indy,那就自己搞吧~
      

  15.   

    听大哥得话自己搞定了 该了3个pas  int64就ok了
    结贴了谢谢兄弟们!
      

  16.   

    对 了如何卸栽 delphi  自带得indy组件包括 安装路径内容呢?
    用delphi 安装盘可以嘛 ?