![]() |
AW: TStringList als Result einer Funktion
Zitat:
|
AW: TStringList als Result einer Funktion
Werde in Zukunft auf Dein Profil achten :)
|
AW: TStringList als Result einer Funktion
Ihr dürft im DP-Projekt gern für meinen Feature-Request voten. Ich hatte mir mal gewünscht, daß entweder die Profilangabe als Default erstmal vorausgewählt ist, oder daß diese Angabe per Vorauswahl leer ist.
Typkompatibilität, vorallem wenn man diese StringListe an eine andere Funktion übergeben will. Stell dir mal vor jemand hätte das Assign als
Delphi-Quellcode:
deklariert und schön könnte man nur noch TStringLists und nix Anderes mehr übergeben. Darum am Besten gleich durchgängig den kleinsten gemeinsamen Nenner nutzen. (siehe TMemo.Lines ... da ist z.B. eigentlich ein TMemoStrings drin)
procedure Assign(Value: TStringList);
Bei deinem Result kommt es ja nur auf die Textinhalte an und es ist vollkommen egal wo die gespeichert sind und für den Zugriff daraus reichen die Schnittstellen des TStrings auch vollkommen aus. |
AW: TStringList als Result einer Funktion
Zitat:
Zitat:
|
AW: TStringList als Result einer Funktion
Delphi-Quellcode:
function GetTiere: String;
Var Liste: TStrings; begin Liste:=TStringList.create; Try Liste.Add('Hund'); Liste.Add('Katze'); Liste.Add('Maus'); Result := Liste.Text; Finally Liste.Free; End; end; // Aufruf: Listbox1.Items.Text := GetTiere; |
AW: TStringList als Result einer Funktion
Wie schon eingangs erwähnt:
Delphi-Quellcode:
procedure GetTiere(const Dest: TStrings);
begin Assert(Assigned(Dest)); Dest.BeginUpdate; try Dest.Clear; Dest.Add('Hund'); Dest.Add('Katze'); Dest.Add('Maus'); finally Dest.EndUpdate; end; end; GetTiere(ListBox1.Items); |
AW: TStringList als Result einer Funktion
Zitat:
Delphi-Quellcode:
die übergebene Liste zu löschen oder aber die Daten unten oder sonstwo anzuhängen. Miteiner Funktion bist Du nicht so flexibel.
Dest.Clear;
Gruß K-H P.S. Irgendwann vergisst jeder einmal die Liste wieder frei zu geben. |
AW: TStringList als Result einer Funktion
Es wurde auch schon 1000,3x gesagt: Funktionen sollten in Delphi eben keine Instanzen erzeugen und liefern, außer es ist auch vom Namen her klar, das da was erzeugt wird. Aber trotzdem würde ich das nie machen. Einfach weil.
|
AW: TStringList als Result einer Funktion
Kompromiss:
Delphi-Quellcode:
function CreateList( list: TStrings): TStrings;
begin if not Assigned( list) then list := TStringList.Create; list.Add( 'a'); list.Add( 'b'); list.Add( 'b'); Result := list; end; procedure TForm1.Button1Click(Sender: TObject); var sl: TStrings; begin try sl := CreateList( TStringList.Create); Memo1.Lines.Assign( sl); finally sl.Free; end; end; |
AW: TStringList als Result einer Funktion
Na ja. Formal korrekt. Würdest Du das so schreiben und verwenden?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:45 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