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.
//以上就是我的代码,唉!
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.
//以上就是我的代码,唉!
简单多了!
试试吧!
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;
而且你采用一个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.
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;