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;