Einzelnen Beitrag anzeigen

dpg123

Registriert seit: 13. Apr 2015
22 Beiträge
 
Turbo Delphi für Win32
 
#1

ARC-sichere Zuweisung von self an Interface-Variable

  Alt 23. Mai 2017, 16:54
Liebes Forum,

ich möchte die self-Referenz einer Interface-Variable zuordnen, ohne das automatic reference counting durcheinander zu bringen, bisher ohne Erfolg.

Hier der Code (Sinnhaftigkeit ist erstmal egal):

Delphi-Quellcode:
type

  IRequest = interface(IInterface)
  ['{AA14B3B9-9874-4E25-80BC-3C5A9A301ABC}']

    function get(): Extended;

  end;


  TRequest = class(TInterfacedObject, IRequest)

    strict private

      var

        requestValue: IRequest;

    public

      function get(): Extended;

      constructor create();

  end;

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TRequest }

constructor TRequest.create;
begin

  inherited create();

// bei allen 3 Varianten gibts nen Memory Leak

  self.requestValue := Self;

// self.requestValue := Self as IRequest;

// self.requestValue := IRequest(self);

end;

function TRequest.get: Extended;
begin
  result := 0;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  lReq: IRequest;

begin

  lReq := TRequest.create;

end;
  Mit Zitat antworten Zitat