Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Unterschiedliche Größe eines Records (D4 vs. D9) (https://www.delphipraxis.net/65496-unterschiedliche-groesse-eines-records-d4-vs-d9.html)

Baeuerle 17. Mär 2006 10:59


Unterschiedliche Größe eines Records (D4 vs. D9)
 
Hallo zusammen,

ich habe gerade ein Delphi4 Projekt, welches mit typisierten Dateien arbeitet, nach Delphi 9 portiert.

So jetzt habe ich das Problem, dass die Dateien nicht mehr sauber gelesen werden weil sich die Größe des Records verändert hat. Bei gleichem Aufbau.

type TStruct = record
.
.
.
end;

D4: SizeOf(TStuct) = 600
D9: SizeOf(TStuct) = 594

Hat jemand eine Ahnung woran das liegen kann???

Danke Baeuerle

mkinzler 17. Mär 2006 11:02

Re: Unterschiedliche Größe eines Records (D4 vs. D9)
 
Poste mal die komplette Definition des Records

himitsu 17. Mär 2006 11:20

Re: Unterschiedliche Größe eines Records (D4 vs. D9)
 
Spontan kann man d nur vermuten, daß es sich nicht um einen Packed-Record handelt und die Elemente jeweils anders ausgerichtet werden :)

Baeuerle 17. Mär 2006 11:26

Re: Unterschiedliche Größe eines Records (D4 vs. D9)
 
Es geht um TUserOptions. Musste leider ein paar Zeilen Code dafür anhängen

Delphi-Quellcode:
TCopyOptions = record
      CopyDirection,
      Marcation : Byte;  
      end;

TCopyStrategie = record
      BothFldr,  
      OnlySrcFldr,
      OnlyDestFldr,
      OnlySrcFile,
      OnlyDestFile,
      SrcIsNewer,
      DestIsNewer,
      SrcIsBigger,
      DestIsBigger,
      ChangedSinceLast : TCopyOptions;
      end;

TColorOpt = record
      FileColor,  
      FldrColor,  
      FontColor : TColor;
      end;

TUserOptions = record
      ColorOpt : TColorOpt;
      PorpertyGrouped:Boolean;
      FldrOpened : Byte;                      
      Summer : Boolean;
      DEF_STRAT_MAN : TcopyStrategie;
      DEF_STRAT_AUT : TcopyStrategie;
      MaxPtk: Integer;
      Version: Integer;
      NTFS: Boolean;
      bufferFree: Boolean;
      DelArchivDays: Integer;
      SchredderArchiv: Boolean;
      bBuffer_1: Boolean;
      bBuffer_2: Boolean;
      iBuffer_1: Byte;
      iBuffer_2: Byte;
      iBuffer_3: Integer;
      iBuffer_4: Integer;
      sBuffer_1: Shortstring;
      sBuffer_2: Shortstring;
      end;

Bernhard Geyer 17. Mär 2006 11:31

Re: Unterschiedliche Größe eines Records (D4 vs. D9)
 
Spontan würde ich sagen: Probier mal SizeOf(Boolean)

Baeuerle 17. Mär 2006 11:37

Re: Unterschiedliche Größe eines Records (D4 vs. D9)
 
Ist beides 1 Byte !!!

Habe es schon versucht. Erst TUserOptions hat unterschiedliche größen !!
Die anderen Reords sind identisch

Baeuerle 17. Mär 2006 11:38

Re: Unterschiedliche Größe eines Records (D4 vs. D9)
 
@himitsu

richtig ich arbeitete mit Record und nicht mit Packed record.

Was kann ich jetzt machen dass die Dateien unter D9 auch sauber gelesen werden können???

NormanNG 17. Mär 2006 11:42

Re: Unterschiedliche Größe eines Records (D4 vs. D9)
 
Hi,


hat das evtl. was mit den Compiler-Einstellungen zur Recordausrichtung zu tun?

aus der Delphi-Hilfe:
Zitat:

Ausgerichtete Record-Felder
Richtet Elemente in Strukturen gemäß der angegebenen Anzahl von Bytes aus (1, 2, 4 oder 8 ). Wählen Sie den gewünschten Ausrichtungstyp in der Dropdown-Liste. Entspricht dem Schalter {$A}. Hinweis: In früheren Delphi-Versionen, konnte diese Option an- und ausgeschaltet werden. Auswahl 1 ist äquivalent zu Aus und 8 ist äquivalent zu An.

Baeuerle 17. Mär 2006 11:48

Re: Unterschiedliche Größe eines Records (D4 vs. D9)
 
BINGO :thumb:

Das sieht gut aus danke.

himitsu 17. Mär 2006 12:42

Re: Unterschiedliche Größe eines Records (D4 vs. D9)
 
Ansonsten verwende halt zukünftig Packed-Records, wenn es unbedingt auf die Größe/Ausrichtung ankommt.
Und falls dennoch unbedingt (z.B. wegen der geschwingigkeit, oder zur Kompitabilät) eine bestimmte Ausrichtung benötigt wird, dann halt mal kein Packed und per {$A...} was passendes auswählen, oder doch per Packed und mit DummyBytes die Lücken aufstocken ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz