Страница 1 из 1

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

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

Алексей

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

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

Например, есть класс Db3, который читает двоичный файл формата dbf по записям. Или пишет. Прямой доступ не используется, но и он реализуется с полпинка.

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

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

Аналог:

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

Алексей

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

Добавлено: 13 Сентябрь 2013, 16:31
Yufil
RecSize Equate(200)
...
Get(file,(7000-1) * Recsize+1, RecSize)
....
Put(file, (7000-1) * Recsize+1, Recsize)

Но проблемо...

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

Добавлено: 13 Сентябрь 2013, 18:32
Губин Игорь
Лучше не совсем так, а просто Get/set(File,(7000-1)*RecSize)
А структуру определить как запись из 200байт