Einzelnen Beitrag anzeigen

ernschd

Registriert seit: 16. Jan 2008
166 Beiträge
 
Delphi XE8 Professional
 
#1

FillChar und (packed) Records?

  Alt 5. Mai 2009, 10:41
Hallo,

ich bin grade dabei, ein altes Pascal-Programm nach Delphi zu portieren.
Darin werden mittels der Move-Routine Daten byteweise verschoben.
Leider sind in Delphi Record-Typen anscheinend standardmäßig "variabel" in der Byte-Größe, wenn das Schlüsselwort packed nicht verwendet wird, von daher erzeugt der Move allerhand lustige Ergebnisse, jedoch nicht das, was ich will.

Muss ich mit packed arbeiten bzw. mit der Compiler-Direktive {$A-}, oder gibts noch eine andere Lösung?

Des weiteren habe ich noch das Problem, dass ein FillChar auf den Pointer des Records unter Delphi nicht funktioniert, zumindest auf manche Typen darin.
Delphi-Quellcode:
New(Z_N);
{Egal ob}
FillChar (Z_N^, SizeOf (Z_N^), ' ');
{oder} 
FillChar (Z_N^, SizeOf (Z_N^), #0);
In meinem Fall ist dann Z_N^.A (ein Integer) nicht leer oder Null, obwohl es zuvor initialisiert wurde. Liegt das an packed?

Und wieso finde ich in der Hilfe von Delphi 2005 kaum was zu diesen Thema? Die Hilfe von Delphi 7 ist meiner Meinung nach wesentlich besser.

Vielen Dank.

Ernschd
  Mit Zitat antworten Zitat