![]() |
Result := Text, heißt dass @Result = @Text
Also ich mache in eine Funktion vereinfacht das:
Delphi-Quellcode:
Kann es nun sein, dass Result = nil ist, wenn ich Text freigebe? Also das sozusagen Result und Text auf die gleiche Adresse zeigen, und beide nil sind, wenn ich eins von beiden Freigebe?
function getSth : TStrings;
var Text : TStrings; begin Text := TStringList.Create; [...] Result := Text; Text.Free; end; Oder stimmt das nicht? PS: Ich habe gesucht, aber irgendwie waren die Ergebnisse nicht passend, oder mir fielen nicht die Parameter ein. PPS: Ich habe mich noch nicht so richtig mit Zeigern beschäftigt, aber ich hoffe dass "@Bla" auf die Adresse von "Bla" zeigt :D (Titeltext ist ja beschränkt ^^) |
Re: Result := Text, heißt dass @Result = @Text
Du darfst die Instanz der Klasse nicht wieder freigeben, wenn du sie als Rückgabewert nutzen willst. :)
Mit
Delphi-Quellcode:
setzt du den Pointer um, so dass jetzt auf die erstellt Instanz der Klasse verwiesen wird.
Result := Test;
|
Re: Result := Text, heißt dass @Result = @Text
Also war meine Vermutung richtig.
Also müsste ich "Result.text := Text.text" machen... Okaydokay |
Re: Result := Text, heißt dass @Result = @Text
Er kann sich aber vorher auch einfach die Daten kopieren und dann die vorherige Klasse freiegeben aber macht ja nicht wirklich Sinn. Da durch das Freigeben einer der Beiden sowieso beide weg wären, daher einfach nicht freigeben und wenn du irgendwann das result freigibst ist ehh alles weg oder nicht?
|
Re: Result := Text, heißt dass @Result = @Text
Zitat:
Also entweder in deinem Code
Delphi-Quellcode:
oder
Result := Text;
Delphi-Quellcode:
Result := TStringList.Create;
|
Re: Result := Text, heißt dass @Result = @Text
Also ich habe mir jetzt ein Objekt gespart:
Delphi-Quellcode:
Wenn wird jetzt "Result" wieder freigegeben?
function GetText : TStrings;
begin Result := TStringList.Create; [...] end; |
Re: Result := Text, heißt dass @Result = @Text
Zitat:
|
Re: Result := Text, heißt dass @Result = @Text
Hallo,
Zitat:
Delphi-Quellcode:
Gruß
procedure x;
var S: TStrings; begin try S := GetText; // irgendwas machen finally S.Free; end; end; xaromz |
Re: Result := Text, heißt dass @Result = @Text
Aso ;)
Gut ^^ Dann ist das hier abgeschlossen ;) PS: Eins interessiert mich noch: Wäre "Result := Text" = "@Result := @Text"? |
Re: Result := Text, heißt dass @Result = @Text
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz