procedure TForm1.Button1Click(Sender: TObject);
var filehandle,filesizes:integer;buffer:pchar;
begin
filehandle:=fileopen('c:\my documents\programs.txt',fmopenread);
filesizes:=fileseek(filehandle,0,2);
fileseek(filehandle,0,0);
Buffer := PChar(AllocMem(filesizes + 1));
fileread(filehandle,buffer,filesizes);
filehandle:=filecreate('c:\my documents\a.txt');
filewrite(filehandle,buffer,filesizes);
fileclose(filehandle);
fileclose(filehandle);
freemem(buffer);
end;
end.
//以上就是我的代码,唉!

解决方案 »

  1.   

    我是用filestream的
    简单多了!
    试试吧!
      

  2.   

    Var 
      S, T: TFileStream; 
    Begin 
      S := TFileStream.Create('programs.txt', fmOpenRead ); 
      T := TFileStream.Create('a.txt', fmOpenWrite or fmCreate ); 
      T.CopyFrom(S, S.Size ) ; 
      T.Free; 
      S.Free; 
    End; 
      

  3.   

    我没有测试,只是直接说一下而已!指出的地方可能错误,你修改一下看看?
    而且你采用一个FileHandle,简直是莫名其妙吧?
    procedure TForm1.Button1Click(Sender: TObject);
    var filehandle,filesizes:integer;buffer:pchar;
    begin
    filehandle:=fileopen('c:\my documents\programs.txt',fmopenread);
    filesizes:=fileseek(filehandle,0,2);
    fileseek(filehandle,0,0);
    Buffer := PChar(AllocMem(filesizes + 1));
    fileread(filehandle,buffer,filesizes);
                        ~~~~~~///改成Buffer^
    filehandle:=filecreate('c:\my documents\a.txt');
    filewrite(filehandle,buffer,filesizes);
                         ~~~~~~~///改成Buffer^
    fileclose(filehandle);  ////Close同一个Handle?应该把其中一个移动到FileCreate前面
    fileclose(filehandle);  ////否则前面的文件的句柄没有关闭!丢失了资源.
    freemem(buffer);
    end;
    end.
      

  4.   

    你有两个错误
    1: 这些函数不能读取大于64K的文件,programs.txt 不能大于64K
    2: filesize 在 运行了 fileread 后可能值会变掉procedure TForm1.Button1Click(Sender: TObject);
    var ReadBytes,filehandle,filesizes:integer;buffer:pchar;
    begin
    filehandle:=fileopen('c:\my documents\programs.txt',fmopenread); 
    filesizes:=fileseek(filehandle,0,2);
    fileseek(filehandle,0,0);
    Buffer := PChar(AllocMem(filesizes + 1));
    ReadBytes:=fileread(filehandle,buffer,filesizes); // filesize 值会变掉
    fileclose(filehandle);if ReadBytes >0 then
    begin
      filehandle:=filecreate('c:\my documents\a.txt');
      filewrite(filehandle,buffer,ReadBytes);
      fileclose(filehandle);
    end;freemem(buffer);
    end;