最近写一个数据操作的方法时,发现读取byte数组总是莫名的报错代码如下:
procedure TForm35.btn3Click(Sender: TObject);
var
Mem: TMemoryStream;
pFile: Pointer;
nCount: Integer;
FileAry: array of Byte;
s: string;
s1: PChar;
begin
Mem := TMemoryStream.Create;
Mem.LoadFromFile('c:/SH201104011552_JS.bin');
Mem.Position := 0;
SetLength(FileAry, Mem.Size);
Mem.Read(FileAry, Mem.Size);
ShowMessage(IntToStr(LoadFilePoint(FileAry, Mem.Size, nCount)));
ShowMessage(IntToStr(nCount));
Mem.Free;
end;
在执行黑色字体的代码后,发现FileAry数据没有数据,感觉很奇怪,后来发现TMemoryStream的read方法的第一次参数
如果定位为array时,需要指向数据的初始地址:
正确的写法: Mem.Read(FileAry[0], Mem.Size);