Можно ли загрузить текст из файла целиком, а не линиями...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Можно ли загрузить текст из файла целиком, а не линиями...

Сообщение cashman » 13.01.2005 (Чт) 2:03

Можно ли загрузить текст из файла целиком, а не линиями?
Open "ххх.txt" For Input As #1
Do Until EOF(1)
Line Input #1, txt
alltxt = alltxt + txt + vbCrLf
Loop
Close #1

И будет ли в этом прибавка к скорости загрузки

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.01.2005 (Чт) 2:37

Да, наверное будет.
Код: Выделить всё
Open "ххх.txt" For Input As #1
alltxt = Input(LOF(1), 1)
Close #1
Изображение

cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Сообщение cashman » 13.01.2005 (Чт) 2:41

я знаю EOF - End of File
а как расшифровывается LOF?..

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.01.2005 (Чт) 3:55

Length of File
Изображение

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 13.01.2005 (Чт) 8:17

При большом размере файла может быть падение скорости, притом резкое - как-то натолкнулся... Лучше читать блоками, килобайт так по 32...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.01.2005 (Чт) 8:36

Операции доступа к файлам и так буферизированы. При этом операция чтения одного байта занимает столько же, сколько и полного блока. Так что лучше читать максимально...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 13.01.2005 (Чт) 11:10

Во во ! Челы, мне к вам. Объясните мне каким образом FSO читает громадные файлы моментом, GDI+ читает файл размером 68 метров моментом ?

И как ускорить чтение из двоичного файла блоками байтов ???

http://bbs.vbstreets.ru/viewtopic.php?t=12465&start=30

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 13.01.2005 (Чт) 12:30

Во во ! Челы, мне к вам. Объясните мне каким образом FSO читает громадные файлы моментом, GDI+ читает файл размером 68 метров моментом ?


Вообще-то (по секрету) FSO, GDI+, и тот-же VB - все они читают файл с одинаковой скоростью.

И как ускорить чтение из двоичного файла блоками байтов ???


Надо просто установить правильный драйвер.
Руки, в общем, надо править.

Например, в самом начале было:

Код: Выделить всё
Open "ххх.txt" For Input As #1
Do Until EOF(1)
     Line Input #1, txt
     alltxt = alltxt + txt + vbCrLf
Loop
Close #1


Здесь есть одна довольно типичная ошибка приводящая к тормозам при работе с большими строками. Попробуй найти ее сам. ;)

В качестве подсказки - она в строке:

Код: Выделить всё
alltxt = alltxt + txt + vbCrLf


;)
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 13.01.2005 (Чт) 12:44

А вот не хрена не с одинаковой.
:|
У FSO скорость чтения в 10 раз больше !

И я как раз хочу понять чем это сделано....

А на счёт ошибки в коде - я тот код не использую....

У меня "+" нету.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.01.2005 (Чт) 12:50

Есть у тебя он...
Тебе ж говорят, дело не в чтении, а в операции сохранения в память :) Которая каждый приводит к страшным redim'ам, и чем больше уже считано, тем redim'ы страшнее :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 13.01.2005 (Чт) 12:53

2 Gserg: Ну тк... Мож посоветуете чего нить, как и что реализовать ?

У нас вроде форум, чтобы помогать а не загадки загадывать ?

А то я тут как [censored] мучаюсь уже 3 неделю.... :evil: :?: :(

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 13.01.2005 (Чт) 12:54

А вот не хрена не с одинаковой.


Ну я и говорю - драйвер править надо - телепатов тут мало...

А на счёт ошибки в коде - я тот код не использую....
У меня "+" нету.


Ну и в чем ошибка?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.01.2005 (Чт) 12:55

ALX_2002 писал(а):2 Gserg: Ну тк... Мож посоветуете чего нить, как и что реализовать ?(

Дык в оба топика смотри - и не только мои посты :wink:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 13.01.2005 (Чт) 12:57

GDI+ читает файл размером 68 метров моментом ?


Кстати, думаешь в переменную этот файл поместится, если у юзера, к примеру 32 мега оперативки?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 13.01.2005 (Чт) 12:59

Там ошибка, что операции по нескольку раз проходят при добавлении.

И при выводе в текстовое поле скорость резко падает.

http://bbs.vbstreets.ru/viewtopic.php?t=12465&start=30

А моя ошибка в том, что файл впрямую читаю, а надо каким то

образом из кэша диска его читать.

:(

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.01.2005 (Чт) 13:00

Поместится. У процесса 4 гига оперативки. У каждого...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.01.2005 (Чт) 13:07

Andrey Fedorov писал(а):
GDI+ читает файл размером 68 метров моментом ?


Кстати, думаешь в переменную этот файл поместится, если у юзера, к примеру 32 мега оперативки?

Поместится, и в полгига - тоже поместится. Своп для этого и нужен :-)

[edit]Блин, долго печатаю...[/edit]
Изображение

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 13.01.2005 (Чт) 13:12

Эх.... Читал бы FSO двоичные файлы правильно.... Я бы его только и юзал..... :(

А GDI+ помоему только сразу весь файл читает, да ? :(

VOS
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 72
Зарегистрирован: 04.11.2004 (Чт) 18:01
Откуда: СПб

Сообщение VOS » 13.01.2005 (Чт) 15:37

ИМХО, быстрее и легше всего так:

Я так писал(а):open "file.txt" for binary as #1
inpt$=space$(lof(1))
get #1,,inpt$
close #1
- Папа, а правда, что форумы делают человека идиотом?
- Гыыы, лол, сынок!

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 13.01.2005 (Чт) 15:53

Хе.... быстрее всего....

Вот попробуй загрузить этим кодом 600 мегов, а потом через FSO тоже

самое сделать. И сравни скорость..... :(

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 14.01.2005 (Пт) 10:50

Это где ж ты такие текстовые файлы взял?
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 14.01.2005 (Пт) 10:59

Это AVI.... :oops: :(


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: YaCy [Bot] и гости: 22

    TopList