Ohne alles unwichtige sieht meine Klasse so aus:
Code: Alles auswählen
TMyClass = class
private
FItems: array of TMyRecord;
protected
function GetItem(Index: Integer): TMyRecord;
public
property Items[Index: integer]: TMyRecord read FItems[Index] write FItems[Index]; // kompiliert nicht
property Items[Index: integer]: TMyRecord read GetItem write SetItem; // geht nicht - erzeugt nur Kopie
end;
Ich weiß dass man dem ganzen ausweichen kann, in dem man eine Klasse statt einem Record benutzt. Das würde ich aber gerne lassen, da eine Klasse bei sehr vielen Daten sehr viel langsamer im Befüllen ist (hatte vorher eine Lösung mit einer Klasse und habe Tests gemacht).
Desweiteren wäre es natürlich auch denkbar die FItems pubic zu machen und direkt zu bearbeiten, aber das möchte ich auch nicht.
Gibt es eine Möglichkeit den Array of Record irgendwie über eine Property anzusprechen? Gerne auch über eine Setter oder Getter Methode die das hinbekommt ohne das Problem dass ich hatte (Record wird nur kopiert, ich erhalte keine Referenz um die Daten direkt zu ändern).