Прямой доступ к BINARY файлу

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Прямой доступ к BINARY файлу

Сообщение Алексей- Софт-Центр »

Добрый день!
Winows XP, Clarion 6.
Есть ли возможность с DOS(BINARY) файлом работать как с файлами прямого доступа-по номеру записи?

Алексей
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: Прямой доступ к BINARY файлу

Сообщение Yufil »

А что значит "Работать"? И что - "по номеру записи?"
Cтандартные операции чтения-записи для Binary могут включать смещение и длину обновляемых данных,
можно, например построить класс, который работает соответственно.

Например, есть класс Db3, который читает двоичный файл формата dbf по записям. Или пишет. Прямой доступ не используется, но и он реализуется с полпинка.
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Re: Прямой доступ к BINARY файлу

Сообщение Алексей- Софт-Центр »

Добрый день!
Например, есть BIN файл в словаре с одним полем в 200 байт, например String(200)
Надо прочитать, например, 7000-ную запись этого файла, с возможностью ее изменения.
Ну, типа иметь возможность:
Get(file,7000)
.....
put(file)

Аналог:

loop I=1 to 7000
next(file)
end
....
put(file)
Но БЕЗ промежуточного чтения с начала файла

Алексей
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: Прямой доступ к BINARY файлу

Сообщение Yufil »

RecSize Equate(200)
...
Get(file,(7000-1) * Recsize+1, RecSize)
....
Put(file, (7000-1) * Recsize+1, Recsize)

Но проблемо...
Аватара пользователя
Губин Игорь
Шубуршун
Сообщения: 2584
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 3 раза
Поблагодарили: 26 раз

Re: Прямой доступ к BINARY файлу

Сообщение Губин Игорь »

Лучше не совсем так, а просто Get/set(File,(7000-1)*RecSize)
А структуру определить как запись из 200байт
Это я только кажусь дураком! На самом деле я полный идиот!
Ответить