powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Чтение большого файла
18 сообщений из 18, страница 1 из 1
Чтение большого файла
    #36035477
Realmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть текстовый файл, около 4 ГБ, его надо переработать...

Код: plaintext
1.
2.
3.
4.
5.
dim z as string
k = CStr("F:\temp\1.txt")
Open k For Input As # 1 
Do While Not EOF( 1 )
Line Input # 1 , zz
Loop

На моменте line input подвисает напрочь, не читает ни одной строки.
Может в файле строки как-то не обозначены...

В общем как это исправить? Может по-другому как-то читать этот файл?
Объясните плиз.
...
Рейтинг: 0 / 0
Чтение большого файла
    #36035893
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Realmk,

Может просто слишком долго открывается файл? Вы его вручную попробуйте открыть. Потом, у меня вопросы. Зачем Вы строку переводите в строку? Какой тайный смысл? И для чего декларируете переменную z? И где декларация zz? И у меня ощущение, что с кодом что-то неладно, т.к. Ваш "dim z as string" не с заглавных букв. Это нехороший признак. Вы не замечали?

Успехов
...
Рейтинг: 0 / 0
Чтение большого файла
    #36036695
Realmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выяснил что проблема в том, что в конце строки в моем файле стоит chr(10) а не chr(13)chr(10)
и line input не понимает что наступил конец строки и пытается проглотить весь файл.
Как по-другому можно построчно считать, а-то посимвольно он его 3 часа обрабатывал...
...
Рейтинг: 0 / 0
Чтение большого файла
    #36036743
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
читайте блоками

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Чтение большого файла
    #36036984
Realmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HandKot, подскажите плиз как это делается?
...
Рейтинг: 0 / 0
Чтение большого файла
    #36037235
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А попробуй так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
    Dim Fsys As Object
    Set Fsys = CreateObject("Scripting.FileSystemObject")
    Dim Tstream As Object
    Set Tstream = Fsys.OpenTextFile("c:\install.txt",  1 )
    Dim z As String
    While Not Tstream.AtEndOfStream
      z = Tstream.ReadLine
      'MsgBox (z)
    Wend
...
Рейтинг: 0 / 0
Чтение большого файла
    #36038090
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKotчитайте блоками
I Have Nine Lives You Have One Only
THINK!

Так просто у него не получится - обратите внимание на размер его файла в первом письме. Так что только через API. Или принять это как повод перехода на VB.NET для данного приложения...
...
Рейтинг: 0 / 0
Чтение большого файла
    #36038190
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrFHandKotчитайте блоками
I Have Nine Lives You Have One Only
THINK!

Так просто у него не получится - обратите внимание на размер его файла в первом письме. Так что только через API. Или принять это как повод перехода на VB.NET для данного приложения...

ну почему же
вот чтение по 100 байт

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Public Sub test()
    Dim s As String
    Open "Имя файла" For Binary As # 1 
    While Not EOF( 1 )
        s = Input( 100 , # 1 )
        Debug.Print s
    Wend
    Close # 1 
End Sub

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Чтение большого файла
    #36040332
F7H6G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
точно не помню но помоему Dim s As String не может быть длиннее 2гб.
...
Рейтинг: 0 / 0
Чтение большого файла
    #36040458
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да Вы правы F7H6G
но никто и не собирается в строку пихать такой объем
как минимум будут очень большие тормоза

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Чтение большого файла
    #36040906
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKotда Вы правы F7H6G
но никто и не собирается в строку пихать такой объем
как минимум будут очень большие тормоза

У Long-а есть так же есть предел. В принципе, конечно, одинаковыми кусками читать, скорей всего, можно. А вот выборочно - уже нет.
...
Рейтинг: 0 / 0
Чтение большого файла
    #36041354
Realmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fortibransaА попробуй так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
    Dim Fsys As Object
    Set Fsys = CreateObject("Scripting.FileSystemObject")
    Dim Tstream As Object
    Set Tstream = Fsys.OpenTextFile("c:\install.txt",  1 )
    Dim z As String
    While Not Tstream.AtEndOfStream
      z = Tstream.ReadLine
      'MsgBox (z)
    Wend


вот так читает...

побайтовое чтение не интересно ибо всё равно посивольно разбирать придётся

всем спасибо!
...
Рейтинг: 0 / 0
Чтение большого файла
    #36042326
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Realmk,

можно и через ado попробовать открыть.
...
Рейтинг: 0 / 0
Чтение большого файла
    #36043701
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати How To Seek Past VBA's 2GB File Limit


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Чтение большого файла
    #36043956
ПРИМЕРЧИК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Чтение большого файла
    #36044108
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: ПРИМЕРЧИК
> этот примерчик читает большие файлы довольно быстро

Что Вы говорите! А не пробовали запускать этот примерчик на файлах больше 2Гб
MSDNLOF Function
Returns a Long representing the size, in bytes, of a file opened using the Open statement

[qout MSDN]Long data type

A 4-byte integer ranging in value from -2,147,483,648 to 2,147,483,647. The ampersand (&) type-declaration character
represents a Long in Visual Basic.[/quot]

;)


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Чтение большого файла
    #36046475
ПРИМЕРЧИК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос Да Вы правы, ничего не получилось. Функцию LOF() придётся обходить системными ф-циями.
Но да же если её заменить, (я создал файл более 2 гиг, а результат этой фукции прописал ручками)
то на чтение и поиск "искомого слова" в этом файле у меня ушло 16 минут.
...
Рейтинг: 0 / 0
Чтение большого файла
    #36046637
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: ПРИМЕРЧИК
> Игорь Горбонос Да Вы правы, ничего не получилось. Функцию LOF() придётся обходить системными ф-циями.

я бы вообще все заменил на системные функции

> Но да же если её заменить, (я создал файл более 2 гиг, а результат этой фукции прописал ручками)
> то на чтение и поиск "искомого слова" в этом файле у меня ушло 16 минут.

Вот этого не проверял, но думаю что в любом случае задержки не снизить до приемлимого уровня комфортной работы на таких
объёмах :(


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Чтение большого файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]