Thema: Delphi Zeiger auf array

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: Zeiger auf array

  Alt 13. Mai 2006, 16:52
Das mit der Länge liegt doch daran, daß in einem statischen Array keine Länge gespeichert wird, also es ist da unmöglich die Länge rauszubekommen.

Schau doch einfach mal in den generierten ASM-Code rein ... bei den Statischen Arrays wird LENGTH und HIGH nicht über eine Funktion ermittelt, sondern der Wert ist hardgecodet.


Entweder du nimmst 'nen Record, wo die Länge mit eingetragen wird, oder halt dynamische Arrays, welche ja eine Längenangebe mit integriert haben.

Beispiel für die Recordvariante:
Delphi-Quellcode:
Palette4 = packed Record
  Len: Integer;
  Data: Array[0..15] of Irgendwas;
End;
Palette4 = packed Record
  Len: Integer;
  Data: Array[0..255] of Irgendwas;
End;
dann mußt du halt einfach Len ganz am Anfang auf 16/256 setzen.

Dann kannst du damit über einen Pointer auf alles zugreifen
Delphi-Quellcode:
PaletteX = packed Record
  Len: Integer;
  Data: Array[0..255] of Irgendwas; // für 255 mindestendens den größtmöglichen Wert
End;
PPaletteX = ^PaletteX;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat