Longint optager 6 bytes

Tags:    delphi

Hej

Jeg har en record, der ser ud som følger:

TRCat=record
Name:string[20];
Pos0,Pos1:string[8];
Owner:string[20];
Date:longint;
Bands:word;
end;

Jeg har en gammel typed file, der er skrevet med ovenstående record i TP7 og derved er størrelsen 66 bytes. Helt efter bogen.

Men laver jeg præcis den samme record i Delphi 7 så er størrelsen 68 bytes. Problemet synes at ligge omkring Cat.Date, der burde være en 4-bytes sag, men når den er inde i Cat-recorde'n så fylder den 6 bytes! Checker jeg Cat.Date med SizeOf så er den kun 4 bytes.

Hvad kan jeg gøre galt for i både TP7 og Delphi 7 burde resultatet være 66 bytes.

På forhånd tak
Mik



2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
hvis du laver din record om til en packed record får du præcis 66 bytes. helt efter bogen ;) jeg mener det er noget med at en packed record er det samme som en tp-record

Jeppe Johansen
Jeppesoftware@hotmail.com



Hej Jeppe

Jeg har prøvet med "Record Field Alignment" sat til 1, svarende til {$A-}, og så får jeg som du også skriver 66 bytes, i stedet for de 68 bytes (RFA=8, $A+). Så dit svar virker.

Jeg forstår godt RFA-princippet og fordelene i hukommelsen. Men umiddelbart synes jeg, at det er noget bras når det vedrører en fil som man, måske, ikke kender om den er lavet med RFA og fra hvilket program. I mine øjne burde en fil være 100% tro mod de grundlæggende byte-størrelser.

Tak for hjælpen
Mik



t