home *** CD-ROM | disk | FTP | other *** search
- {
- Here's a little routine I wrote that checks to see if S1=S2, with wildcards (?
- or *)... IE, Wildcard('TURBO.PAS','T?R*.?AS') will return TRUE.
-
- Let me know if you find it useful...
-
- Released for SWAG...
- }
-
- Function Wildcard(S1,S2:String):Boolean;
- Var STmp1 : String[8];
- STmp2 : String[3];
- SS1, SS2 : String[12];
- I : Integer;
- begin
- STmp1:=Copy(S1,1,Pos('.',S1+'.'))+'????????';
- If (Pos('.',S1)>1) then STmp2:=Copy(S1,Pos('.',S1)+1,3)+'???' else
- STmp2:='???'; For I:=1 to 8 do If STmp1[I]='*' then For I:=I to 8 do
- STmp1[I]:='?'; For I:=1 to 3 do If STmp2[I]='*' then For I:=I to 3 do
- STmp2[I]:='?'; SS1:=STmp1+'.'+STmp2;
- STmp1:=Copy(S2,1,Pos('.',S2+'.'))+'????????';
- If (Pos('.',S2)>1) then STmp2:=Copy(S2,Pos('.',S2)+1,3)+'???' else
- STmp2:='???'; For I:=1 to 8 do If STmp1[I]='*' then For I:=I to 8 do
- STmp1[I]:='?'; For I:=1 to 3 do If STmp2[I]='*' then For I:=I to 3 do
- STmp2[I]:='?'; SS2:=STmp1+'.'+STmp2; WildCard:=False;
- For I:=1 to 12 do If (UpCase(SS1[I])<>UpCase(SS2[I])) and (SS2[I]<>'?') then
- Exit; WildCard:=True;
- end;
-
-
- --- GoldED 2.40
- * Origin: Crazy Train BBS (604)383-2201 (1:340/88)
- SEEN-BY: 340/1 49 60 67 88 211 396/1 3615/50 51
- PATH: 340/88 1 3615/50
-
- {SWAG=???.SWG,JORGEN OLSSON,Wild cards}
- MSGID: 2:205/201@fidonet 94931c10
- REPLY: 1:249/153.0 2ea83a7a
- PID: GE 1.01+
- Hello, John!
-
- > I'm looking for some sort of function to return that:
- > SOMEFILE.TXT = SOM*.TX?
-
- > Function WildCompare(str1,st2: String): boolean;
-
- Hope you'll find this one useful to you. Not very beautiful (this message
- editor is obviously not made for writing pascal source :)), but it works.
-
- ---cut---
-
- FUNCTION WildComp(wild,name:string):boolean;
- BEGIN
- WildComp:=FALSE;
- if name = '' then exit;
- CASE wild[1] of
- '*' : BEGIN
- if name[1]='.' then exit;
- if length(wild)=1 then WildComp:=TRUE;
- if (length(wild) > 1) and (wild[2]='.') and (length(name) > 0)
- then WildComp:=WildComp(copy(wild,3,length(wild)-2),
- copy(name,pos('.',name)+1,length(name)-pos('.',name)));
- END;
-
- '?': BEGIN
- if ord(wild[0])=1
- then WildComp:=TRUE
- else WildComp:=WildComp(copy(wild,2,length(wild)-1),
- copy(name,2,length(name)-1));
- END;
-
- ELSE if name[1] = wild[1]
- then if length(wild) > 1
- then WildComp:=WildComp(copy(wild,2,length(wild)-1),
- copy(name,2,length(name)-1))
- else if (length(name)=1)
- and (length(wild)=1)
- then WildComp:=TRUE
- else WildComp:=FALSE;
- END;
- END;