Here it's:
=========================================================
Program WildCardParse;
{(R) The file name wildcards parser/inquirer (implemented in one autonomous,
written on the pure Pascal language checking function). (C) FreeWolle. (W) Saturday, ninth july of two thousand fifth year.
*** Public domain. *** You can use this code as written by you, but this code
since this code is a public property and is not copyrighted by me for real
use for programming.}
Function InquiryWildCard(FileName,WildCard : String): Boolean;
Function UpperCaseLine(LowerCaseLine : String) : String;
Var
Index : Byte;
Begin
For Index:=1 To Length(LowerCaseLine) Do LowerCaseLine[Index]:=UpCase(LowerCaseLine[Index]);
UpperCaseLine:=LowerCaseLine;
end;
Function RepeatString(Symbol : Char; Count : ShortInt) : String;
Var
Index : Byte;
Result : String;
Begin
Result:='';
If Count<0 Then
Begin
RepeatString:='';
Exit;
end;
For Index:=1 To Count Do Result:=Result+Symbol;
RepeatString:=Result;
end;
Var
FileNameData : String;
FileExtensionData : String;
WildCardFileNameData : String;
WildCardFileExtensionData : String;
InquiryFileName : String;
InquiryFileExtension : String;
Index : Byte;
Begin
InquiryWildCard:=False;
FileName:=UpperCaseLine(FileName);
WildCard:=UpperCaseLine(WildCard);
If (FileName='') Or (Length(FileName)>12) Or (WildCard='') Or (Length(WildCard)>12) Or (Pos('\',FileName)>0) Or (Pos('/',FileName)>0) Or (Pos('\',WildCard)>0) Or (Pos('/',WildCard)>0) Then Exit;
If Pos('.',FileName)>0 Then
Begin
FileNameData:=Copy(FileName,1,Pos('.',FileName)-1);
FileExtensionData:=Copy(FileName,Pos('.',FileName)+1,3);
end Else
Begin
FileNameData:=FileName;
FileExtensionData:='';
end;
If Pos('.',WildCard)>0 Then
Begin
WildCardFileNameData:=Copy(WildCard,1,Pos('.',WildCard)-1);
WildCardFileExtensionData:=Copy(WildCard,Pos('.',WildCard)+1,3);
end Else
Begin
WildCardFileNameData:=WildCard;
WildCardFileExtensionData:='';
end;
If (Pos('.',FileNameData)>0) Or (Pos('.',FileExtensionData)>0) Or (Pos('.',WildCardFileNameData)>0) Or (Pos('.',WildCardFileExtensionData)>0) Or (FileNameData='') Or (WildCardFileNameData='') Then Exit;
While Pos('*',WildCardFileNameData)>0 Do WildCardFileNameData:=Copy(WildCardFileNameData,1,Pos('*',WildCardFileNameData)-1)+RepeatString('?',8-(Length(WildCardFileNameData)-1))+Copy(WildCardFileNameData,Pos('*',WildCardFileNameData)+1,8);
While Pos('*',WildCardFileExtensionData)>0 Do WildCardFileExtensionData:=Copy(WildCardFileExtensionData,1,Pos('*',WildCardFileExtensionData)-1)+RepeatString('?',3-(Length(WildCardFileExtensionData)-1))+Copy(WildCardFileExtensionData,Pos('*',
WildCardFileExtensionData)+1,3);
FileNameData:=FileNameData+RepeatString(#0,8-Length(FileNameData));
FileExtensionData:=FileExtensionData+RepeatString(#0,3-Length(FileExtensionData));
WildCardFileNameData:=WildCardFileNameData+RepeatString(#0,8-Length(WildCardFileNameData));
WildCardFileExtensionData:=WildCardFileExtensionData+RepeatString(#0,3-Length(WildCardFileExtensionData));
InquiryFileName:='';
InquiryFileExtension:='';
For Index:=1 To 8 Do If WildCardFileNameData[Index]='?' Then InquiryFileName:=InquiryFileName+FileNameData[Index] Else InquiryFileName:=InquiryFileName+WildCardFileNameData[Index];
For Index:=1 To 3 Do If WildCardFileExtensionData[Index]='?' Then InquiryFileExtension:=InquiryFileExtension+FileExtensionData[Index] Else InquiryFileExtension:=InquiryFileExtension+WildCardFileExtensionData[Index];
InquiryWildCard:=(InquiryFileName=FileNameData) And (InquiryFileExtension=FileExtensionData);
end;
{Written on 12.07.2005 by me.}
Function SubstitutionWildCard(FileName,WildCard : String): String;
Function UpperCaseLine(LowerCaseLine : String) : String;
Var
Index : Byte;
Begin
For Index:=1 To Length(LowerCaseLine) Do LowerCaseLine[Index]:=UpCase(LowerCaseLine[Index]);
UpperCaseLine:=LowerCaseLine;
end;
Function RepeatString(Symbol : Char; Count : ShortInt) : String;
Var
Index : Byte;
Result : String;
Begin
Result:='';
If Count<0 Then
Begin
RepeatString:='';
Exit;
end;
For Index:=1 To Count Do Result:=Result+Symbol;
RepeatString:=Result;
end;
Var
FileNameData : String;
FileExtensionData : String;
WildCardFileNameData : String;
WildCardFileExtensionData : String;
SubstitutionFileName : String;
SubstitutionFileExtension : String;
Index : Byte;
Begin
SubstitutionWildCard:='';
FileName:=UpperCaseLine(FileName);
WildCard:=UpperCaseLine(WildCard);
If (FileName='') Or (Length(FileName)>12) Or (WildCard='') Or (Length(WildCard)>12) Or (Pos('\',FileName)>0) Or (Pos('/',FileName)>0) Or (Pos('\',WildCard)>0) Or (Pos('/',WildCard)>0) Then Exit;
If Pos('.',FileName)>0 Then
Begin
FileNameData:=Copy(FileName,1,Pos('.',FileName)-1);
FileExtensionData:=Copy(FileName,Pos('.',FileName)+1,3);
end Else
Begin
FileNameData:=FileName;
FileExtensionData:='';
end;
If Pos('.',WildCard)>0 Then
Begin
WildCardFileNameData:=Copy(WildCard,1,Pos('.',WildCard)-1);
WildCardFileExtensionData:=Copy(WildCard,Pos('.',WildCard)+1,3);
end Else
Begin
WildCardFileNameData:=WildCard;
WildCardFileExtensionData:='';
end;
If (Pos('.',FileNameData)>0) Or (Pos('.',FileExtensionData)>0) Or (Pos('.',WildCardFileNameData)>0) Or (Pos('.',WildCardFileExtensionData)>0) Or (FileNameData='') Or (WildCardFileNameData='') Then Exit;
While Pos('*',WildCardFileNameData)>0 Do WildCardFileNameData:=Copy(WildCardFileNameData,1,Pos('*',WildCardFileNameData)-1)+RepeatString('?',8-(Length(WildCardFileNameData)-1))+Copy(WildCardFileNameData,Pos('*',WildCardFileNameData)+1,8);
While Pos('*',WildCardFileExtensionData)>0 Do WildCardFileExtensionData:=Copy(WildCardFileExtensionData,1,Pos('*',WildCardFileExtensionData)-1)+RepeatString('?',3-(Length(WildCardFileExtensionData)-1))+Copy(WildCardFileExtensionData,Pos('*',
WildCardFileExtensionData)+1,3);
FileNameData:=FileNameData+RepeatString(#0,8-Length(FileNameData));
FileExtensionData:=FileExtensionData+RepeatString(#0,3-
Length(FileExtensionData));
WildCardFileNameData:=WildCardFileNameData+RepeatString(#0,8-Length(WildCardFileNameData));
WildCardFileExtensionData:=WildCardFileExtensionData+RepeatString(#0,3-Length(WildCardFileExtensionData));
SubstitutionFileName:='';
SubstitutionFileExtension:='';
For Index:=1 To 8 Do If WildCardFileNameData[Index]='?' Then SubstitutionFileName:=SubstitutionFileName+FileNameData[Index] Else SubstitutionFileName:=SubstitutionFileName+WildCardFileNameData[Index];
For Index:=1 To 3 Do If WildCardFileExtensionData[Index]='?' Then SubstitutionFileExtension:=SubstitutionFileExtension+FileExtensionData[Index] Else SubstitutionFileExtension:=SubstitutionFileExtension+WildCardFileExtensionData[Index];
While SubstitutionFileName[Length(SubstitutionFileName)]=#0 Do Delete(SubstitutionFileName,Length(SubstitutionFileName),1);
While SubstitutionFileExtension[Length(SubstitutionFileExtension)]=#0 Do Delete(SubstitutionFileExtension,Length(SubstitutionFileExtension),1);
If SubstitutionFileExtension<>'' Then SubstitutionWildCard:=SubstitutionFileName+'.'+SubstitutionFileExtension Else SubstitutionWildCard:=SubstitutionFileName;
end;
Function ReplaceSubstitutionWildCard(FileName,InWildCard,OutWildCard : String): String;
Var
InWildCardSubstitutionName : String;
OutWildCardSubstitutionName : String;
Begin
InWildCardSubstitutionName:=SubstitutionWildCard(FileName,InWildCard);
ReplaceSubstitutionWildCard:=SubstitutionWildCard(InWildCardSubstitutionName,OutWildCard);
end;
Begin
WriteLn(InquiryWildCard('FileD707.Dat','F*7?7.?A*'));
WriteLn(InquiryWildCard('FileD707.Dat','F*7?7.D*?'));
WriteLn(InquiryWildCard('FileD707.Dat','F*7?7.??*'));
WriteLn(InquiryWildCard('FileD707.Dat','F*7?7.*'));
WriteLn(InquiryWildCard('FileD707.Dat','*.*'));
WriteLn(InquiryWildCard('FileD707.Dat','*???*.*'));
WriteLn(InquiryWildCard('FileD707.Dat','F*7?7.0*?'));
WriteLn(SubstitutionWildCard('FileD707.Dat','F*7?7.$*?'));
WriteLn(ReplaceSubstitutionWildCard('FileName.Ext','#*.*','*$???.&'));
end.
=========================================================
It's written in the QBasic:
=========================================================
REM $DYNAMIC
OPTION BASE 1
DECLARE FUNCTION InquiryWildCard% (FileName$,WildCard$)
DECLARE FUNCTION ReplaceSubstitutionWildCard$(FileName$,InWildCard$,OutWildCard$)
DECLARE FUNCTION SubstitutionWildCard$(FileName$,WildCard$)
CONST False%=0
CONST True%=NOT False%
FUNCTION InquiryWildCard%(FileName$,WildCard$)
DIM FileNameData$
DIM FileExtensionData$
DIM WildCardFileNameData$
DIM WildCardFileExtensionData$
DIM InquiryFileNameData$
DIM InquiryFileExtensionData$
DIM InLineIndex%
DIM DataLine$
InquiryWildCard%=False%
IF (UCASE$(FileName$)="")OR(LEN(UCASE$(FileName$))>12)OR(INSTR(UCASE$(FileName$),"/")>0)OR(INSTR(UCASE$(FileName$),"\")>0)OR(INSTR(UCASE$(FileName$),"*")>0)OR(INSTR(UCASE$(FileName$),"?")>0)OR(UCASE$(WildCard$)="")OR(LEN(UCASE$(WildCard$))>12)OR(INSTR(UCASE$(WildCard$),"/")>0)OR(INSTR(UCASE$(WildCard$),"\")>0) THEN EXIT FUNCTION
IF INSTR(UCASE$(FileName$),".") THEN
FileNameData$=MID$(UCASE$(FileName$),1,INSTR(UCASE$(FileName$),".")-1)
FileExtensionData$=MID$(UCASE$(FileName$),INSTR(UCASE$(FileName$),".")+1)
ELSE
FileNameData$=UCASE$(FileName$)
FileExtensionData$=""
END IF
IF INSTR(UCASE$(WildCard$),".") THEN
WildCardFileNameData$=MID$(UCASE$(WildCard$),1,INSTR(UCASE$(WildCard$),".")-1)
WildCardFileExtensionData$=MID$(UCASE$(WildCard$),INSTR(UCASE$(WildCard$),".")+1)
ELSE
WildCardFileNameData$=UCASE$(WildCard$)
WildCardFileExtensionData$=""
END IF
IF (FileNameData$="")OR(LEN(FileNameData$)>8)OR(INSTR(FileNameData$,".")>0)OR(LEN(FileExtensionData$)>3)OR(INSTR(FileExtensionData$,".")>0)OR(WildCardFileNameData$="")OR(LEN(WildCardFileNameData$)>8)OR(INSTR(WildCardFileNameData$,".")>0)OR(LEN(WildCardFileExtensionData$)>3)OR(INSTR(WildCardFileExtensionData$,".")>0) THEN EXIT FUNCTION
WHILE INSTR(WildCardFileNameData$,"*")
DataLine$=""
WHILE LEN(DataLine$)<(8-(LEN(WildCardFileNameData$)-1))
DataLine$=DataLine$+"?"
WEND
WildCardFileNameData$=MID$(WildCardFileNameData$,1,INSTR(WildCardFileNameData$,"*")-1)+DataLine$+MID$(WildCardFileNameData$,INSTR(WildCardFileNameData$,"*")+1)
WEND
WHILE INSTR(WildCardFileExtensionData$,"*")
DataLine$=""
WHILE LEN(DataLine$)<(3-(LEN(WildCardFileExtensionData$)-1))
DataLine$=DataLine$+"?"
WEND
WildCardFileExtensionData$=MID$(WildCardFileExtensionData$,1,INSTR(WildCardFileExtensionData$,"*")-1)+DataLine$+MID$(WildCardFileExtensionData$,INSTR(WildCardFileExtensionData$,"*")+1)
WEND
FileNameData$=FileNameData$+SPACE$(8-LEN(FileNameData$))
FileExtensionData$=FileExtensionData$+SPACE$(3-LEN(FileExtensionData$))
WildCardFileNameData$=WildCardFileNameData$+SPACE$(8-LEN(WildCardFileNameData$))
WildCardFileExtensionData$=WildCardFileExtensionData$+SPACE$(3-LEN(WildCardFileExtensionData$))
InquiryFileNameData$=""
InquiryFileExtensionData$=""
FOR InLineIndex%=1 TO 8
IF MID$(WildCardFileNameData$,InLineIndex%,1)="?" THEN InquiryFileNameData$=InquiryFileNameData$+MID$(FileNameData$,InLineIndex%,1) ELSE InquiryFileNameData$=InquiryFileNameData$+MID$(WildCardFileNameData$,InLineIndex%,1)
NEXT InLineIndex%
FOR InLineIndex%=1 TO 3
IF MID$(WildCardFileExtensionData$,InLineIndex%,1)="?" THEN InquiryFileExtensionData$=InquiryFileExtensionData$+MID$(FileExtensionData$,InLineIndex%,1) ELSE InquiryFileExtensionData$=InquiryFileExtensionData$+MID$(WildCardFileExtensionData$,InLineIndex%,1)
NEXT InLineIndex%
InquiryWildCard%=(FileNameData$=InquiryFileNameData$)AND(FileExtensionData$=InquiryFileExtensionData$)
END FUNCTION
FUNCTION ReplaceSubstitutionWildCard$(FileName$,InWildCard$,OutWildCard$)
ReplaceSubstitutionWildCard$=SubstitutionWildCard$(SubstitutionWildCard$(FileName$,InWildCard$),OutWildCard$)
END FUNCTION
FUNCTION SubstitutionWildCard$(FileName$,WildCard$)
DIM FileNameData$
DIM FileExtensionData$
DIM WildCardFileNameData$
DIM WildCardFileExtensionData$
DIM SubstitutionFileNameData$
DIM SubstitutionFileExtensionData$
DIM InLineIndex%
DIM DataLine$
SubstitutionWildCard$=""
IF (UCASE$(FileName$)="")OR(LEN(UCASE$(FileName$))>12)OR(INSTR(UCASE$(FileName$),"/")>0)OR(INSTR(UCASE$(FileName$),"\")>0)OR(INSTR(UCASE$(FileName$),"*")>0)OR(INSTR(UCASE$(FileName$),"?")>0)OR(UCASE$(WildCard$)="")OR(LEN(UCASE$(WildCard$))>12)OR(INSTR(UCASE$(WildCard$),"/")>0)OR(INSTR(UCASE$(WildCard$),"\")>0) THEN EXIT FUNCTION
IF INSTR(UCASE$(FileName$),".") THEN
FileNameData$=MID$(UCASE$(FileName$),1,INSTR(UCASE$(FileName$),".")-1)
FileExtensionData$=MID$(UCASE$(FileName$),INSTR(UCASE$(FileName$),".")+1)
ELSE
FileNameData$=UCASE$(FileName$)
FileExtensionData$=""
END IF
IF INSTR(UCASE$(WildCard$),".") THEN
WildCardFileNameData$=MID$(UCASE$(WildCard$),1,INSTR(UCASE$(WildCard$),".")-1)
WildCardFileExtensionData$=MID$(UCASE$(WildCard$),INSTR(UCASE$(WildCard$),".")+1)
ELSE
WildCardFileNameData$=UCASE$(WildCard$)
WildCardFileExtensionData$=""
END IF
IF (FileNameData$="")OR(LEN(FileNameData$)>8)OR(INSTR(FileNameData$,".")>0)OR(LEN(FileExtensionData$)>3)OR(INSTR(FileExtensionData$,".")>0)OR(WildCardFileNameData$="")OR(LEN(WildCardFileNameData$)>8)OR(INSTR(WildCardFileNameData$,".")>0)OR(LEN(WildCardFileExtensionData$)>3)OR(INSTR(WildCardFileExtensionData$,".")>0) THEN EXIT FUNCTION
WHILE INSTR(WildCardFileNameData$,"*")
DataLine$=""
WHILE LEN(DataLine$)<(8-(LEN(WildCardFileNameData$)-1))
DataLine$=DataLine$+"?"
WEND
WildCardFileNameData$=MID$(WildCardFileNameData$,1,INSTR(WildCardFileNameData$,"*")-1)+DataLine$+MID$(WildCardFileNameData$,INSTR(WildCardFileNameData$,"*")+1)
WEND
WHILE INSTR(WildCardFileExtensionData$,"*")
DataLine$=""
WHILE LEN(DataLine$)<(3-(LEN(WildCardFileExtensionData$)-1))
DataLine$=DataLine$+"?"
WEND
WildCardFileExtensionData$=MID$(WildCardFileExtensionData$,1,INSTR(WildCardFileExtensionData$,"*")-1)+DataLine$+MID$(WildCardFileExtensionData$,INSTR(WildCardFileExtensionData$,"*")+1)
WEND
FileNameData$=FileNameData$+SPACE$(8-LEN(FileNameData$))
FileExtensionData$=FileExtensionData$+SPACE$(3-LEN(FileExtensionData$))
WildCardFileNameData$=WildCardFileNameData$+SPACE$(8-LEN(WildCardFileNameData$))
WildCardFileExtensionData$=WildCardFileExtensionData$+SPACE$(3-LEN(WildCardFileExtensionData$))
SubstitutionFileNameData$=""
SubstitutionFileExtensionData$=""
FOR InLineIndex%=1 TO 8
IF MID$(WildCardFileNameData$,InLineIndex%,1)="?" THEN SubstitutionFileNameData$=SubstitutionFileNameData$+MID$(FileNameData$,InLineIndex%,1) ELSE SubstitutionFileNameData$=SubstitutionFileNameData$+MID$(WildCardFileNameData$,InLineIndex%,1)
NEXT InLineIndex%
FOR InLineIndex%=1 TO 3
IF MID$(WildCardFileExtensionData$,InLineIndex%,1)="?" THEN SubstitutionFileExtensionData$=SubstitutionFileExtensionData$+MID$(FileExtensionData$,InLineIndex%,1) ELSE SubstitutionFileExtensionData$=SubstitutionFileExtensionData$+MID$(WildCardFileExtensionData$,InLineIndex%,1)
NEXT InLineIndex%
IF RTRIM$(SubstitutionFileExtensionData$)<>"" THEN SubstitutionWildCard$=RTRIM$(SubstitutionFileNameData$)+"."+RTRIM$(SubstitutionFileExtensionData$) ELSE SubstitutionWildCard$=RTRIM$(SubstitutionFileNameData$)
END FUNCTION
=========================================================
_______________________________________________________________
ICQ - You get the message, anywhere!
Get it @ http://www.icq.com
