Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#1

privaten Record über Getter heraus geben

  Alt 28. Jul 2016, 22:36
Delphi-Version: XE3
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?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat