Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Посимвольное чтение файла в VB6
Dumah
сообщение 14.11.2007 - 12:25

Продвинутый новичок
**

Группа: Участник
Сообщений: 58
Регистрация: 16.01.2005
Пользователь №: 6152


Народ! Столкнулся с такой проблемой:
Имеется текстовой файл в 1 строку без enter'ов длиной 10000+ символов. Необходимо его прочитать и обработать. Ну для начала вставить эти самые enter'ы на соответствующие места... wink.gif
Вопрос как это сделать?
FileNum1 = FreeFile
Open Name1 For Input As #FileNum1
Do Until EOF(FileNum1)
Line Input #FileNum1, Stroka1
'***********
loop

Пытается "проглотить" строку целиком и пишет ошибку sad.gif
Перейти в начало страницы
 
+Цитировать сообщение
Akina
сообщение 14.11.2007 - 12:46
Частый гость
***

Группа: Участник
Сообщений: 204
Регистрация: 30.05.2005
Пользователь №: 8240


CODE
Dim arrFile() As Byte
Dim nFile As Integer
Dim szDump As Long

nFile = FreeFile
Open FileName For Binary As #nFile
ReDim arrFile(1 To (LOF(nFile)))
szDump = UBound(arrFile)
Get #nFile, , arrFile
Close #nFile


CODE
Dim fso As Object
Dim f As Stream
Dim s As String

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(FileName, 1)
s = f.ReadAll
f.Close
Set f = Nothing
Set fso = Nothing

Выбирай что больше нравится или пиши по аналогии

Сообщение отредактировано Akina - 14.11.2007 - 12:48
Перейти в начало страницы
 
+Цитировать сообщение
Dumah
сообщение 14.11.2007 - 12:57

Продвинутый новичок
**

Группа: Участник
Сообщений: 58
Регистрация: 16.01.2005
Пользователь №: 6152


Сенкс! rolleyes.gif
Счас потестю.
Перейти в начало страницы
 
+Цитировать сообщение
Akina
сообщение 14.11.2007 - 13:01
Частый гость
***

Группа: Участник
Сообщений: 204
Регистрация: 30.05.2005
Пользователь №: 8240


Обрати внимание - в первом случае ты получишь массив байтов, во втором - строку.
Перейти в начало страницы
 
+Цитировать сообщение
SHADE
сообщение 14.11.2007 - 13:18

Bill rulz ^^
******
орден IV степени
Группа: Участник
Сообщений: 1418
Регистрация: 28.09.2003
Пользователь №: 24


Если это не какая-нибудь лаба типа "сдал, забыл", стоит уже разрюхать WinAPI. Проги написанные с использованием API функий обычно работают значительно быстрее smile.gif

Поставить эти две поги которые очень сильно помогают:
API-Viewer: ]]>http://www.activevb.de/rubriken/apiviewer/...iviewereng.html]]>
Почти все API функции, но без примеров их использования.

API-Guide: ]]>http://allapi.mentalis.org/agnet/appdown.shtml]]>
Только часто используемые API функции, но зато все с примерами.

Сообщение отредактировано SHADE - 14.11.2007 - 13:19
Перейти в начало страницы
 
+Цитировать сообщение
Akina
сообщение 14.11.2007 - 13:24
Частый гость
***

Группа: Участник
Сообщений: 204
Регистрация: 30.05.2005
Пользователь №: 8240


Цитата(SHADE @ 14.11.2007 - 13:18) *
Если это не какая-нибудь лаба типа "сдал, забыл", стоит уже разрюхать WinAPI. Проги написанные с использованием API функий обычно работают значительно быстрее


Позвольте не согласиться. Scripting Runtime Functions после компиляции дают практически тот же код. А строить обертку что руками, что через создание объекта - один хрен. К тому же API-код в Visual Basic более трудоемок и гораздо хуже сопровождаем.
Перейти в начало страницы
 
+Цитировать сообщение
SHADE
сообщение 15.11.2007 - 00:34

Bill rulz ^^
******
орден IV степени
Группа: Участник
Сообщений: 1418
Регистрация: 28.09.2003
Пользователь №: 24


Цитата(Akina @ 14.11.2007 - 13:24) *
Позвольте не согласиться. Scripting Runtime Functions после компиляции дают практически тот же код. А строить обертку что руками, что через создание объекта - один хрен. К тому же API-код в Visual Basic более трудоемок и гораздо хуже сопровождаем.


Для текстового файла может быть, а если захочется погонять бинари то FSO не совсем для этого преднозначен, я бы даже сказал что его не стоит для этого использовать.
Перейти в начало страницы
 
+Цитировать сообщение
Akina
сообщение 15.11.2007 - 10:14
Частый гость
***

Группа: Участник
Сообщений: 204
Регистрация: 30.05.2005
Пользователь №: 8240


Если метод ReadLine действительно ориентирован на таботу с текстовыми файлами, то Read и ReadAll - на работу с произвольными, в т.ч. бинарными, файлами.
И потом - понятие "текстовый" файл от "бинарного" отличается только тем, что МЫ особым образом интерпретируем некоторые байты и байтовые сочетания, не более того. Т.е. "текстовый" доступ фактически отличается наличием дополнительного парсинга. А это как раз обертка.
Перейти в начало страницы
 
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 25.04.2024 - 04:12