Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Funktion die TStrings ausgibt (https://www.delphipraxis.net/24255-funktion-die-tstrings-ausgibt.html)

Bronko 18. Jun 2004 13:41

Re: Funktion die TStrings ausgibt
 
Zitat:

Zitat von Touchdown
Man sollte von TStrings keine eigenen Instanzen bilden, nimm lieber TStringlist!

Zitat:

Zitat von Bronko
Wie es aber der Zufall so will bin ich von den TStrings auf die TStringList umgestiegen

http://io.philo.at/~hal/graphik/smileys/wink.gif

Steve 18. Jun 2004 13:44

Re: Funktion die TStrings ausgibt
 
Zitat:

Zitat von Luckie
Jetzt hast du aber ein Problem. wo gibst du das Objekt wieder frei? In der Funktion? dann kannst du es nicht zurückgegebn.

Ich weiß nicht, wie sinnvoll das ist, aber müsste es nicht z.B. folgendermaßen auch funzen?

Delphi-Quellcode:
function neueSL : TStringList;
begin
  result := TStringList.Create;
  result.Append('TEST');
END;


procedure TForm1.Button1Click(Sender: TObject);
VAR
  SL : TStringList;
begin
  SL := neueSL;
  showMessage(SL.text);
  SL.Free;
end;
Stephan

edit: tippfehler

lume96 18. Jun 2004 13:46

Re: Funktion die TStrings ausgibt
 
Zitat:

Zitat von Touchdown
Es ist doch kein Problem sich eine Funktion zu bauen die ein Objekt zurück gibt, man weiss schließlich was man tut und gibt es an geeigneten Stellen wieder frei. Es gibt nun mal auch Objekte die länger im Speicher bleiben sollen usw.

Hallo,
Tschuldigung, dass ich so reinplatze, aber wie gibt man ein Objekt wieder frei ?

Hatte vor kurzer Zeit ein ähnliches Problem ('ne Funktion die ein Bitmap zurück gibt). Hab's dann umgeschrieben, weil ich nicht wusste, wie ich das Bitmap ausserhalb der Funktion wieder frei geben kann.

Matze 18. Jun 2004 13:47

Re: Funktion die TStrings ausgibt
 
Delphi-Quellcode:
Objekt.Free;
oder
Delphi-Quellcode:
FreeAndNil(Objekt);
Wie Luckie schon sagte. ;)

Luckie 18. Jun 2004 13:51

Re: Funktion die TStrings ausgibt
 
Zitat:

Zitat von Steve
Ich weiß nicht, wie sinnvoll das ist, aber müsste es nicht z.B. folgendermaßen auch funzen?

Delphi-Quellcode:
function neueSL : TStringList;
begin
  result := TStringList.Create;
  result.Append('TEST');
END;


procedure TForm1.Button1Click(Sender: TObject);
VAR
  SL : TStringList;
begin
  SL := neueSL;
  showMessage(SL.text);
  SL.Free;
end;

Ja, das geht sicherlich, nur finde ich das etwas sehr unbersichtlich und man weiß nicht, ob der Aufrufer oder die Prozedur für das Aufräumen des Speichers verantwortlich ist. Das wird bei mir deutlich, das ich das Objekt übergeben muss, also muss es der Aufrufer erzeugen und ist somit auch wieder für das Freigeben verantwortlich.

lume96 18. Jun 2004 13:56

Re: Funktion die TStrings ausgibt
 
Zitat:

Zitat von Matze
Delphi-Quellcode:
Objekt.Free;
oder
Delphi-Quellcode:
FreeAndNil(Objekt);
Wie Luckie schon sagte. ;)

Im Grossen und Ganzen war mir das schon klar, aber wenn ich folgende Funktion habe :
Delphi-Quellcode:
function TForm1.GetBitmap(const FName : string):TBitmap;
begin

   Result := TBitmap.Create;
   // anderer Code

end;
und sie so aufrufe :
Delphi-Quellcode:
   BitBtn.Glyph := GetBitmap('blahblahblah');
kann ich ja schlecht hinterher
Delphi-Quellcode:
FreeandNil(GetBitmap);
// oder
GetBitmap.free;
benutzen.

Touchdown 25. Jun 2004 14:58

Re: Funktion die TStrings ausgibt
 
In diesem Fall brauchst du dich nicht weiter um diesen Speicherbereich kümmern, der TBitButton wird diesen Speicherbereich freigeben, sobald er selbst zerstört wird!


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:15 Uhr.
Seite 2 von 2     12   

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-2025 by Thomas Breitkreuz