![]() |
TStrings übergeben
Hallo zusammen
In meinem Programm möchte mit einer Funktion TStrings zurückgeben, wie folg:
Delphi-Quellcode:
Ist es notwendig "result" zu kreiren? :stupid: logisch ohne gehts nicht, aber gäbes nicht eine ander möglichkeit die Strings zu übergeben?
function TForm1.getStrings:Tstrings;
var Liste: TStrings; begin Liste := TStringlist.Create; Try Liste.Add('erste Zeile'); Liste.Add('zweite Zeile'); Liste.Add('dritte Zeile'); result := TStringlist.create; result.AddStrings(Liste); finally Liste.Free; end; end; |
Re: TStrings übergeben
Übergib eine StringListe als Parameter.
|
Re: TStrings übergeben
Du könntest die TstringList ist der aufrufenden Methode erzeugen und als var - Parameter in die Methode reingeben.
Alternativ kannst Du auch einfach ein Array von Strings erzeugen und zurückgeben. |
Re: TStrings übergeben
Du könntest deinen TString ausserhalb erzeugen in die Methode reingeben dort verarbeiten und
könntest danach damit weiterarbeiten.
Delphi-Quellcode:
Edit:
function TForm1.getStrings(Liste:Tstrings);
begin Liste.Add('erste Zeile'); Liste.Add('zweite Zeile'); Liste.Add('dritte Zeile'); end; Es muss nicht als var-Parameter reingegeben werden, da es eh ein Call-By-Reference aufruf ist. |
Re: TStrings übergeben
Ja logisch
danke vielmals an alle :thumb: |
Re: TStrings übergeben
Oder ganz anders ^^ wenn ich dein Quelltext von oben mal aufgreife:
Delphi-Quellcode:
Du must result nicht erst Initilisieren und TStringList ist glaub ich auch kompatibel mit TStrings damit einfach nur result:=Liste und fertig.
function TForm1.getStrings:Tstrings;
var Liste: TStrings; begin Liste := TStringlist.Create; Try Liste.Add('erste Zeile'); Liste.Add('zweite Zeile'); Liste.Add('dritte Zeile'); result:=Liste; finally Liste.Free; end; end; Mfg Shadow |
Re: TStrings übergeben
Dies ist bei mir leider nicht gegangen.
|
Re: TStrings übergeben
Kann so auch nicht gehen, da du die Liste vor der Rückgabe wieder zerstörst!
|
Re: TStrings übergeben
Hallo,
es geht auch ohne Zwischenvariable. Wenn eine Funktion ein Objekt liefert, dann hat sich ein Namenspräfix "Create" eingebürgert:
Delphi-Quellcode:
Wenn es keine zwingenden Gründe dafür gibt, dann sollte man diese Funktion nicht als Methode der Form entwerfen.
function CreateStrings: TStrings;
begin Result := TStringlist.Create; with Result do begin Add('erste Zeile'); Add('zweite Zeile'); Add('dritte Zeile'); end; end; Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 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-2025 by Thomas Breitkreuz