TMemoryStream cannot save stream size 3Gb
In the current dev version, in classesh.inc, we have
TStream = class(TObject)
...
public
function Read(var Buffer; Count: Longint): Longint; virtual; overload;
function Write(const Buffer; Count: Longint): Longint; virtual; overload;
procedure ReadBuffer(var Buffer; Count: Longint);
procedure WriteBuffer(const Buffer; Count: Longint);
You see that WriteBuffer has Longint, so it cannot save stream size of 3Gb. WriteBuffer calls this code:
function TMemoryStream.Write(const Buffer; Count: LongInt): LongInt;
Var NewPos : PtrInt;
begin
...
end;
Demo attached. You will get zero-sized file on Ubuntu x64.
Edited by Alexey Torgashin