home *** CD-ROM | disk | FTP | other *** search
- FUNCTION InStr(quell,such :strmax; p :byte) :byte;
-
- VAR str :strmax;
-
- BEGIN
- str:=copy(quell,p,length(quell)-p+1);
- InStr:=pos(such,str)+p-1;
- END;
-
-
- FUNCTION Wildcard(maske,verglstr :strmax; jo1,jo2 :char) :boolean;
-
- VAR maskepos,verglpos,p :integer;
- ch :char;
- str :strmax;
- gleich,flex :boolean;
-
- BEGIN
- maskepos:=1;
- verglpos:=1;
- gleich:=true;
- flex:=false;
- WHILE (gleich=true) and (maskepos<=length(maske)) DO
- BEGIN
- ch:=maske[maskepos];
- IF ch=jo1
- THEN flex:=true;
- IF ch=jo2
- THEN verglpos:=verglpos+1;
- IF not (ch in [jo1,jo2])
- THEN
- IF flex=true
- THEN
- BEGIN
- str:=maske[maskepos];
- WHILE (not (maske[maskepos+1] in [jo1,jo2]))
- and (maskepos<length(maske)) DO
- BEGIN
- maskepos:=maskepos+1;
- str:=str+maske[maskepos];
- END;
- p:=InStr(verglstr,str,verglpos);
- IF p>0
- THEN verglpos:=p+length(str)
- ELSE gleich:=false;
- flex:=false
- END
- ELSE
- IF verglstr[verglpos]=ch
- THEN verglpos:=verglpos+1
- ELSE gleich:=false;
- maskepos:=maskepos+1;
- IF (verglpos>length(verglstr)) and (maskepos<=length(maske))
- THEN
- IF (maskepos=length(maske)) and (maske[maskepos]=jo1)
- THEN maskepos:=maskepos+1
- ELSE gleich:=false;
- END; { von WHILE }
- IF gleich=true
- THEN
- IF (verglpos<=length(verglstr)) and (flex=false)
- THEN gleich:=false;
- Wildcard:=gleich;
- END;
-