Gibt es nicht ... ein Record läßt sich nicht nachträglich verändern.
Es ist grundsätzlich nicht möglich irgendwelche Typen in ihrer Größe nachträglich zu verändern.
Selbst bei Klassen geht sowas nicht, abgesehn von den Class-Helpern, aber diese fügen nur etwas ab der aktuellen Position hinzu, ohne vorher Deklariertes nachträglich zu ändern.
Genauso ist es bei Forward-Deklararionen.
Das Einzige, welches möglich wäre, ist eine nachträgliche Typkonvertierung,
aber dabei muß man höllisch aufpassen, daß man am Speichermanagement nicht zerschießt.
Delphi-Quellcode:
type
TMyBasisRecord = record
...
variabel: record
data: array[0..1023] of byte;
end;
end;
TMyChangedRecord = record
... // genau gleiche Deklaration, wie vorher
variabel: record
... // aber nicht mehr, als 1024 Byte (siehe andere Deklaration)
// und Strings, dynamische Arrays, Interfaces sind verboten,
// es sei denn man fügt genau an der Selben Stelle im Basis-Record
// einen Dummy von gleichem Typen ein
end;
end;
TMyAdditionRecord = record
... // aber nicht mehr, als 1024 Byte (siehe andere Deklaration)
// und Strings, dynamische Arrays, Interfaces sind verboten,
// es sei denn man fügt genau an der Selben Stelle im Basis-Record
// einen Dummy von gleichem Typen ein
end;
var X: TMyBasisRecord;
TMyChangedRecord(X)
TMyAdditionRecord(X.variabel)
Beim VirtualTreeView wird z.B. die Variante mit dem TMyAdditionRecord für das .Data-Attribut der Nodes angewendet.