Страница: 1 | 2 |
Вопрос: Чтение из файла махом
Добавлено: 10.01.07 09:48
Автор вопроса: Makes
Подскажите, кто знает, как произвести четение из файла очень быстро. Время выполнения критично т.к. нужно прочитать в строку файл размером 10-15 Мб.
Сейчас пользуюсь посторочным считыванием с добавлением к результирующей строке. Ну очень медленно.
Ответы
Всего ответов: 16
Номер ответа: 1
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #1
Добавлено: 10.01.07 13:30
Private Sub Command1_Click()
Dim FileN As String, myfile As String
Dim FileSize As Long
FileN = "Путь\имя файла"
If fso.FileExists(FileN) = True Then
FileSize = FileLen(FileN)
Open FileN For Input As #1
myfile = Input(FileSize, #1)
Close #1
End If
End Sub
Попробуй... должна быть подключена scrrun.dll
Номер ответа: 2
Автор ответа:
Makes
Вопросов: 8
Ответов: 36
Профиль | | #2
Добавлено: 10.01.07 14:43
Arseny, Вы гений. Не первый раз в этом убеждаюсь. Все заработало гладко и быстро.
Только я не понял для чего dll - ка. Все работает и без нее.
Номер ответа: 3
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #3
Добавлено: 10.01.07 14:52
____ Да она просто уже подключена...
Номер ответа: 4
Автор ответа:
Makes
Вопросов: 8
Ответов: 36
Профиль | | #4
Добавлено: 10.01.07 15:16
Если я чего то не понимю, то возникает желание в этом разобраться.
Почитал в инете, нашел, что scrrun.dll нужна для работы с FSO. Из примера Арсения я вырезал все, что связано с FSO и использовал только суть его примера. Именно потому у меня все заработало без dll-ки.
Но вопрос в другом. В моем проекте я использую FSO в других местах, но dll никакую не подключал. Объявляю я FSO по другому:
Dim f
Set f = CreateObject("Scripting.FileSystemObject"
If f.FileExists("файл" Then
действия
End If
Может быть в этом причина. А может я просто не знаю, что она подключена. Если подключена, то почему она не отображается в Components?
Номер ответа: 5
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #5
Добавлено: 10.01.07 15:26
А ты на чем пишешь?
VB6 - Project->References
VBA - Tools->References
Если будешь делать инсталляху, этот файл необходимо будет в нее включить.
scrrun.dll - Microsoft Scripting Runtime (все fso'шные функции в этой библе).
Номер ответа: 6
Автор ответа:
Makes
Вопросов: 8
Ответов: 36
Профиль | | #6
Добавлено: 10.01.07 15:30
У меня VB6. Сейчас залез в References. Нашел библиотеку scrrun.dll - Microsoft Scripting Runtime, но напротив нее галка не стоит. Все работает. В чем дело?
Номер ответа: 7
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #7
Добавлено: 10.01.07 15:39
Сия строка, я так понимаю, ее динамически подключает.
Номер ответа: 8
Автор ответа:
Makes
Вопросов: 8
Ответов: 36
Профиль | | #8
Добавлено: 10.01.07 15:46
Значит, засунув эту dll-ку инсталляшкой в system32 и зарегистрировав ее, я обесобасю себя от ошибок?
А какие еще dll-ки нужно вкулючить в инсталляшку, а какие необязательно? У меня в референсиз стоят галки напротив:
Visual Basic For Applications
Visual Basic runtime objects and procedures
Visual Basic objects and procedures
OLE Automation
Microsoft DAO 3.51 Object Library
Номер ответа: 9
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #9
Добавлено: 10.01.07 15:52
A включи Package & Deployment Wizard. Он тебе все соберет в одну папку.
Или любой другой с поддержкой RunTime VB6.
Я, например, юзаю Wise Installation System.
Не жаловался еще...
Номер ответа: 10
Автор ответа:
Makes
Вопросов: 8
Ответов: 36
Профиль | | #10
Добавлено: 10.01.07 15:59
Спасибо. Так и поступлю.
Номер ответа: 11
Автор ответа:
Elkatib
Вопросов: 18
Ответов: 25
Профиль | | #11
Добавлено: 10.01.07 16:06
СКРН.dll, начиная с Winows 98, в обязательном порядке входим в комплект поставки операционной системы.
Номер ответа: 12
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #12
Добавлено: 12.01.07 01:52
'Загрузка файла в переменную
Dim l As Long
Dim s As String
Dim n as Byte
n = FreeFile
Open path For Binary As #n
l = LOF(n)
s = String(l, vbNullChar)
Get n, , s
Close #n
LoadTextFile = s
End Function
Номер ответа: 13
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #13
Добавлено: 12.01.07 08:45
Пришел HACKER и раскрыл все темы...
Номер ответа: 14
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #14
Добавлено: 12.01.07 17:17
'Загрузка файла в переменную
Dim n as Integer
n = FreeFile()
Open path For Binary access read lock write As n
LoadTextFile = String$(LOF(n), vbNullChar)
Get n, vbnull, LoadTextFile
Close n
End Function
Arseny, fso - пакость
Номер ответа: 15
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #15
Добавлено: 12.01.07 17:42
sne, VB - пакость
GlobalAlloc
GlobalLock
CreateFile
ReadFile
CloseHandle
GlobalUnlock
GlobalFree
)