Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Работа c ASCII фаилами


Автор: GorbunovDiman 5.3.2008, 10:52
 smile   У меня фрагмент кода не работает! Вот он:
Код

                Do Until EOF(1)
                      Line Input #5,Te
                      AllText= AllText & Te
                Loop
Но ВБ выдаёт ошибку: что путь указан не верно или невернай номер
Хотя все верно, правда размер файла 200кб!
Что это такое?    smile 

Автор: Akina 5.3.2008, 11:13
1) Используйте тег "Код".
2) В какой именно строке выдается ошибка?
3) где код открытия файла и определения переменных?

Автор: GorbunovDiman 5.3.2008, 12:16
 smile  Переписываю код:

                                   Dim Pats ,AllText,Te AS String
                                   'Pats=Путь к файлу
                                   Open Pats for input as #5
                                   Do Until EOF(1)
                                         Line Input #5,Te  'Ошибку он выдаёт имено в этой строке
                                         AllText= AllText & Te
                                   Loop

 smile  Но у меня этот же код работал ранее! Прада размер считываемого файла был нетакой    
большой!

Автор: Akina 5.3.2008, 13:55
Теперь пишем по-человечески...

Код

Dim Path As String, AllText As String, Buffer As String, Handle As Long
Path = "C:\Folder\Filename.ext"
Handle = FreeFile
Open Path For Input As #Handle
AllText = ""
Do Until EOF(Handle)
  Line Input #Handle, Buffer
  AllText = AllText & Buffer
Loop
Close #Handle

Запускаем. Если возникает ошибка - указываем ее номер.

Автор: GorbunovDiman 7.3.2008, 09:47
 smile Спасибо ! Но он у меня считывает толко начало файла!

Автор: Akina 7.3.2008, 10:04
Создал тест-файл размером в 2 мегабайта (100 тыс. строк). Прогнал на приведенном коде. Все содержимое считано без потерь.

Вывод - код правильный. Ищите проблемы в другом месте.

Добавлено через 5 минут и 33 секунды
В крайнем случае изучите и используйте современные методы работы с текстовыми файлами.
Код

Dim FSO as Object
Dim AllText As String
Set FSO = CreateObject("Scripting.FileSystemObject")
AllText = Replace(FSO.OpenTextFile("C:\Folder\Filename.ext", 1, False).ReadAll,vbCrLf,"")


Автор: GorbunovDiman 7.3.2008, 19:52
 smile Огроное спасибо!

Автор: JusTalionis 8.3.2008, 11:55
Цитата(GorbunovDiman @  5.3.2008,  12:16 Найти цитируемый пост)
 
Код
                                  Dim Pats ,AllText,Te AS String
                                   'Pats=Путь к файлу
                                   Open Pats for input as #5
                                   Do Until EOF(1)
                                         Line Input #5,Te  'Ошибку он выдаёт имено в этой строке
                                         AllText= AllText & Te
                                   Loop 
 

Ты открываешь файл под номером 5. А достижение конца какого файла проверяешь? - номера 1?! В этом и ошибка. Должно быть EOF(5).

Автор: GorbunovDiman 10.3.2008, 15:12
А какми кодами обазначается конец файла текста? Вот ентер например 13 и 10 , а конец файла тогда каким? smile 

Автор: Naghual 10.3.2008, 15:14
А конец файла обозначается его концом!   smile 

Автор: JusTalionis 10.3.2008, 18:48
Цитата(GorbunovDiman @  10.3.2008,  15:12 Найти цитируемый пост)
а конец файла тогда каким?
 Вообще-то есть такой код, означающий конец файла: 26 (1Ah), но многие функции им не пользуются, а определяют конец файла исходя, например, из его длины. Это я к слову, раз уж спрошено.

Это не имеет отношения к аргументу функции EOF.  Аргументом функции EOF является файловый номер, то есть то самое число, под которым открыт файл. Это число для функций проги выполняет роль имени файла. 

Прояснил тебе суть?

Автор: Akina 10.3.2008, 21:44
Цитата(JusTalionis @  10.3.2008,  19:48 Найти цитируемый пост)
Вообще-то есть такой код, означающий конец файла: 26 (1Ah), но многие функции им не пользуются, а определяют конец файла исходя, например, из его длины.

Символ CHR(26) одначает конец ТЕКСТОВОГО файла. И абсолютно все правильно написанные программы, работающие именно с текстовыми файлами (в т.ч. внешние утилиты командной строки операционной системы) правильно его обрабатывают.

Автор: JusTalionis 12.3.2008, 08:41
Гммм... Поскольку в жизни мне приходится иметь дело не только с правильно написанными программами, я замечал, что с этим кодом всегда не исключены какие-нибудь глюки... Без явной необходимости предпочитаю им не пользоваться...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)