Ошибка при чтении файла

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
neic
Жираф
Жираф
 
Сообщения: 492
Зарегистрирован: 13.02.2005 (Вс) 23:44
Откуда: Сланцы

Ошибка при чтении файла

Сообщение neic » 25.01.2006 (Ср) 20:24

Корче ввожу:
Код: Выделить всё
a = FreeFile
Open "C:\1.txt" For Input As a
Text1.Text = Input(LOF(a), a)
Close #a

Васик выдаёт ошибку 64 : "Input past end of file"

Что неправильно?

noob4ever
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 117
Зарегистрирован: 05.01.2006 (Чт) 0:58

Сообщение noob4ever » 25.01.2006 (Ср) 20:35

Open "C:\1.txt For Input As #1
Do While Not (EOF(1))
Input #1, a
Text1.Text =a
Loop
Close #1

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 25.01.2006 (Ср) 23:34

neic, код работает, и теоретически и сам проверял - работает. Вероятно код у тебя всё-таки другой.

noob4ever, приведённый вами код считывает последнюю строку
и то не всю. Надеюсь вы понимаете, что этому человеку в Text1 нужен весь файл, а не одна строка. Будте впредь внимательны.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

neic
Жираф
Жираф
 
Сообщения: 492
Зарегистрирован: 13.02.2005 (Вс) 23:44
Откуда: Сланцы

Сообщение neic » 26.01.2006 (Чт) 0:38

Хакер
Всё... разобрался... Если в файле присуствует много преходов на одной строчке (т.е. vbcrlf)(кто не поймёт могу выложить файл), то Васёк наченает ругаться. Или по другой причине?

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

Сообщение GSerg » 26.01.2006 (Чт) 3:22

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

AndreyIl
Обычный пользователь
Обычный пользователь
 
Сообщения: 82
Зарегистрирован: 18.10.2005 (Вт) 16:17
Откуда: г. Брянск

Сообщение AndreyIl » 26.01.2006 (Чт) 9:43

При работе с файлами с использованием Input столкнулся с подобной проблемой: читается не вся строка, если есть определенные символы.

Используя FSO.ReadLine, решил эту проблему.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 26.01.2006 (Чт) 13:03

GSerg
уже объяснил по поводу текстового режима работы с файлом, но для тех, кто в танке еще раз повторяю:

если в вашем файле используются разные спец-символы (CHR(0)), то это не текстовый файл, даже если расширение вы поставили TXT. поэтому с ним надо работать в Binary режиме

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 26.01.2006 (Чт) 14:34

Konst_One писал(а):даже если расширение вы поставили TXT. поэтому с ним надо работать в Binary режиме


Ну это для дет. сада, да? Наверное если человек пишет программы он знает, что расширение - только часть имени, содержащая информацию о типе файла для оболочки, чтобы та смогла открыть файл правильной прогой.

А мне кажется подозрительным, что файл содержащий спецсимволы пытаются поместить в TextBox.

neic делай тогда так, ошибок не будет никогда:
Код: Выделить всё

a = FreeFile
Open "C:\1.txt" For BINARY As a
Buffer$ = Space(LOF(a))
Get #a, 1, Buffer$
Text1.Text = Buffer$
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 26.01.2006 (Чт) 14:38

детсад не детсад, а вот видно из этого:
Васик выдаёт ошибку 64 : "Input past end of file"

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 26.01.2006 (Чт) 15:25

Видно то как раз из этого
Open "1.txt" for input as #a
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 26.01.2006 (Чт) 16:05

Хакер
в общем, мы друг друга поняли :wink:


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

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

Сейчас этот форум просматривают: Google-бот и гости: 8

    TopList  
cron