Hello, I have the following code:
TParmData = record
FormRect: TRect;
sName : AnsiString;
age : Integer;
male : Boolean;
end;
....
ClearStream: TMemoryStream;
ParmData: TParmData;
slServers: TStringList;
....
ParmData.FormRect := Bounds(Form1.Left, Form1.Top, Form1.Width, Form1.Height);
ParmData.sName := 'ééààèèüüüüü abcdefghijklmnopqrstuvwxy 40........50' +
'Turner ==^<=abcdefghijklmnopqrstuvwxy 40........50' +
'Turner ==^<=abcdefghijklmnopqrstuvwxy 40........50';
ParmData.age := 45;
ParmData.male := False;
Writing file: ..............
ClearStream.Write(ParmData, SizeOf(ParmData));
ClearStream.WriteAnsiString(slServers.DelimitedText);
ClearStream.Position := 0;
ClearStream.SaveToFile(sFilename);
Reading file: ............
if FileExists(sFilename) then begin
ClearStream.Clear;
ClearStream.LoadFromFile(sFilename);
ClearStream.Position := 0;
ClearStream.Read(ParmData, SizeOf(ParmData));
slServers.DelimitedText := ClearStream.ReadAnsiString;
...
Aftert reading disk file, every data are OK, and I get:
------------------------------------------------------
sName length = 161 OK. Increase of size was done by Utf-8 encoding.
SizeOf(ParmData) = 32 ???????
Length(slServers.DelimitedText) = 147 OK. Same remark.
Disk Record = 179 (0xB3) without BOM ???????
Encoding record: utf-8, W10.
Disk record contains the name (150 char or 161 bytes), a text (143 char or 147 bytes) from TStrings, a TRect (16), an Integer (4) and a boolean (1).
Total = 161 + 147 + 16 + 4 + 1 = 329 bytes ??????
Record size: 179 bytes
I don't understand these numbers. I search to find in which format, disk record was written.
I did'nt find it. Has somebody an idea ?