| Autor |
Beitrag |
Maisinator
      
Beiträge: 167
Win XP HE SP3, Win Vista HP SP2
Delphi ;-)
|
Verfasst: Mi 28.10.09 16:11
Hallo,
man kann ja mit dem Befehl Pos(...) die Position eines Symbol in einem String feststellen. Wenn ich nun aber z.b. 4 x "/" in einem String habe und ich die Position des dritten "/" haben möchte, gibt es da irgendwie eine bessere Methode als den String nach jedem "/" zu kopieren und erneut die Position zu bestimmen, bis man beim eigentlichen 3. "/" angekommen ist?
DANKE Moderiert von Narses: Topic aus VCL (Visual Component Library) verschoben am Mi 28.10.2009 um 16:29
_________________ Das Unmögliche wagen, um das Mögliche möglich zu machen...
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Mi 28.10.09 16:21
Ja, in der Unit StrUtils ist die Funktion posEx. Dieser kann man als 3. Parameter ein Offset übergeben.
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| var s: String; PosVonRaute2: Integer; begin s := 'TEST#TEST2#'; PosVonRaute2 := posEx('#', s, pos('#', s) + 1); |
|
|
Maisinator 
      
Beiträge: 167
Win XP HE SP3, Win Vista HP SP2
Delphi ;-)
|
Verfasst: Mi 28.10.09 16:24
Moderiert von Narses: Komplett-Zitat des letzten Beitrags entfernt.
Cool! Danke für deine schnelle Hilfe. Wenn ich das richtig verstanden habe, hast du mit deinem "Quelltext" die Position von der 2. # im String herausgesucht oder? Wenn ich die 3. # haben will, müsste ich dann doch
PosVonRaute2 := posEx('#', s, pos('#', s) + 2); schreiben oder?
_________________ Das Unmögliche wagen, um das Mögliche möglich zu machen...
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Mi 28.10.09 16:26
Davon abgesehen bei mir in Delphi6 existiert kein posex
EDIT: damit ihr nicht so verwirrt seit.
Zuletzt bearbeitet von thepaine91 am Mi 28.10.09 16:43, insgesamt 1-mal bearbeitet
|
|
Maisinator 
      
Beiträge: 167
Win XP HE SP3, Win Vista HP SP2
Delphi ;-)
|
Verfasst: Mi 28.10.09 16:29
thepaine91 hat folgendes geschrieben : | | Davon abgesehen bei mir in Delphi6 existiert kein posex |
Also wenn das nun eine Anspielung auf die Lieblingsbeschäftigung vieler Männer und dem Hinterteil eines Menschen sein soll, bist du hier glaub ich falsch!
_________________ Das Unmögliche wagen, um das Mögliche möglich zu machen...
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Mi 28.10.09 16:35
thepaine91 hat folgendes geschrieben : | | Davon abgesehen bei mir in Delphi6 existiert kein posex |
Sonst hast du nichts zu tun, oder?
Maisinator hat folgendes geschrieben : | Andreas L. hat folgendes geschrieben : | Ja, in der Unit StrUtils ist die Funktion posEx. Dieser kann man als 3. Parameter ein Offset übergeben.
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| var s: String; PosVonRaute2: Integer; begin s := 'TEST#TEST2#'; PosVonRaute2 := posEx('#', s, pos('#', s) + 1); | |
Cool! Danke für deine schnelle Hilfe. Wenn ich das richtig verstanden habe, hast du mit deinem "Quelltext" die Position von der 2. # im String herausgesucht oder? Wenn ich die 3. # haben will, müsste ich dann doch
PosVonRaute2 := posEx('#', s, pos('#', s) + 2); schreiben oder? |
Nein, als 3. Parameter gibst du an ab welchen Zeichen mit der Suche begonnen werden soll. Ich zähle eins hinzu weil sonst mit der Suche direkt bei der Raute begonnen werden würde was dann auch das Ergebnis wäre. Wenn du 3 Rauten hast, musst du erst die Position der ersten suchen, dann mit posEx die der zweiten und den Rückgabewert verwendest du dann wiederum als 3. Parameter für den nächsten posEx-Aufruf.
|
|
Maisinator 
      
Beiträge: 167
Win XP HE SP3, Win Vista HP SP2
Delphi ;-)
|
Verfasst: Mi 28.10.09 16:37
Ah! Stimmt, hab das pos bei pos('#', s) übersehen... 
_________________ Das Unmögliche wagen, um das Mögliche möglich zu machen...
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Mi 28.10.09 16:43
Nein das war eine Anspielung darauf das es Posex in D6 nicht gibt. -.-
Das ihr euch von sowas gleich in die irre leiten lasst :O
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| function FindCharacter(str : string; sub: char; anzahl: integer): integer; var tempanzahl, i: integer; begin tempanzahl := 0; i := 0; while tempanzahl < anzahl do begin if str[i] = sub then inc(tempanzahl); inc(i); end; result := i; end; |
Sofern man die Funktion nicht hat wollte ich das nur anmerken falls später jemand mit z.B. d6 auf diesen Thread stößt.
|
|
|