Thema: Delphi Trennzeichen suchen

Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#5

Re: Trennzeichen suchen

  Alt 25. Nov 2005, 20:26
HI,
was möchtest du denn da nachbauen? Ich denke die Funktionalität die du suchst findest du eigentlich schon in einer TStringList (in der OH nach Delimitter und DelimittedText suchen).
Aber wenn du einen StringTokenizer willst, solltest du nicht gucken ob dein Token leer ist sondern deine Funktionalittät erweitern. Üblich ist eine Methode getTokenCount, getNextToken und natürlich hasMoreToken.

Wenn du nach einem bestimmten Zeichen in einem String suchst, geht dass am einfachsten und effizientesten mit Pos. Mit dem Befehl kannst du in deinem zu zerlegenden String nach dem nächsten Vorkommen vom Trennzeichen suchen und bis zu dieser Stelle deinen String teilen/kopieren/was auch immer.
Was du jetzt machst ist eine sehr schlechte Variante, funktioniert zwar (ok, nicht so wie du es aufgeschrieben hast), aber es wäre ein sehr unsauberer Weg (tocken := tocken + str[j] alloziert ne Menge Speicher).
Wie gesagt, mach es lieber mit Pos und zerleg so deinen String.

Zu deinem Code
[quote="delphien"]
for i := 0 to sl.count - 1 do
begin
token := '';
str := sl.Strings[i];

for j := 0 to length(str) do
begin
//bis zum Trennzeichen, z.B. ";", Zeichen zusammenfügen
token := token + str[j];
end;
end;
[/delphi]

Du solltest deinen Code etwas hierachisch einrücken. Dann sieht man leichter was in welcher Beziehung zu einander steht. Wichtig ist, bei dynamsichen Arrays beginnt der Index bei 0, bei Strings läuft der Index von 1 an (also in deiner for j := ...) Hat etwas die Länge n und du fängst bei 0 an zu zählen, darfst du auch nur bis (n-1) laufen. Wie gesagt mit deinem to hast du recht, aber vorne muss ne 1 hin.
In der Schleife setzt du ja auch dein Token zusammen. Aber es fehlt natürlich noch was, du musst an der Stelle noch prüfen, ob du gerade das Trennzeichen liest (if-Anweisung). Dann musst du halt gucken was ist wenn es das Trennzeichen ist und was sonst.

Gruß Der Unwissende
  Mit Zitat antworten Zitat