home *** CD-ROM | disk | FTP | other *** search
- Program wild_card;
-
- Var
- check:Boolean;
-
- Function Wild(flname,card:String):Boolean;
- {Returns True if the wildcard description in 'card' matches 'flname'
- according to Dos wildcard principles. The 'card' String MUST have a period!
- Example: Wild('test.tat','t*.t?t' returns True}
-
- Var
- name,temp:String[12];
- c:Char;
- p,i,n,l:Byte;
- period:Boolean;
-
- begin
- wild:=True;
- {test For special Case first}
- if flname='*.*' then Exit;
- wild:=False;
- p:=pos('.',card);
- i:=pos('.',flname);
- if p > 0 then period:=True else Exit; {not a valid wildcard if no period}
- N:=1;
- Repeat
- if card[n]='*' then n:=p-1 else
- if (upCase(flname[n]) <> upCase(card[n])) then
- if card[n]<>'?' then Exit;
- inc(n);
- Until n>=p;
- n:=p+1; {one position past the period of the wild card}
- l:=length(flname);
- inc(i); {one position past the period of the Filename}
- Repeat
- if n > length(card) then Exit;
- c:=upCase(card[n]);
- if c='*' then i:=l+1 {in order to end the loop}
- else
- if (upCase(flname[i]) = c) or (c = '?') then
- begin
- inc(n);
- inc(i);
- end
- else Exit;
- Until i > l;
-
- wild:=True;
-
- end;
-
- begin
- check:=False;
- check:=wild('TEST.Tat','T*.T?T'); {True}
- Writeln(check);
- check:=wild('TEST.Taq','T*.T?T'); {False}
- Writeln(check);
- check:=wild('12345678.pkt','*.pkt'); {True}
- Writeln(check);
- check:=wild('test.tat','T*.t?'); {False}
- Writeln(check);
- check:=wild('12345678.pkt','1234?678.*'); {True}
- Writeln(check);
-
- end.