Страница: 1 | 2 |
Вопрос: Почему так долго?
Добавлено: 04.05.09 16:49
Автор вопроса: Sergey
For Each files In IO.Directory.GetFiles ListBox1.Items.Add(files)
Next
For Each member In ListBox1.Items
TextBox3.Text = My.Computer.FileSystem.GetName(member)
Next
Файлов более 10000.
Почему, когда я получаю имя файла, то это происходит почти мгновенно, а когда хочу получить время создания, то процесс длится несколько минут.
Ответы
Всего ответов: 30
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 04.05.09 22:41
Юзай FindFirstFile/FindNextFile, в WIN32_FIND_DATA дата создания и имя файла получаются одновременно.
Номер ответа: 2
Автор ответа:
Sergey
Вопросов: 39
Ответов: 87
Профиль | | #2
Добавлено: 05.05.09 09:45
Там нет ни одного примера на VB, только на С.
Номер ответа: 3
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 05.05.09 10:03
Учи C++.
Номер ответа: 4
Автор ответа:
Sergey
Вопросов: 39
Ответов: 87
Профиль | | #4
Добавлено: 05.05.09 10:48
Я делаю прогу на VB 2008. Учить С - не выход.
Лучше скажи, где ошибка.
Public Structure FILETIME
 im dwLowDateTime As Long
 im dwHighDateTime As Long
End Structure
Public Structure WIN32_FIND_DATA
 im dwFileAttributes As Long
 im ftCreationTime As FILETIME
 im ftLastAccessTime As FILETIME
 im ftLastWriteTime As FILETIME
 im nFileSizeHigh As Long
 im nFileSizeLow As Long
 im dwReserved0 As Long
 im dwReserved1 As Long
 im cFileName As String
 im cAlternate As String
End Structure
Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _
 ByVal lpFileName As String, ByVal lpFindFileData As WIN32_FIND_DATA) As Long
For Each files In IO.Directory.GetFiles()
 im time As WIN32_FIND_DATA
textbox3.text=FindFirstFile(files, time.ftCreationTime)
Next
Номер ответа: 5
Автор ответа:
Sergey
Вопросов: 39
Ответов: 87
Профиль | | #5
Добавлено: 05.05.09 15:43
Без смайликов!!!
Номер ответа: 6
Автор ответа:
Sergey
Вопросов: 39
Ответов: 87
Профиль | | #6
Добавлено: 05.05.09 15:45
Не работает! Выводит ошибку!
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Номер ответа: 7
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #7
Добавлено: 05.05.09 16:29
Бага здесь.
Номер ответа: 8
Автор ответа:
Sergey
Вопросов: 39
Ответов: 87
Профиль | | #8
Добавлено: 05.05.09 16:39
Что надо сделать?
Номер ответа: 9
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #9
Добавлено: 05.05.09 21:49
cFileName As String * MAX_PATH
cAlternate As String * 14
Номер ответа: 10
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #10
Добавлено: 05.05.09 23:50
1) В .NET нет строк фиксированной длины (точнее есть, но они делаются не так как делались в VB6)
2) My.Computer.FileSystem.GetName работает мгновенно потому что он просто выполняет операции над строкой и не выполняет никаких дейсвтий, связанных с файловой системой и диском.
Номер ответа: 11
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #11
Добавлено: 06.05.09 00:43
С диском может и нет, но с копией файловой таблицы в памяти он точно что-то должен сделать хотябы прочитать название, времена и кучу аттрибутов.
Номер ответа: 12
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #12
Добавлено: 06.05.09 00:49
>но они делаются не так
Steel Brand, а как? тоже вроде Public cAlternate As String * 14
Номер ответа: 13
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #13
Добавлено: 06.05.09 01:13
С диском может и нет, но с копией файловой таблицы в памяти он точно что-то должен сделать хотябы прочитать название, времена и кучу аттрибутов.
Smith, за минуту до того как написать свой пост, я смотрел исходный код функции GetName. Но если хочешь, можем поспорить на пару сотен баксов на тему с какой файловой табилцей она работает, я в принципе не против.
Номер ответа: 14
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #14
Добавлено: 06.05.09 01:30
Пара сотен это твоя дежурная ставка? А чё так мелко, не чуЙствую уверенности в твоих двух сотнях
Я тож в принципе не против, если хочешь докажи мне что имя файла, время создания и последней модификации, а также атрибуты файла беруться не с диска(кэша).
Мне будет весьма любопытно это почитать.
Номер ответа: 15
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #15
Добавлено: 06.05.09 02:15
Пара сотен это твоя дежурная ставка? А чё так мелко, не чуЙствую уверенности в твоих двух сотнях
Я тож в принципе не против, если хочешь докажи мне что имя файла, время создания и последней модификации, а также атрибуты файла беруться не с диска(кэша).
Мне будет весьма любопытно это почитать.
Smith, ты ведешь нечестную игру.
Это очевидно - мне нет никакого смысла пытаться доказать что черное - это белое. Потому что черное на самом деле это черное. И это очевидно. И мне и тебе.
Я вел речь именно о фукнции GetName. Об остальных функциях я тебе предоставляю возможность поспорить с кем-нибудь другим на форуме.