Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Чтение текстового файла / 14 сообщений из 14, страница 1 из 1
02.08.2007, 14:17
    #34701295
Romka_84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение текстового файла
Всем здрасте. Граждане подскажите пжлста, как текстовый файл полностью загнать в одну строку? Я, как везде ето написано, делаю следующим образом:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
path = MeFile
    FileHandle = FreeFile
    Open path For Input As #FileHandle
    Do While Not EOF(FileHandle)
        Line Input #FileHandle, Str
        s = s + Str
    Loop
    Close #FileHandle

Т.е. весь файл считывается построчно. А еси файл большой, то така штука работает очень долго. Соотвесно, у меня возникли подозрения, что если файл сразу в строку считать, то ето будет гораздо быстрее, только вот какой командой это сделать - я чет не нашел...
...
Рейтинг: 0 / 0
02.08.2007, 14:50
    #34701417
gjghjc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение текстового файла
Поищи по форуму по словам "FSO" "ReadLine" "OpenTextFile" "ReadAll"
я думаю это то что тебе нужно.
С уважением, Николай.
...
Рейтинг: 0 / 0
02.08.2007, 15:00
    #34701465
Letter_D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение текстового файла
Типа так можно:
Код: plaintext
1.
2.
3.
4.
Dim f3 As String
f3 = String(FileLen("c:\1.txt"), vbNull)
Open "c:\1.txt" For Binary As # 1 
Get # 3 ,  1 , f3
Close
...
Рейтинг: 0 / 0
02.08.2007, 15:30
    #34701596
Letter_D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение текстового файла
Код: plaintext
Get # 1 
Да.
...
Рейтинг: 0 / 0
02.08.2007, 15:43
    #34701650
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение текстового файла
Romka_84А еси файл большой, то така штука работает очень долго.тип String ограничен 64 килобайтами

придётся использовать массив

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Open Path For Binary As #FileHandle

Dim rSize As Long
rSize = LOF(FileHandle)

Dim masFile() As Byte
ReDim masFile( 1  To rSize)

Get FileHandle, , masFile()
Close #FileHandle
...
Рейтинг: 0 / 0
04.08.2007, 13:11
    #34705480
pinpam
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение текстового файла
А если без оператора GET? Можно:
Dim F As String
Dim MyText As string
Private Function reads ()
F = Free File
Open "путь_к_файлу" For Input As #F
Do Until EOF(F)
Line Input #F, MyText
Loop
Text1.Text = Text1.Text & MyText & vbCrLf
Close #F
End Function
...
Рейтинг: 0 / 0
06.08.2007, 10:14
    #34706919
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение текстового файла
тип String ограничен 64 килобайтами

?! С каких это пор? Всю жизнь был 2 гигабайта, а тут нате - урезали.
...
Рейтинг: 0 / 0
06.08.2007, 12:47
    #34707506
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение текстового файла
Melkiades тип String ограничен 64 килобайтами

?! С каких это пор? Всю жизнь был 2 гигабайта, а тут нате - урезали. тип String 64k
...
Рейтинг: 0 / 0
06.08.2007, 12:54
    #34707530
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение текстового файла
Мда. Смотрю в книгу - вижу фигу.
...
Рейтинг: 0 / 0
06.08.2007, 13:49
    #34707731
gjghjc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение текстового файла
А фраза про "fixed lenght" Вас уважаемый klen не смутила??? :)

С уважением, Николай.
...
Рейтинг: 0 / 0
06.08.2007, 14:24
    #34707846
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение текстового файла
gjghjcА фраза про "fixed lenght" Вас уважаемый klen не смутила??? :)

С уважением, Николай.фраза - то была "Тип String", а не Variant.
Но я думаю, что надо использовать массив и не самый большой LOF(FileHandle), а частями, например, по 1024 байт.

Дело в том что когда мне, надо было читать большие текстовые файлы как можно быстрее,
я подбирал размер массива
и вот что у меня получилось
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
If rSize >  500000  Then
   chast =  1024 
ElseIf rSize >  400000  Then
   chast =  512 
ElseIf rSize >  300000  Then
   chast =  256 
ElseIf rSize >  200000  Then
   chast =  128 
Else
   chast =  64 
End If
, где rSize это размер файла, а chast это кэш


С уважением, Игорь.
...
Рейтинг: 0 / 0
06.08.2007, 14:50
    #34707955
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение текстового файла
klen_ gjghjcА фраза про "fixed lenght" Вас уважаемый klen не смутила??? :)
С уважением, Николай.фраза - то была "Тип String", а не Variant.

Так ведь тип String - это как раз variable length string, и тип Variant здесь не причем. Учите матчасть.
...
Рейтинг: 0 / 0
06.08.2007, 15:17
    #34708069
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение текстового файла
MelkiadesТак ведь тип String - это как раз variable length stringПонял, учту.
...
Рейтинг: 0 / 0
06.08.2007, 15:35
    #34708160
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение текстового файла
В строку за раз:

Код: plaintext
1.
2.
3.
4.
FileHandle = FreeFile
Open path For Input As #FileHandle
s=Space$( LOF(#FileHandle))
Get #FileHandle, , s
Close #FileHandle

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


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