Ich hatte eigentlich gerade ein komplexes Problem beschrieben, konnte das aber jetzt kürzen.
(Testprojekt und Video von der ursprünglichen Frage könnte ich bei Interesse nachliefern)
Also im Kern ergibt sich folgendes:
Ich habe einen Record
Delphi-Quellcode:
PGuid = ^TGuid;
TGuid = record
private
fTS1: TDateTime;
fTS2: TDateTime;
fC: LongWord;
....
public
....
property AsString: String read get_AsString write set_AsString;
und Interfaces bzw. Klassen, die diesen als Eigenschaft benutzen:
Delphi-Quellcode:
IGuidObj =
interface
['
{4E5492DE-D248-40C8-8AED-EF9819C32FD6}']
function _get_Guid: TGuid;
procedure _set_Guid(
const aGuid: TGuid);
property Guid: TGuid
read _get_Guid
write _set_Guid;
end;
TGuidObj =
class(TInterfacedObject, IGuidObj)
protected
fGuid: TGuid;
function _get_Guid: TGuid;
procedure _set_Guid(
const aGuid: TGuid);
public
constructor Create;
overload;
virtual;
constructor Create(aGuid: TGuid);
reintroduce;
overload;
virtual;
destructor Destroy;
override;
property Guid: TGuid
read _get_Guid
write _set_Guid;
end;
Das Problem ist, dass der Getter jetzt eine KOPIE des Records heraus gibt und ich so nicht direkt in das private Feld schreiben kann.
Delphi-Quellcode:
function TGuidObj._get_Guid: TGuid;
begin
Result := fGuid;
end;
Wie kann ich Result direkt auf fGuid zeigen lassen?
Ich kenne mich mit Pointern^ auf Records zu wenig aus...
Sollte doch aber sicher machbar sein - oder?