Einzelnen Beitrag anzeigen

Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#24

Re: Funktionsrückgabe freigeben

  Alt 11. Mär 2007, 00:10
Hallo xaromz.

Schon lange nichts mehr von dir gehört! Es sei denn, in VB-Kreisen gibt es einen anderen xaromz!? Ansonsten: *freu*

Zitat von xaromz:
Hallo,
Das ist ja auch klar. Das TMeinObjekt wird zwar freigegeben, das darin erstellte TIcon aber nicht. Du hast also ein Speicherleck erzeugt. Wenn Du im Destruktor von TMeinObject das TIcon aufräumst, steigt auch der Speicher nicht an.
Danke! Genau das habe ich gemeint!


@Angel4585

Willst du dich jetzt an dem "Unterobjekt" festbeißen? Dann solltest du wohl einen eigenen Thread aufmachen! In diesem Thread geht es um das komplette Objekt einer Funktions-Rückgabe!

Nehmen wir das Beispiel von ganz am Anfang und gestalten es der Klarheit wegen noch ein wenig einfacher:

Delphi-Quellcode:
function GetFileIcon(AFileName: string): TIcon;
begin
  Result := TIcon.Create;
  Result.LoadFromFile(AFileName);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Icon aus Exe auslesen und Image zuweisen
  Image1.Picture.Graphic := GetFileIcon('C:\Test.ico');
end;
Wie willst du das mit dem "with try finally free end" lösen? Und bitte, ... BITTE! nicht wieder über irgendwelche Unterobjekte!

Guido.
  Mit Zitat antworten Zitat