Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 | 2 |

 

  Вопрос: Чтение из файла махом Добавлено: 10.01.07 09:48  

Автор вопроса:  Makes
Подскажите, кто знает, как произвести четение из файла очень быстро. Время выполнения критично т.к. нужно прочитать в строку файл размером 10-15 Мб.

Сейчас пользуюсь посторочным считыванием с добавлением к результирующей строке. Ну очень медленно.

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #1 Добавлено: 10.01.07 13:30
Dim fso As New FileSystemObject

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-сайт: www.adsemenov.ru
 Профиль | | #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
Set f = CreateObject ("Scripting.FileSystemObject";)

Сия строка, я так понимаю, ее динамически подключает.

Ответить

Номер ответа: 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
Public Function LoadTextFile(ByVal path As String) As String
'Загрузка файла в переменную
 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-сайт: hw.t-k.ru
 Профиль | | #14
Добавлено: 12.01.07 17:17
Public Function LoadTextFile(ByRef path As String) As String
'Загрузка файла в переменную

 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


:-P

Arseny, fso - пакость

Ответить

Номер ответа: 15
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #15
Добавлено: 12.01.07 17:42
sne, VB - пакость :)
GlobalAlloc
GlobalLock
CreateFile
ReadFile
CloseHandle
GlobalUnlock
GlobalFree
:))

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам