AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verzeichnisse in Listbox auflisten

Ein Thema von Lamy · begonnen am 6. Mai 2004 · letzter Beitrag vom 8. Mai 2004
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
s14

Registriert seit: 15. Mai 2003
Ort: München
251 Beiträge
 
Delphi 7 Architect
 
#11

Re: Verzeichnisse in Listbox auflisten

  Alt 7. Mai 2004, 08:55
@SirThornberry
Mal nur so eine Idee, wie wär's damit

Dest.Lines.Text := StringReplace(Source, Delimiter, #13#10, [rfReplaceAll, rfIgnoreCase]); Gruß
s14
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Verzeichnisse in Listbox auflisten

  Alt 7. Mai 2004, 09:07
@s14: Auf den ersten Blick ne supi variante ABER:
versuch mal
Stringliste.Add('abc'#13#10'def'); Ergebnis davon ist das es in einem Item ist:
Wenn du allerdings mit deinem Stringreplace arbeitest wird es in zwei items aufgeteilt.
Wenn du jetzt folgenden String hast
Code:
Item1
  Entry1
  Entry2
|
Item2
  Entry1
  Entry2
und "|" der Delimiter ist so wirst du bei deiner Stringreplacevariante & Items in der Stringliste vorfinden...
(korrigiert mich wenn ich nen denkfehler hab, aber eigentlich hab ich damals wegen genau diesem problem die funktion geschrieben)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
s14

Registriert seit: 15. Mai 2003
Ort: München
251 Beiträge
 
Delphi 7 Architect
 
#13

Re: Verzeichnisse in Listbox auflisten

  Alt 7. Mai 2004, 09:20
@SirThornberry: Da hast Du natürlich Recht, NUR
die Frage bezog sich doch auf das Trennen einer einzigen Zeile nach Leerzeichen, also ohne weitere Umbrüche.

Gruß
s14
  Mit Zitat antworten Zitat
s14

Registriert seit: 15. Mai 2003
Ort: München
251 Beiträge
 
Delphi 7 Architect
 
#14

Re: Verzeichnisse in Listbox auflisten

  Alt 7. Mai 2004, 09:25
Also, ich habs jetzt doch mal probiert, funktioniert eigentlich 8)

Delphi-Quellcode:
procedure SplitStrToStringList(const source: String; const Delimiter: String; Dest: TStrings);
begin
  Dest.Text := StringReplace(Source, Delimiter, #13#10, [rfReplaceAll, rfIgnoreCase]);
end;
Aufruf dann beispielsweise zum testen mit:

Delphi-Quellcode:
procedure TForm1.Button24Click(Sender: TObject);
begin
  SplitStrToStringList('Zugriffsrechte 11 jaschu-mac4win homepages 4096 May 5 14:47 ', ' ', memo1.Lines);
end;
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#15

Re: Verzeichnisse in Listbox auflisten

  Alt 7. Mai 2004, 09:54
@s14: hast recht, für die einzelne Zeile reicht nadürlich nen StringReplace...
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#16

Re: Verzeichnisse in Listbox auflisten

  Alt 7. Mai 2004, 11:24
@SirThornberry:
Gut dann ist meine Function halt unperformat
Aber ich habe die vor 2/3 Jahren geschrieben und muss damit eigentlich immer nur Strings splitten, alle unter 1 MB
Werde mir aber gleiche Deine Funktion mal näher betrachten.

GRuß Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Lamy

Registriert seit: 11. Apr 2004
119 Beiträge
 
Delphi 7 Personal
 
#17

Re: Verzeichnisse in Listbox auflisten

  Alt 7. Mai 2004, 14:07
Hi!

Danke für die vielen Antworten, aber irgendwie kapier ich hier gar nix mehr

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!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#18

Re: Verzeichnisse in Listbox auflisten

  Alt 7. Mai 2004, 14:33
DataCool war so freundlich meine Funktion noch ein bischen zu verbessern - THANKS
Delphi-Quellcode:
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;
@Lamy: eigentlich brauchst du die funktion nicht da dein Problem einzeilig ist und somit stringreplace die einfacherere alternative ist.
Zu deinen Fragen:
Delphi-Quellcode:
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
Beispielaufruf:
Delphi-Quellcode:
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;
[Edit]Fehler in Funktion beseitigt[/Edit]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Lamy

Registriert seit: 11. Apr 2004
119 Beiträge
 
Delphi 7 Personal
 
#19

Re: Verzeichnisse in Listbox auflisten

  Alt 7. Mai 2004, 14:53
Danke, die Erklärung sagt mir so einiges


Aber:
Zitat von SirThornberry:
@Lamy: eigentlich brauchst du die funktion nicht da dein Problem einzeilig ist und somit stringreplace die einfacherere alternative ist.
???


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...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#20

Re: Verzeichnisse in Listbox auflisten

  Alt 7. Mai 2004, 14:56
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...
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz