delphi怎么读写二进制文件?
代码如下:
var
iFileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
Buffer: PChar;
i: Integer;
str:String;
begin
iFileHandle := FileOpen( 'C:\test.t ', fmOpenRead);
iFileLength := FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
Buffer := PChar(AllocMem(iFileLength + 1));
iBytesRead := FileRead(iFileHandle, Buffer, iFileLength);
FileClose(iFileHandle);
for i := 0 to iBytesRead-1 do
begin
str := str + IntToStr(Integer(Buffer[i]));
end;
end;
其他试了tmemorystream啥的,总也不对!一个一个读可以,整个读总不行,是不是没设成二进制模式,遇到结束符了?
[解决办法]
http://www.moon-soft.com/program/bbs/readelite1751.htm
[解决办法]
var
iFileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
Buffer: array of Byte;
i: Integer;
str:String;
begin
iFileHandle := FileOpen( 'C:\test.t ', fmOpenRead);
iFileLength := FileSeek(iFileHandle, 0, 2);
FileSeek(iFileHandle, 0, 0);
SetLength(Buffer, iFileLength);
iBytesRead := FileRead(iFileHandle, Buffer[0], iFileLength);
FileClose(iFileHandle);
str := ' ';
for i := 0 to iBytesRead - 1 do
begin
str := str + IntToStr(Buffer[i]);
end;
ShowMessage(str);
Buffer := nil;
end;
[解决办法]
iBytesRead := FileRead(iFileHandle, Buffer, iFileLength); <-- delphi 中用Buffer参数,不能直接传递指针,而是需要传递指针所指的位置。所以改成这样吧:
iBytesRead := FileRead(iFileHandle, Buffer^, iFileLength);