Страница: 1 |
Страница: 1 |
Вопрос: Найти файлик :))
Добавлено: 11.01.07 19:19
Автор вопроса: «0опай» | ICQ: Два, потом нуль, дальше-девять-шесть-девять-семь.
У меня проблема - нужно найти файл. К сожалению, форум отказался искать на эту тему. Так что прошу у тех, кто уже знает.
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #1
Добавлено: 11.01.07 19:46
дык а какой файл то? без имени то конечно не найдёшь
Номер ответа: 2
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #2
Добавлено: 11.01.07 20:57
Хм... Да, вопрос интересен и познавателен...
Номер ответа: 3
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #3
Добавлено: 11.01.07 21:02
По каким кpитериям нужен поиск файла?
Морфеус, а я найду. По размеру например
Номер ответа: 4
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #4
Добавлено: 11.01.07 21:42
ещё скажи по содержанию
Типа файл, в котором написано "3плвзопавз324шзщл", тогда просто создаёшь на Цэ 1.дат и туда пишешь "3плвзопавз324шзщл"
Номер ответа: 5
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #5
Добавлено: 11.01.07 21:59
Найди то, не знаю что. Хм...
Номер ответа: 6
Автор ответа:
«0опай»
ICQ: Два, потом нуль, дальше-девять-шесть-девять-семь.
Вопросов: 4
Ответов: 20
Профиль | | #6
Добавлено: 11.01.07 22:02
Не понял предыдущего сообщения ) Смешным показалось.
Морфеус, имя у файла есть, но меня интересует только код самого поиска.
AgentFire: По имени.
Номер ответа: 7
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #7
Добавлено: 11.01.07 23:06
Номер ответа: 8
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #8
Добавлено: 12.01.07 00:39
У меня был где то алгоритм самодельный на FindFirstFile/FindNextFile, но он во вложенных папках не искал
Номер ответа: 9
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #9
Добавлено: 12.01.07 01:45
Private Const INVALID_HANDLE_VALUE = -1
Private Const FILE_ATTRIBUTE_DIRECTORY As Long = &H10
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Public Declare Function RemoveDirectory Lib "kernel32.dll" Alias "RemoveDirectoryA" (ByVal lpPathName As String) As Long
Dim FindFile() As String
Dim CountFindFile
Private Sub InterateObject(Source As String, file$())
'Подпрограмма для поиска файлов
If Right(Source, 1) <> "\" Then Source = Source & "\"
Dim objName As String
Dim hSearch As Long
Dim WFD As WIN32_FIND_DATA
Dim Cont As Integer
Cont = True
hSearch = FindFirstFile(Source & "*", WFD)
If hSearch <> INVALID_HANDLE_VALUE Then
Do While Cont
objName = Left(WFD.cFileName, InStr(WFD.cFileName, Chr(0)) - 1)
If Not (objName = "." Or objName = ".." Then
If (WFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = 0 Then
For i = 0 To UBound(file$)
file$(i) = LCase(file$(i))
objName = LCase(objName)
If InStr(1, file$(i), "*", 1) = 0 Then
If file$(i) = objName Then
FindFile$(CountFindFile) = Source & objName
CountFindFile = CountFindFile + 1
ReDim Preserve FindFile$(CountFindFile)
End If
Else
If Spliting(file$(i), "." = Spliting(objName, "." Then
FindFile$(CountFindFile) = Source & objName
CountFindFile = CountFindFile + 1
ReDim Preserve FindFile$(CountFindFile)
Else
e0$ = Left(Spliting(file$(i), "\", InStr(1, Spliting(file$(i), "\", ".", 1) - 1)
If InStr(1, objName, ".", 1) - 1 >= 0 Then e1$ = Left(objName, InStr(1, objName, ".", 1) - 1)
If e0$ = e1$ Then
FindFile$(CountFindFile) = Source & objName
CountFindFile = CountFindFile + 1
ReDim Preserve FindFile$(CountFindFile)
End If
End If
End If
Next i
Else
InterateObject Source & objName & "\", file$
End If
End If
Cont = FindNextFile(hSearch, WFD)
Loop
Cont = FindClose(hSearch)
End If
End Sub
Номер ответа: 10
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #10
Добавлено: 12.01.07 10:38
Ну, ппц, полезли в АПИ. FSO - код всемеро короче будет.
Номер ответа: 11
Автор ответа:
Djon
Вопросов: 61
Ответов: 471
Web-сайт:
Профиль | | #11
Добавлено: 12.01.07 10:49
Он специально - народ пугает.
Номер ответа: 12
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #12
Добавлено: 13.01.07 02:12
Ну это то что готовое под рукой есть Если её по нормальному переписать, оно может не в семеро, но раза в два-три будет А про FSO - мы ж пути лёгкие не ищем!