home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 14 / tools / wildcard.inc < prev    next >
Encoding:
Text File  |  1988-03-28  |  1.6 KB  |  65 lines

  1. FUNCTION InStr(quell,such :strmax; p :byte) :byte;
  2.  
  3. VAR str :strmax;
  4.  
  5. BEGIN
  6.   str:=copy(quell,p,length(quell)-p+1);
  7.   InStr:=pos(such,str)+p-1;
  8. END;
  9.  
  10.  
  11. FUNCTION Wildcard(maske,verglstr :strmax; jo1,jo2 :char) :boolean;
  12.  
  13. VAR maskepos,verglpos,p :integer;
  14.     ch :char;
  15.     str :strmax;
  16.     gleich,flex :boolean;
  17.  
  18. BEGIN
  19.   maskepos:=1;
  20.   verglpos:=1;
  21.   gleich:=true;
  22.   flex:=false;
  23.   WHILE (gleich=true) and (maskepos<=length(maske)) DO
  24.   BEGIN
  25.     ch:=maske[maskepos];
  26.     IF ch=jo1
  27.       THEN flex:=true;
  28.     IF ch=jo2
  29.       THEN verglpos:=verglpos+1;
  30.     IF not (ch in [jo1,jo2])
  31.       THEN
  32.         IF flex=true
  33.         THEN
  34.           BEGIN
  35.             str:=maske[maskepos];
  36.             WHILE (not (maske[maskepos+1] in [jo1,jo2]))
  37.               and (maskepos<length(maske)) DO
  38.             BEGIN
  39.               maskepos:=maskepos+1;
  40.               str:=str+maske[maskepos];
  41.             END;
  42.             p:=InStr(verglstr,str,verglpos);
  43.             IF p>0
  44.               THEN verglpos:=p+length(str)
  45.               ELSE gleich:=false;
  46.             flex:=false
  47.           END
  48.         ELSE
  49.           IF verglstr[verglpos]=ch
  50.             THEN verglpos:=verglpos+1
  51.             ELSE gleich:=false;
  52.     maskepos:=maskepos+1;
  53.     IF (verglpos>length(verglstr)) and (maskepos<=length(maske))
  54.       THEN
  55.         IF (maskepos=length(maske)) and (maske[maskepos]=jo1)
  56.           THEN maskepos:=maskepos+1
  57.           ELSE gleich:=false;
  58.   END; { von WHILE }
  59.   IF gleich=true
  60.     THEN
  61.       IF (verglpos<=length(verglstr)) and (flex=false)
  62.         THEN gleich:=false;
  63.   Wildcard:=gleich;
  64. END;
  65.