Entwickler-Ecke
Sonstiges (Delphi) - Wörter aus einem String trennen?
Clemens L. - So 28.05.06 10:42
Titel: Wörter aus einem String trennen?
Hallo,
ich habe folgendes Problem :
Ich muss mehrere Wörter, die in einer String-Variable stehen trennen, und in einzelne Variablen schreiben.
Beispiel :
Delphi-Quelltext
1: 2: 3: 4:
| var woerter : string; begin woerter := 'erstens zweitens drittens'; |
Wie kann ich jetzt die ganzen Wörter trennen, um sie dann irgendwo in eine Variable zu speichern?
mkinzler - So 28.05.06 10:48
pos + posex oder StrScan
Clemens L. - So 28.05.06 10:50
mkinzler hat folgendes geschrieben: |
pos + posex oder StrScan |
Das versteh ich nicht ganz ... kannst du das etwas näher erklären?
Fighter#1 - So 28.05.06 10:56
Copy kopiert einen bestimmten Teil, z.B. vom ersten Buchstaben (1) bis zum Leerzeichen ( Pos(' ',woerter);
Im nächsten schritt löschst du das was bis Jetzt war, mit Delete,
das packst du in ne Schleife und fertig.
Clemens L. - So 28.05.06 10:59
danke,
ich glaub jetzt hab ichs verstanden! :wink:
mkinzler - So 28.05.06 11:20
oder so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| var woerter,s : string; wort: array of string; i, po: integer; p, p2: PChar; begin woerter := 'erstens zweitens drittens'; p := Pchar( woerter); p2 := StrScan( p, ' '); po := 1; while p2 <> nil do begin s := copy( woerter, po, p2-p); inc(i); setLength( wort, i); wort[i-1] := s; po := p2-p+2; p := p2 + 1; Application.messagebox( PCHAR(s), PCHAR(''), 1); p2 := StrScan( p, ' '); end; inc(i); setLength( wort, i); s := p; wort[i-1] := s; Application.messagebox( PCHAR(s), PCHAR(''), 1); |
Clemens L. - So 28.05.06 11:31
Danke,
ich habe es so versucht :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.Button1Click(Sender: TObject); var i : integer; Pos1 : integer; Pos2 : integer; fertig : array[1..3] of string; strings : string; begin strings := 'lol lolll hallo'; i := 1; repeat Pos1 := 1;
Pos2 := pos(' ',strings); fertig[i] := Copy(strings,pos1,pos2); Delete(strings,pos1, Pos2); i := i + 1; until I = 3; showmessage(fertig[1]); showmessage(fertig[2]); showmessage(fertig[3]); end; |
Ich will die drei Wörter aus der Variable Strings in das Array fertig schreiben, aber dieser Code kopiert nur die ersten zwei ... :(
Ich habe das Gefühl, dass ich irgendwas dummes übersehen habe, aber ich komm einfach nicht drauf. :roll:
Lannes - So 28.05.06 12:04
Hallo,
Pos2 := pos(' ',strings);ergibt beim letzten Schleifendurchlauf 0, weil hinter dem letzten Wort kein Leerzeichen folgt. Daraus ergibt sich das mit dem nachfolgenden Copy, unter Verwendung der Variablen Pos2 als Count, ein String der Länge 0 ermittelt wird.
Clemens L. - So 28.05.06 12:10
Super!!!
Danke, das ist es! :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!