Einzelnen Beitrag anzeigen

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