![]() |
Pos liefert letztes statt erstes Vorkommen! HILFE!
Hi!
Ich werds kurz erklären... Hab nen String wo mehrmals '<quote>' und '</quote>' vorkommt. Dann mach ich das:
Delphi-Quellcode:
Leider gibt das 2. Pos das letzte Vorkommen von '</quote>' zurück, und nicht das erste, S enthält also dann den kompletten Text vom 1. '<quote>' bis zum allerletzten '</quote>'
Pos1 := Pos('<quote>',S);
Pos2 := Pos('</quote>',S); S := Copy(S,Pos1,Pos2); Text := StringReplace(Text,S,'',[rfIgnoreCase]); Was mach ich falsch? Habt ihr evtl ne bessere Idee? |
Re: Pos liefert letztes statt erstes Vorkommen! HILFE!
Du hast den Copybefehl falsch verwendet. Du musst zuerst den String, dann die Startposition und die Anzahl zu kopierender Zeichen angeben, nicht die Endposition.
Korrekt müsste es also lauten:
Delphi-Quellcode:
[edit]Fehler bei der Länge korrigiert[/edit]
S:= Copy(s,Pos1+7,Pos2-(Pos1+7));
|
Re: Pos liefert letztes statt erstes Vorkommen! HILFE!
du hast nen kleinen Denkfehler. Der Fehler liegt hier
Delphi-Quellcode:
Der dritte parameter gibt die länge an und nicht das ende
S := Copy(S,Pos1,Pos2);
Wenn dein Text beispielsweise so aussieht
Code:
Dann dann bewirtk dein copy das nicht nur so viel zeischen kopiert werden wie zwischen <quote> und </quote> sondern es werden auch noch die zeichen vor dem ersten quote dazu gezählt..
Irgendwas davor <quote>Kleiner Test, Bla irgendwas</quote>Irgendwas danach
dein zweiter parameter müsste "Pos2 - Pos1" oder so heißen... [Edit1]Ich werd alt, war schon wieder zu langsam :cry: [/Edit1] |
Re: Pos liefert letztes statt erstes Vorkommen! HILFE!
*argh*
AUA! :oops: 10 Zeilen weiter oben steht er sogar richtig im Quellcode. Das sind so die Fehler die man net findet, weil sie zu trivial sind... :roll: also S := Copy(S,Pos1,Pos1-Pos2); DANKE! :mrgreen: :gruebel: Umso lustiger, dass Copy gerade so viel bis zum allerletzten </quote> zurück gegeben hat. so ein zufall :mrgreen: |
Re: Pos liefert letztes statt erstes Vorkommen! HILFE!
Sorry, aber wieder falsch...
Nicht: S:=Copy(S,Pos1,Pos1-Pos2); sondern S:=Copy(S,Pos1,Pos2-Pos1); |
Re: Pos liefert letztes statt erstes Vorkommen! HILFE!
Ja, klar. Danke. Is schon klar, war doch hier nur so auf die Schnelle reingeschrieben. Ganz so blöd bin ich dann doch nicht :mrgreen: :wall:
|
Re: Pos liefert letztes statt erstes Vorkommen! HILFE!
Zitat:
S:=Copy(S,Pos1,Pos2-Pos1 + 1); Roderich |
Re: Pos liefert letztes statt erstes Vorkommen! HILFE!
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz