Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Wie funktioniert PosEx?


JustusJonas - Fr 02.01.04 15:31
Titel: Wie funktioniert PosEx?
Hallo DF,

ich möchte mit PosEx einen String (Quelltext einer HTML-Seite) nach einem gewissen Substring durchsuchen lassen und dadurch herausfinden, wie oft der Substring in dem String enthalten ist.
Wie mache ich das mit PosEx? Leider bekomme ich das einfach nicht hin.
Ich weiß, dass es was mit dem Offset zu tun hat, aber ich weiß noch nicht mal genau was das ist!?

Kann mir irgendjemand helfen?
Wäre sehr dankbar!

Greetz

Moderiert von user profile iconPeter Lustig: Topic Verschoben


jaenicke - Fr 02.01.04 17:50
Titel: Offset-Erklärung
Hallo!

Also ein Offset wäre inb diesem Fall dann wohl die Position, an der mit der Suche begonnen werden soll. (Ich hab hier jetzt kein Delphi und kenne Die Funktion nicht)
Vielleicht hilft Dir das ja schon...

Ich würde mal vermuten, dass Du für einen weiteren Aufruf den Offset hinter die letzte Fundstelle setzen musst!

Ciao,
S.J.


JustusJonas - Fr 02.01.04 18:42

Das ist mir so weit schon klar, aber ich muss ja auch eine Schleife darum setzen? Aber was für einen Zähler soll ich da am besten benutzen?
Ich raff's irgendwie überhaupt nicht! :(

Greetz


cbs - Sa 03.01.04 13:19

hi, ich schreibe mir grade einen Html Parser und benutze auch PosEx, zum suchen der Tags zb.

wenn du die anzahl eines strings in einem string suchen möchtest geht das mit posex zb so:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var 
  Found: Boolean;
  Index, CntStr: Integer;
begin
  Index:= 1;
  CntStr:= 0;
  repeat
    Found:= false;
    Index:= PosEx(SearchStr, Html, Index);
    if Index > 0 then begin
      Inc(CntStr);
      Index:= Index + Length(SearchStr);
      Found:= true;
    end;
  until Found = false;
end;


hab den code eben mal so zusammengebastelt. kann also noch fehler enthalten.

du suchst einfach nach dem string und beginnst an der position an der der letzte string gefunden wurde mit der suche Index:= Index + Length(SearchStr);

eins sei zu PosEx noch zu sagen: PosEx unterscheidet zwischen GROSS- und kleinschreibung!


JustusJonas - Mo 05.01.04 10:06

@cbs: Vielen Dank!
Hat jetzt nicht nur geklappt, sondern ich hab's auch endlich gerafft!

Dankeschön!


Delete - Mo 05.01.04 17:15

Was hat PosEx eigentlich mit Dateien zu tun? Sprich, was hat das in dieser Sparte verloren?


Christian S. - Mo 05.01.04 20:45

:oops: Ist uns wohl durchgerutscht.


JustusJonas - Mi 07.01.04 10:00

Ups, sorry da hatte ich mich wohl verklickt! :(

War keine Absicht!!!

Greetz