Visual Basic, .NET, ASP, VBA, VBScript
 
  Библиотека кодов  
  Работа с файлами/директориями  
     
  Определение соответствия имени файла маске  
  Данный пример позволяет определить, соответствует ли имя файла какой-либо маске. Очень часто вы используете специальные символы (к примеру при поиске файлов) - знак вопроса (?) или звездочку (*). Знак вопроса означает, что в данном месте может быть только один символ, а звездочка означает, что в данном месте может быть любое количество символов. В общем, посмотрите на прилагающийся пример, и вы сразу поймете в чем дело.
Private Function IsMask(ByVal FileName As String, ByVal Mask As String) As Boolean
'объявляем переменные
Dim i As Integer
Dim pos As Integer
Dim posit As Integer
Dim curs As String
Dim tmp As Integer
Dim temp As String
Dim j As Integer
'Заменяем идущие подряд несколько звёздочек на одну
pos = 1
posit = InStr(pos, Mask, "**")
Do While posit <> 0
temp = Left$(Mask, posit - 1)
temp = temp & Mid$(Mask, posit, 1)
temp = temp & Right$(Mask, Len(Mask) - (posit + 1))
Mask = temp
posit = InStr(pos, Mask, "**")
Loop
'Заменяем *? на *
pos = 1
posit = InStr(pos, Mask, "*?")
Do While posit <> 0
temp = Left$(Mask, posit - 1)
temp = temp & Mid$(Mask, posit, 1)
temp = temp & Right$(Mask, Len(Mask) - (posit + 1))
Mask = temp
posit = InStr(pos, Mask, "*?")
Loop
'Перебираем все символы в Mask
For pos = 1 To Len(Mask)
curs = Mid$(Mask, pos, 1)
Select Case curs
'если символ "?", то это любой знак
Case "?"
j = j + 1
i = i + 1
'если символ "*", то
Case "*"
If pos = Len(Mask) Then
'Если это последний символ, отпускаем с богом
i = i + (Len(FileName) - j)
'А если нет, то ищем символв FileName,
'стоящий в Mask за звездой
Else
tmp = InStr(pos, FileName, Mid$(Mask, pos + 1, 1))
'Если символ не найден, то
If tmp = 0 Then
'Значение функции = False
IsMask = False
'Выходим из функции
Exit Function
End If
'i = i + кол-во непроверенных символов
i = i + (tmp - (j + 1))
'то же самое с j
j = j + (tmp - (j + 1))
End If
'если символ не "*" и не "?", то
Case Else
j = j + 1
'если символ в FileName совпадает с символом
'в Mask, то
If Mid$(FileName, j, 1) = Mid$(Mask, pos, 1) Then
'Увеличиваем счётчик попаданий
i = i + 1
End If
End Select
'завершаем цикл
Next
'Если i соответствует длине FileName, то
'значение функции True, иначе False
If i = Len(FileName) Then IsMask = True Else IsMask = False
End Function

Private Sub Form_Load()
MsgBox IsMask("ritual.txt", "*.*"), , "ritual.txt" & " *.*"
MsgBox IsMask("ritual.txt", "r*.*"), , "ritual.txt" & " r*.*"
MsgBox IsMask("ritual.txt", "m*.*"), , "ritual.txt" & " m*.*"
MsgBox IsMask("ritual.txt", "?i????.*"), , "ritual.txt" & " ?i????.*"
MsgBox IsMask("ritual.txt", "*u??.*"), , "ritual.txt" & " *u??.*"
MsgBox IsMask("ritual.txt", "*.htm"), , "ritual.txt" & " *.htm"
MsgBox IsMask("ritual.txt", "*.txt"), , "ritual.txt" & " *.txt"
End
End Sub
 
     
  VBNet online (всего: 51585)  
 

Логин:

Пароль:

Регистрация, забыли пароль?


В чате сейчас человек
 
     
  VBNet рекомендует  
   
     
  Лучшие материалы  
 
ActiveX контролы (112)
Hitman74_Library (36119)
WindowsXPControls (20739)
FlexGridPlus (19374)
DSMAniGifControl (18295)
FreeButton (15157)
Примеры кода (546)
Parol (18027)
Passworder (9299)
Screen saver (7654)
Kerish AI (5817)
Folder_L (5768)
Статьи по VB (136)
Мое второе впечатление... (11236)
VB .NET: дорога в будущее (11161)
Основы SQL (9225)
Сообщения Windows в Vi... (8788)
Классовая теория прогр... (8619)
 
     
Техническая поддержка MTW-хостинг | © Copyright 2002-2011 VBNet.RU | Пишите нам