Thema: Delphi Problem mit Pos/PosEx

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#14

AW: Problem mit Pos/PosEx

  Alt 12. Apr 2021, 09:35
Mir scheint, dass diese Zeile falsch ist.
    Pos2 := Pos(SearchTextB, stext, Pos1 + 1) + Length(SearchTextA);

Die Suche muss ab Pos1 + 1 + Length(SearchTextA) beginnen.
    Pos2 := Pos(SearchTextB, stext, Pos1 + 1 + Length(SearchTextA));

Die Längenermittlung vor den Beginn der zweiten Suche muss mit in den Funktionaufruf von Pos und nicht zum Ergebnis der zweiten Pos addiert werden.

Es ist letztlich ein Problem der Klammersetzung.
Um das genauer zu erklären,
mit Pos1+1 findet das zweite Pos/PosEx natürlich das " im ersten Suchstring,
darum muß die zweite Suche
auch hinter dem ersten Suchstring begonnen werden.

Wenn der zweite Suchstring nicht im Ersten vorkäme, ware es egal. (man könnte die zweite Suche also an der selben Position beginnen, wie die Erste, auch wenn es sinnlos wäre, aber zumindestens paar Byte Code sparen täte)
z.B. nach '"|' suchen
$2B or not $2B

Geändert von himitsu (12. Apr 2021 um 10:06 Uhr)
  Mit Zitat antworten Zitat