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.