Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#28

Re: Funktionsrückgabe freigeben

  Alt 11. Mär 2007, 11:30
Hallo,

Zitat von Angel4585:
Wird da nicht gleichzeitig auch Image1.Picture.Graphic freigegeben?
Nein, intern wird beim Schreibzugriff auf die Eigenschaft Graphic eine neue TGraphic-Instanz angelegt, der dann mittels Assign() das übergebene Bild zugewiesen wird.

Zitat von inherited:
IMHO ja, besser wäre da "Assign"
Das kann ins Auge gehen, da die Eigenschaft Graphic durchaus den Wert NIL enthalten kann.

Zitat von xaromz:
Das lässt sich natürlich nicht ohne eine Hilfsvariable erledigen.
Als BDS-Nutzer könntest du das auch mit einer helper class erledigen:

Delphi-Quellcode:
type
  TObjectHelper = class helper for TObject
    function Instance: TObject;
  end;

function TObjectHelper.Instance;
begin
  Result := Self;
end;

procedure TForm1.Button1Click (Sender: TObject);
begin
  // Icon aus Exe auslesen und Image zuweisen
  with GetFileIcon('C:\Test.ico') do
  try
    Image1.Picture.Graphic := TIcon(Instance);
  finally
    Free;
  end;
end;
Die helper class könnte man noch in eine Bibliotheks-Unit auslagern und wiederverwenden. Die Lösung wirkt aber etwas unsauber und erreicht nicht die Eleganz des Chrome-Konstrukts. Letztlich spart sie nur etwas Schreibarbeit.

Gruß Hawkeye
  Mit Zitat antworten Zitat