procedure TForm1.Button1Click(Sender: TObject);
var
fs:TMemorystream;
t:dword;
begin
t:=gettickcount;
fs:=TMemorystream.Create;
fs.Size:=int64(1024*1024*1024)*2;
//FillChar(fs.memory^,fs.size,#$FF);
fs.SaveToFile('c:\zz.bin');
button1.Caption:=inttostr(gettickcount-t);
end;
如果大于1G就提示: Overflow in conversion or arithmetic operation
如果强制把大小设置为Int64时,编译不报错,但运行时报错:Range check error. 作者: zhgc 时间: 2022-7-16 14:25
//二进制存文件
function SaveFileByByteAr(AByteAr: TByteDynArray; AFileName: string): Boolean;
var
LBuf: TMemoryStream;
begin
Result := false;
LBuf := TMemoryStream.Create;
try
LBuf.SetSize(Length(AByteAr));
Move(AByteAr[0], LBuf.memory^, Length(AByteAr));
LBuf.Seek(0, soFromBeginning);
LBuf.SaveToFile(AFileName);
Result := true;
finally
LBuf.Free;
end;
end;
//流转二进制数据
function GetByteArByStream(AStream: TMemoryStream): TByteDynArray;
var
Len: Integer;
begin
Len := AStream.Size;
SetLength(Result, Len);
Move(AStream.Memory^, Result[0], Len);
end;