![]() |
Re: Verzeichnisse in Listbox auflisten
@SirThornberry
Mal nur so eine Idee, wie wär's damit :?:
Delphi-Quellcode:
Gruß
Dest.Lines.Text := StringReplace(Source, Delimiter, #13#10, [rfReplaceAll, rfIgnoreCase]);
s14 |
Re: Verzeichnisse in Listbox auflisten
@s14: Auf den ersten Blick ne supi variante ABER:
versuch mal
Delphi-Quellcode:
Ergebnis davon ist das es in einem Item ist:
Stringliste.Add('abc'#13#10'def');
Wenn du allerdings mit deinem Stringreplace arbeitest wird es in zwei items aufgeteilt. Wenn du jetzt folgenden String hast
Code:
und "|" der Delimiter ist so wirst du bei deiner Stringreplacevariante & Items in der Stringliste vorfinden...
Item1
Entry1 Entry2 | Item2 Entry1 Entry2 (korrigiert mich wenn ich nen denkfehler hab, aber eigentlich hab ich damals wegen genau diesem problem die funktion geschrieben) |
Re: Verzeichnisse in Listbox auflisten
@SirThornberry: Da hast Du natürlich Recht, NUR :wink:
die Frage bezog sich doch auf das Trennen einer einzigen Zeile nach Leerzeichen, also ohne weitere Umbrüche. Gruß s14 |
Re: Verzeichnisse in Listbox auflisten
Also, ich habs jetzt doch mal probiert, funktioniert eigentlich 8)
Delphi-Quellcode:
Aufruf dann beispielsweise zum testen mit:
procedure SplitStrToStringList(const source: String; const Delimiter: String; Dest: TStrings);
begin Dest.Text := StringReplace(Source, Delimiter, #13#10, [rfReplaceAll, rfIgnoreCase]); end;
Delphi-Quellcode:
procedure TForm1.Button24Click(Sender: TObject);
begin SplitStrToStringList('Zugriffsrechte 11 jaschu-mac4win homepages 4096 May 5 14:47 ', ' ', memo1.Lines); end; |
Re: Verzeichnisse in Listbox auflisten
@s14: hast recht, für die einzelne Zeile reicht nadürlich nen StringReplace...
|
Re: Verzeichnisse in Listbox auflisten
@SirThornberry:
Gut dann ist meine Function halt unperformat :sad: :oops: Aber ich habe die vor 2/3 Jahren geschrieben und muss damit eigentlich immer nur Strings splitten, alle unter 1 MB :mrgreen: Werde mir aber gleiche Deine Funktion mal näher betrachten. GRuß Data |
Re: Verzeichnisse in Listbox auflisten
Hi!
Danke für die vielen Antworten, aber irgendwie kapier ich hier gar nix mehr :gruebel: Wie ist die Prozedur vopn SirThornberry einzubinden? Was genau macht die mit Dest.Clear; count := 1; LStartpos := 0; LEndepos := 0; LSourcelength := length(Source); ? Danke schonmal! |
Re: Verzeichnisse in Listbox auflisten
DataCool war so freundlich meine Funktion noch ein bischen zu verbessern - THANKS
Delphi-Quellcode:
@Lamy: eigentlich brauchst du die funktion nicht da dein Problem einzeilig ist und somit stringreplace die einfacherere alternative ist.
procedure splitString(const Source: String; const Delimiter: String; var Dest: TStringlist);
var count: Integer; LStartpos, LEndepos, LSourcelength: Integer; LDelimiterLength : Integer; begin Dest.Clear; count := 1; LStartpos := 0; LEndepos := 0; LSourcelength := length(Source); LDelimiterLength := Length(Delimiter); while count <= LSourcelength do begin if copy(Source, count, LDelimiterLength) = Delimiter then begin LEndepos := count; dest.Add(copy(Source, LStartpos + 1, LEndepos - LStartpos - 1)); LStartpos := count + LDelimiterLength - 1; inc(count,LDelimiterLength); end else begin inc(count); end; end; if LEndePos <> Count - LDelimiterLength then dest.Add(copy(Source, LStartpos + 1, count - LStartpos - 1)); end; Zu deinen Fragen:
Delphi-Quellcode:
Beispielaufruf:
Dest.Clear; //leert die Ziel-Stringliste (dem user bissl arbeit abnehmen)
count := 1; //Count ist der Index wo wir uns gerade im String befinden LStartpos := 0; //anfangs wird die startposition auf 0 gesetzt damit, irgendwo muss ja der string anfangen LEndepos := 0; //Da wir noch nicht parsen muss die endeposition auch auf 0 - wird später hochgezählt LSourcelength := length(Source); //wird für schleifenabbruch bedingung gebraucht. gibt an wie lang der string ist der zerteilt werden soll
Delphi-Quellcode:
[Edit]Fehler in Funktion beseitigt[/Edit]
var LListe: TStringlist;
begin LListe := TStringlist.create; splitString('Part1|Part2|Part3', '|'; LListe); //jetzt sollte in LListe der geteilte sting sein - also 3 Items [...] //dein source (also das auswerten der items) LListe.Free; end; |
Re: Verzeichnisse in Listbox auflisten
Danke, die Erklärung sagt mir so einiges :)
Aber: Zitat:
Ist das die Methode die S14 gepostet hat? Die kapier ich auch nicht - da ist ja nicht nur "Zugriffsrechte 11 jaschu-mac4win homepages 4096 May 5 14:47" in der Stringliste sondern auch diese Daten aller anderen Dateien / Ordner die er vom ftp ausliest... |
Re: Verzeichnisse in Listbox auflisten
genau, das ist die funktion die s14 gepostet hat. bei seiner variante musst du auch jede zeile nochmal in eine stringliste aufsplitten. Man könnte auch noch die unperfomantere Variante nehmen und sich jedes Element extra holen. Hab da glaube irgendwann mal ne funktion gepostet die "splitOutIndex" oder so hieß. Allerdings ist die funktion noch nicht geschwindigkeits optimiert...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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