AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Unterschiedliche Größe eines Records (D4 vs. D9)
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Baeuerle · begonnen am 17. Mär 2006 · letzter Beitrag vom 17. Mär 2006
Antwort Antwort
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#1

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

  Alt 17. Mär 2006, 11:59
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 17. Mär 2006, 12:02
Poste mal die komplette Definition des Records
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 17. Mär 2006, 12:20
Spontan kann man d nur vermuten, daß es sich nicht um einen Packed-Record handelt und die Elemente jeweils anders ausgerichtet werden
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#4

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

  Alt 17. Mär 2006, 12:26
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;
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#5

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

  Alt 17. Mär 2006, 12:31
Spontan würde ich sagen: Probier mal SizeOf(Boolean)
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#6

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

  Alt 17. Mär 2006, 12:37
Ist beides 1 Byte !!!

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

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#7

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

  Alt 17. Mär 2006, 12:38
@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???
  Mit Zitat antworten Zitat
NormanNG

Registriert seit: 1. Feb 2006
294 Beiträge
 
Delphi 2007 Professional
 
#8

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

  Alt 17. Mär 2006, 12:42
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.
  Mit Zitat antworten Zitat
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#9

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

  Alt 17. Mär 2006, 12:48
BINGO

Das sieht gut aus danke.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#10

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

  Alt 17. Mär 2006, 13:42
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 ^^
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 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