Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TStrings übergeben (https://www.delphipraxis.net/101237-tstrings-uebergeben.html)

jjep 10. Okt 2007 10:46


TStrings übergeben
 
Hallo zusammen

In meinem Programm möchte mit einer Funktion TStrings zurückgeben, wie folg:

Delphi-Quellcode:
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;
Ist es notwendig "result" zu kreiren? :stupid: logisch ohne gehts nicht, aber gäbes nicht eine ander möglichkeit die Strings zu übergeben?

Luckie 10. Okt 2007 10:49

Re: TStrings übergeben
 
Übergib eine StringListe als Parameter.

Phoenix 10. Okt 2007 10:50

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.

Tyrael Y. 10. Okt 2007 10:52

Re: TStrings übergeben
 
Du könntest deinen TString ausserhalb erzeugen in die Methode reingeben dort verarbeiten und
könntest danach damit weiterarbeiten.

Delphi-Quellcode:
function TForm1.getStrings(Liste:Tstrings);
begin
  Liste.Add('erste Zeile');
  Liste.Add('zweite Zeile');
  Liste.Add('dritte Zeile');
end;
Edit:
Es muss nicht als var-Parameter reingegeben werden, da es eh ein Call-By-Reference aufruf ist.

jjep 10. Okt 2007 10:55

Re: TStrings übergeben
 
Ja logisch
danke vielmals an alle :thumb:

Lord Shadow 10. Okt 2007 11:14

Re: TStrings übergeben
 
Oder ganz anders ^^ wenn ich dein Quelltext von oben mal aufgreife:

Delphi-Quellcode:
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;
Du must result nicht erst Initilisieren und TStringList ist glaub ich auch kompatibel mit TStrings damit einfach nur result:=Liste und fertig.

Mfg Shadow

jjep 10. Okt 2007 11:17

Re: TStrings übergeben
 
Dies ist bei mir leider nicht gegangen.

mkinzler 10. Okt 2007 11:19

Re: TStrings übergeben
 
Kann so auch nicht gehen, da du die Liste vor der Rückgabe wieder zerstörst!

marabu 10. Okt 2007 12:31

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:
function CreateStrings: TStrings;
begin
  Result := TStringlist.Create;
  with Result do
  begin
    Add('erste Zeile');
    Add('zweite Zeile');
    Add('dritte Zeile');
  end;
end;
Wenn es keine zwingenden Gründe dafür gibt, dann sollte man diese Funktion nicht als Methode der Form entwerfen.

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