Thema: Delphi Problem mit Pos/PosEx

Einzelnen Beitrag anzeigen

Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
345 Beiträge
 
Delphi 10.4 Sydney
 
#1

Problem mit Pos/PosEx

  Alt 11. Apr 2021, 22:46
Hallo,

durch folgenden Beitrag habe ich Hilfe im Umgang mit Pos/PosEx bekommen: https://www.delphipraxis.net/207571-...-kopieren.html

Nun habe ich ein weiteres Problem, welches für mich wieder total unlogisch erscheint.

Ich versuche aus einem Text Stellen zu entfernen, nach ähnlichem Schema wie in dem anderen Beitrag. Eigentlich sollte es durch ändern des Codes sehr leicht klappen. Aber Pos/PosEx schießt über das Ziel hinaus.


Code:
'[[Hamburg]] || 2008 ||data-sort-value="Diplomica"| [[Diplomica Verlag|Verlagsgruppe Diplomica]] || Belletristik, Sachbuch'
Aus diesem String versuche ich
Code:
|data-sort-value="Diplomica"
zu löschen. Ich kenne aber nur die Teilstrings:
Code:
1. |data-sort-value="
2. " // das ist das zweite Gänsefüßchen
Mit folgendem Code klappt es leider nicht bei mir:

Delphi-Quellcode:
var
  sText: String;
  sRemoveText: String;
  Pos1: Integer;
  Pos2: Integer;
  Pos3: Integer;
begin

  sText := '[[Hamburg]] || 2008 ||data-sort-value="Diplomica"| [[Diplomica Verlag|Verlagsgruppe Diplomica]] || Belletristik, Sachbuch';
  try
    while stext.Length > 0 do
    begin
      Pos1 := Pos('||data-sort-value="', stext,1);
      Pos2 := Pos('"', stext, Pos1+1 ); // oder PosEx nutzen, ist aber in meiner Version gleich
      sRemoveText := Trim(Copy(stext, Pos1, Pos2-pos1));
      Pos3 := Pos(slinebreak, sRemoveText);
      if Pos3 > 0 then
        sRemoveText := Trim(Copy(sRemoveText, 1, Pos3 - 1));

      if sRemoveText.Length = 0 then
        break;
      stext := StringReplace(stext, sRemoveText, '', [rfReplaceAll, rfIgnoreCase]);
    end;
  finally
    result := true;
  end;
Hier steht dann bei mir
Code:
'||data-sort-value="Diplomica"| [[Diplom'
in sRemoveText drin.

Ich begreife es einfach nicht.

LG Mathias


Anmerkung: Pos = PosEx seit einiger Zeit, daher steht oben nur Pos() im Code.
http://docwiki.embarcadero.com/Libra...StrUtils.PosEx (Hinweis: PosEx entspricht System.Pos.)


Die Lösung zum Problem habe ich dann doch gefunden:
https://www.delphipraxis.net/158932-...ern-chaos.html
Mathias

Geändert von NoGAD (11. Apr 2021 um 23:21 Uhr) Grund: Nachtrag: Pos/PosEx / Lösung gefunden
  Mit Zitat antworten Zitat