¿Cómo calcular el tamaño?
Opción 1: Si solo quieres el número de elementos
Opción 2: Si necesitas el tamaño en bytes
Código Delphi
[-]
SizeInBytes := Length(NifEnt) * SizeOf(TNifV2Ent);
¿Cómo guardar NifEnt en un TMemoryStream?
Si los campos son datos simples (integer, double, etc), podés hacer algo así:
Código Delphi
[-]var
stream: TMemoryStream;
begin
stream := TMemoryStream.Create;
try
stream.WriteBuffer(NifEnt[0], Length(NifEnt) * SizeOf(TNifV2Ent));
stream.SaveToFile('nifent.dat');
finally
stream.Free;
end;
end;
⚠️ Si el record contiene strings u objetos, esto no sirve, porque los strings son punteros. En ese caso necesitás serializar manualmente cada campo.
🛠 Alternativa para datos complejos (con strings)
Si TNifV2Ent contiene string, tendrías que escribir algo así:
Código Delphi
[-]for i := 0 to High(NifEnt) do
begin
WriteLnToStream(stream, NifEnt[i].Nif);
end;
Y para escribir un string a un stream:
Código Delphi
[-]procedure WriteLnToStream(Stream: TStream; const S: string);
var
len: Integer;
begin
len := Length(S);
Stream.WriteBuffer(len, SizeOf(len));
Stream.WriteBuffer(PChar(S)^, len * SizeOf(Char));
end;