Genauer erklären?
Die
RTTI eines Records kann so beschrieben werden:
Delphi-Quellcode:
//RTTI eines Records
type PPropContent=^TPropContent;
TPropContent=record
//je ein dynamisches Element des Records
RecordData:ppointer;
//RTTI einer dynamischen Variablen innerhalb des Records
Position:cardinal;
//Position der Variablen im Record
end;
type PRecordData=^TRecordData;
//Zeiger auf RTTI
TRecordData=record
size:cardinal;
//Größe des Records insgesamt
PropCount:cardinal;
//Anzahl der dynamischen Komponenten
Content:
array[0..16737]
of TPropContent;
//max(content) liegt natürlich bei PropCount
end;
Im statischen Fall würde bei einem statischen Record dein dispose vom Compiler durch freemem ersetzt (die Größe kennt der Compiler ja)
In deinem speziellen Fall wird dispose aufgerufen und noch als zweiter Parameter ein Zeiger auf die
RTTI deines Records übergeben (typeInfo(TmyRecord): PRecordData).
In dieser
RTTI steht die Größe deines Records drinn (für Freemem) und noch die Anzahl dynamischer Elemente (bei dir ein Array)
Und dann kommt eine List (TPropContent) mit der Postion der Variable im Array und einen Zeiger auf die
RTTI dieser Variablen. Und genau dort schaut er jetzt und sieht, dass es ein Array ist und ruft dann finalizeArray auf.
Über Zeitprobleme würde ich dabei nicht reden und die bequeme Variante über das Array wählen. (Ansonsten könntest du ja gleich in C programmieren
)
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.