Страница: 1 | 2 |
Вопрос: Список файлов
Добавлено: 15.11.05 16:41
Автор вопроса: Tamplier | ICQ: 298742928
Как можно получить список файлов в папке?
Ответы
Всего ответов: 22
Номер ответа: 1
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #1
Добавлено: 15.11.05 17:16
Можно vb-функцией Dir, можно api FindFirstFile/FindNextFile, можно DlgDirList
Номер ответа: 2
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #2
Добавлено: 15.11.05 17:53
Можно еще через FSO и FileListBox. ИМХО, несколько проще.
Номер ответа: 3
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #3
Добавлено: 15.11.05 17:56
Кстати, у меня вопрос:
Как получить массив со списком ВСЕХ файлов на диске?
Номер ответа: 4
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #4
Добавлено: 15.11.05 17:59
Рекурсия от корня. Только не забыть про скрытые. Были примеры на чем угодно, от FSO до Dir и DirListBox
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 15.11.05 20:31
полно примеров! лень?
Номер ответа: 6
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #6
Добавлено: 15.11.05 20:55
Рекурсию даж я помнится выкладывал, но через АПИ лучше, быстрее получается.
Номер ответа: 7
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #7
Добавлено: 15.11.05 20:58
Как получить массив со списком ВСЕХ файлов на диске?
Быстро найти смог в список, впрочем чуть переделать - 5 мин, зато будет чем тебе занятся
Private Const MAX_PATH = 260
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
Private Sub InterateObject(Source As String)
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
List1.AddItem Source & objName
Else
InterateObject Source & objName & "\"
End If
End If
Cont = FindNextFile(hSearch, WFD)
Loop
Cont = FindClose(hSearch)
End If
End Sub
Private Sub Command1_Click()
Dim dblTimer As Double
dblTimer = Timer
List1.Clear
InterateObject "C:\"
Debug.Print Round(Timer - dblTimer, 2)
End Sub
Номер ответа: 8
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #8
Добавлено: 18.11.05 13:38
А этим как? %( Дать только имя папки, так что ли? А то я раньше, когда пользовался только полное имя задавал...
Номер ответа: 9
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #9
Добавлено: 18.11.05 14:43
А этим как? %( Дать только имя папки, так что ли? А то я раньше, когда пользовался только полное имя задавал...
Tamplier А ты ответы то читаешь? №7 от HACKERа
Номер ответа: 10
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #10
Добавлено: 20.11.05 22:20
А нафига FSO юзать?
1. Прога требует DLL-шку;
2. Почти все (или все) ф-ции этого FSO реализуемы с помощью стандартных ф-ций VB.
Номер ответа: 11
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #11
Добавлено: 21.11.05 11:06
1. Эта DLL-ка имеется практически на любой машине.
2. Не нужно переписывать уже написанный код, причем не кривыми руками
Номер ответа: 12
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #12
Добавлено: 21.11.05 12:51
2AndreyMp:
Я код сохранил не читая... Тока потом, когда смотрел нашел.
Номер ответа: 13
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #13
Добавлено: 21.11.05 21:14
2 LOL: насчет кривых рук, imho, это у кого как. Кто может написать код (того же чтения файла), кто нет. Тем более, на старых компах DLL-ки может и не быть. Мало ли
Номер ответа: 14
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #14
Добавлено: 22.11.05 11:27
Кто может - тот спрашивать не будет
В FSO все это организовано достаточно удобно. А про старые компы, ИМХО, стоит уже давно забыть - уже и 2000 не найдешь, все на ХРени сидят. Ежели еще и 95 вспомнить - там мнооого чего нет, так что в любом случае дистриб готовить
Номер ответа: 15
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #15
Добавлено: 22.11.05 20:26
2 LOL:
Логично
Ну есть же особые челы, у которых старый добрый Win95/98 стоит. А хороший автор, imho, должен "заботится" о работоспособности своей проги на всех компах.