Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Чтение файла методом Random

13K
20 января 2006 года
Frende
9 / / 14.01.2006
Здрасьте еще раз.
Открываю файл методом Random.
В модуле пользовательский тип данных, в котором несколько переменных.
Читаю данные циклом:

Private Sub Pokaz()
Dim X As Byte
On Error Resume Next
For X = 0 To 1
Get #2, X + Start, Blok
Text2(X) = RTrim(Blok.xx)
Text3(X) = RTrim(Blok.yy)
Text4(X) = RTrim(Blok.zz)
Next X
On Error GoTo 0
End Sub

Но проблема такая, что в начале файла несколько байтов не нужные и их читать ненадо. Как сделать чтобы чтение начиналось с определённого байта, а дальше шло как обычно.
499
20 января 2006 года
madjahed
149 / / 14.01.2004
Цитата:
Originally posted by Frende
Но проблема такая, что в начале файла несколько байтов не нужные и их читать ненадо. Как сделать чтобы чтение начиналось с определённого байта, а дальше шло как обычно.


Всё дело в операторе Get:

Get номер,позиция,переменная

Если тебе надо пропустить первые 4 байта, то пишешь:
Get номер,4,переменная.
Если тебе надо пропустить первые 133 байта, то пишешь:
Get номер,133,переменная.

Надеюсь ты понял логическую связь.

P.S. Уже как 2 года на Basic'e не программирую - только на С++ и Асме, но знания, вроде, отсались :-). Ностальгия меня берет, вот и захожу сюда иногда.

13K
21 января 2006 года
Frende
9 / / 14.01.2006
Цитата:
Originally posted by madjahed
Всё дело в операторе Get:

Get номер,позиция,переменная

Если тебе надо пропустить первые 4 байта, то пишешь:
Get номер,4,переменная.
Если тебе надо пропустить первые 133 байта, то пишешь:
Get номер,133,переменная.



Странно...
У меня получается так:
Если написать Get номер,4,переменная, то ,будет пропуск не четырёх байтов, а моих четырёх данных (пользовательские которые). Но они то другого размера. Они у меня по 30 байт. Получается чтение начнётся со 120 байта. А нады с пятого:roll:

459
21 января 2006 года
gacol
273 / / 12.02.2003
Цитата:
Originally posted by Frende
Странно...
У меня получается так:
Если написать Get номер,4,переменная, то ,будет пропуск не четырёх байтов, а моих четырёх данных (пользовательские которые). Но они то другого размера. Они у меня по 30 байт. Получается чтение начнётся со 120 байта. А нады с пятого:roll:


Чтобы пропускать байтами надо открыть файл в режиме Binary. А в режиме Random идет пропуск по записям. Но можно создать соответств. структуру записи, например:
Type Record
xx As String * 20 ' для пропуска 20 байтов
ID As Integer ' твоя переменная
End Type

Dim MyRecord As Record
Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
Get #1, , MyRecord

13K
22 января 2006 года
Frende
9 / / 14.01.2006
Цитата:
Originally posted by gacol
Чтобы пропускать байтами надо открыть файл в режиме Binary. А в режиме Random идет пропуск по записям. Но можно создать соответств. структуру записи, например:
Type Record
xx As String * 20 ' для пропуска 20 байтов
ID As Integer ' твоя переменная
End Type

Dim MyRecord As Record
Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
Get #1, , MyRecord



Так тут получается в этом случае переменная xx будет каждыё раз считываться.
---------
Неужели остаётся только Binary метод???

459
23 января 2006 года
gacol
273 / / 12.02.2003
Цитата:
Originally posted by Frende
Так тут получается в этом случае переменная xx будет каждыё раз считываться.
---------
Неужели остаётся только Binary метод???


А какие неудобства с Binary?
В твоем первоначальном примере надо лишь заменить сначала Random на Binary и умножить X на *rLen(длина записи)

Get #2, X*rLen + Start, Blok

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог