![]() |
Memo mag TStringList nicht?
Hallo,
ich versuch gerade ein Memo mit Daten aus einer TStringList zu füttern, jedoch verweigert dat Memo die Annahme mit eifrigen nicht anzeigen. Warum ich eine Memo mit einer TStringList füllen möchte? Ich muss die Daten vorher aufbereiten und das ist für mich der "bequemste" weg. So nun zum Quellcode: Die Funktion die mir die Daten bereitstellt:
Delphi-Quellcode:
function TConfiguration.getData: TStringList;
var i: Integer; sBuffer: String; aMotdItems: TArray; slTemp: TStringList; begin sBuffer := ''; slTemp := TStringList.Create; try for i := 0 to slConfig.Count - 1 do begin sBuffer := sBuffer + slConfig[i]; end; sBuffer := Copy(sBuffer, (Pos('{', sBuffer)+1)); sBuffer := Copy(sBuffer, 0, (Pos('}', sBuffer)-1)); aMotdItems := explode('"', sBuffer, 0); // ich brauch den alten Buffer nicht mehr, also weg damit. sBuffer := ''; for i := 0 to Length(aMotdItems) - 1 do begin if (Trim(aMotdItems[i]) <> ',') and (Trim(aMotdItems[i]) <> '') then begin // Daten in die Stringlist packen. slTemp.Add(Trim(aMotdItems[i])); end; end; finally // Array verarbeitet, also länge auf 0 SetLength(aMotdItems, 0); // hier gebe hier die ganze StringList als "return" Value an. Result := slTemp; // Tschüss Stringlist, war schön mit dir zu arbeiten. slTemp.Free; end; end; Und so probiere ich die TStringList in das Memo zu bekommen:
Delphi-Quellcode:
memoConfiguration.Lines := oConfiguration.getData;
Warum zum Teufel mag der des nicht? Die Stringlist ist mit 5 Werten gefüllt. (Können aber mal mehr oder mal weniger sein.) LG Toby |
Re: Memo mag TStringList nicht?
Delphi-Quellcode:
memo.Lines.Clear;
memo.lines.AddStrings(myStringList); |
DP-Maintenance
Dieses Thema wurde von "Phoenix" von "Sonstige Fragen zu Delphi" nach "VCL / WinForms / Controls" verschoben.
Und TMemo ist ein Control... und TStringList gehört auch zur VCL.. also eher die andere Sparte. |
Re: Memo mag TStringList nicht?
Lines vom Memo sind vom Typ TStrings und nicht vom Typ TStringlist. ;)
|
Re: Memo mag TStringList nicht?
Ich würde das anders machen:
Delphi-Quellcode:
Als sList kannst Du dann direkt Memo.Lines angeben.
procedure TConfiguration.getData(const sList: TStrings);
|
Re: Memo mag TStringList nicht?
Danke DeddyH,
so werd ich das auch machen da
Delphi-Quellcode:
slTemp.Free zerstört irgendwie die Rückgabe.
// hier gebe hier die ganze StringList als "return" Value an.
Result := slTemp; // Tschüss Stringlist, war schön mit dir zu arbeiten. slTemp.Free; Edit: Jup Funktioniert so bestens! :-) Danke! |
Re: Memo mag TStringList nicht?
Klar, Du müsstest die Stringliste dann außerhalb der Funktion wieder freigeben. Das ist sehr unschön und wird gerne mal vergessen.
|
Re: Memo mag TStringList nicht?
Joa das wirklich sehr unschön, die von dir vorgeschlagene Variante ist recht gut, wusste nicht das man des auch so übergeben kann.
Das erspart einem eine Menge Arbeit! :-) |
Re: Memo mag TStringList nicht?
Zitat:
Irgendwelche Objekte in Funktionen erzeugen und als Returnwert zurückgeben ist immer fehleranfällig. Am Besten solche Objekte als var-Parameter oder besser noch out-Parameter übergeben lassen. Dann muss / kann sich die aufrufende Procedure um das Erstellen und Zerstören kümmern. |
Re: Memo mag TStringList nicht?
Moin!
Zitat:
Zitat:
Zitat:
Gruss Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 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