首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi如何读写二进制文件

2012-03-03 
delphi怎么读写二进制文件?代码如下:variFileHandle:IntegeriFileLength:IntegeriBytesRead:IntegerBuf

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);

热点排行