![]() |
Datenstruktur aus Delphi4 in Delphi7 übernehmen
Hallo Forum,
ich habe ein kleines Problem: Eine Datenstruktur die unter Delphi4 angelegt ist, muss in Delphi 7 weiterverarbeitet werden. Die Struktur ist aber nicht gleich groß, was beim Lesen und Schreiben logischerweiße zu Datenmüll führt. Hab irgendwo mal gelesen, dass ab einer bestimmten Delphi-Version die Records anderst angelegt werden, damit man schneller darauf zugreifen kann ?!?!???. Und mit dem Schlüsselwort packed könne man dies umgehen. Allerdings ist nun die Datenstruktur in Delphi7 mit packed kleiner und ohne packed größer als in Delphi4 und ich weiß nicht wirklich an was das liegt.... Vielleicht hat da einer von euch eine Idee. Vielen Dank für euere Mühe! ------- Datenstruktur -------
Delphi-Quellcode:
type TAnrede = (Herr, Frau);
type TStunde = (packed) record Dummy: array[0..11] of char; Std: array[0..14] of Extended; Art: array[0..14] of Integer; Stoerung: Boolean; end; type TDataStruct = (packed) record Nr: Integer; PersNr: Integer; Anrede: TAnrede; Geb: TDate; Name: string[50]; VorName: string[50]; Strasse: string[50]; Ort: string[50]; Job: string[50]; Tel: string[20]; Info1: string[50]; Info2: string[50]; Info3: string[50]; Eintritt: TDate; Austritt: TDate; WochenStd: Extended; UeberstdMax: Extended; Urlaub: Extended; SonderUrlaub: Extended; UrlaubErhalten: Extended; UrlaubVorjahr: Extended; UrlaubRest: Extended; Stoerung: Extended; Stunden: array[1..1240] of TStunde; LKZ: boolean; Picture: TPicture; end; SizeOf(TDataStruct) = 283.276 in Delphi4SizeOf(TDataStruct) = 288.288 in Delphi7 und mit packed 277.067 |
Re: Datenstruktur aus Delphi4 in Delphi7 übernehmen
Moin Giantics,
könnte an den Integer's liegen, die könnten in D4 und D7 unterschiedlich groß sein! Mußt dann unter D7 Smallint verwenden! |
Re: Datenstruktur aus Delphi4 in Delphi7 übernehmen
Integer waren schon bei Delphi4 32 Bit. Allerdings könnte es zum Beispiel an Extended, oder TDate oder auch an TAnrede liegen. Am besten du lässt dir mit einen einfachen Programm die Größe der einzelnen Datentypen ausgeben und dann wirst du schon sehen, wo da unterschiede sind.
Also einfach: ShowMessage(IntToStr(SizeOf(TDate))); ShowMessage(IntToStr(SizeOf(TAnrede))); . . . |
Re: Datenstruktur aus Delphi4 in Delphi7 übernehmen
Ich hab jetzt nochmal en bisschen rumprobiert und mir ist folgendes aufgefallen:
Wenn ich alle "Extended" und "TDate" durch "array[1..10] of char" ersetze, dann stimmt die Größe mit dem alten Delphi4 Wert überein, aber SizeOf(Extended) ist gleich SizeOf(TDate) ist gleich SizeOf(array[1..10] of char)! Das will mir jetzt nicht wirklich einleuchten :gruebel: |
Re: Datenstruktur aus Delphi4 in Delphi7 übernehmen
Gabs das nicht was mit der Ausrichtungsgröße von Records? :gruebel:
Der Compilerschalter {$ALIGNMENTSIZE <groesse>} oder so :?: mfG mirage228 |
Re: Datenstruktur aus Delphi4 in Delphi7 übernehmen
Zitat:
$A1: SizeOf(TDataStruct)=277 267 (wie packed) $A2: SizeOf(TDataStruct)=278 310 $A4: SizeOf(TDataStruct)=283 292 $A8: SizeOf(TDataStruct)=288 288 (wie normal) Delphi4: SizeOf(TDataStruct)=283 276 Eventuell muss ich es halt irgendwie mit array[1..10] of char umwandeln :cry: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz