首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 用 FileRead和 FileWrite读写文件时, 如果字节数过大时的问题. [已结贴,结贴人:twfldy]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-26 13:48:07 楼主
    procedure TForm1.Button2Click(Sender: TObject);
    var
      h1,h2: Thandle;
      buf: ^Byte;
      size: cardinal;
      tmplen: int64;
    begin
      h1 := fileOpen(ExtractFilepath(Paramstr(0)) + '0.bmp', fmOpenRead);
      h2 := FileCreate(extractFilePath(paramStr(0))+'0_out.bmp');
      if (h1 = -1) or (h2 = - 1) then begin
        if h1 <> -1 then fileClose(h1);
        if h2 <> -1 then fileClose(h2);
        raise Exception.Create('文件打开失败!');
      end;

      size := fileseek(h1, 0, 2);  //跟踪 size 得到的长度没错误
      fileseek(h1, 0, 0);          //复位

      buf := AllocMem(size);
      showmessage('源文件长度:' + intToStr(size) + '字节');

      tmplen := fileRead(h1, buf, size);
      showmessage(intToStr(tmplen) + '字节读取');
      tmplen := filewrite(h2, buf, size);
      showmessage(intToStr(tmplen) + '字节写入');

      fileclose(h1);
      fileclose(h2);
      freemem(buf, size);
    end;

    该部代码运行时.  源文件的长度测试正确!
    读取时失败,提示读取-1字节, 写入也是提示 -1字节.
    请教大虾们是什么原因?
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-26 13:58:021楼 得分:10
    fileRead(h1, buf^, size);
    filewrite(h2, buf^, size);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-26 14:00:342楼 得分:10
    ^Byte 没用过

    我是用 Pointer类型的

    var
      Buffer: Pointer;
    begin

      GetMem(Buffer, Size);
      try
        fileRead(hFile, Buffer^, size); 
        filewrite(hFile, Buffer^, size);   
      finally
        FreeMem(Buffer);
      end;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-26 14:02:023楼 得分:0
    谢谢! 解决了!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-26 14:02:244楼 得分:0
    非常感谢!
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved