Forum: PC-Programmierung Lazarus: Anzahl des Such-Strings im Haupstring zählen


von Manfred (Gast)


Lesenswert?

Hallo Leute,

ich verzweifel gerade etwas. Ich habe einen string und möchte gerne 
zählen, wie oft zb "ABC" in diesem String vorkommt.
Ich habe es mit der Funktion Pos probiert und wollte dann einfach einen 
Zähler a hochsetzen, wenn der "ABC" gefunden wird.
Das habe ich mit einer repeat-until-schliefe aufgestellt, mit 
Abbruchbedingung a=0, also "ABC" nicht mehr gefunden. Aber irgendwie 
klappt das nicht und die Schleife wird unendlich durchlaufen :(

repeat
            a:=pos('ABC',suchstring)  ;
            inc (anzahl);
            Label1.caption:=' ABC: '+ inttostr(anzahl);
until a=0

was mache ich da falsch? Vielen Dank.

von Peter II (Gast)


Lesenswert?

Manfred schrieb:
> was mache ich da falsch

du hast eine endlosschleife,

pos('ABC',suchstring)


liefert ja immer das gleiche zurück.

Es scheint eine Funktion PosEx zu geben, teste mal mit

a:=pos('ABC',suchstring, a);

von Klaus R. (klausro)


Lesenswert?

Manfred schrieb:
> was mache ich da falsch?

Du suchst jedes mal von Beginn des Strings und findest jedes mal den 
ersten Eintrag. Deshalb die Endlosschleife.

von Plauz (Gast)


Lesenswert?

Ich habe keine Ahnung von Pascal, aber suchst du mit
  a:=pos('ABC',suchstring)
nicht einfach immer wieder von vorne? Dann würde die Schleife nur 
abbrechen, wenn 'ABC' gar nicht in suchstring vorkommt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.