Добрый день!
Winows XP, Clarion 6.
Есть ли возможность с DOS(BINARY) файлом работать как с файлами прямого доступа-по номеру записи?
Алексей
Прямой доступ к BINARY файлу
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
Re: Прямой доступ к BINARY файлу
А что значит "Работать"? И что - "по номеру записи?"
Cтандартные операции чтения-записи для Binary могут включать смещение и длину обновляемых данных,
можно, например построить класс, который работает соответственно.
Например, есть класс Db3, который читает двоичный файл формата dbf по записям. Или пишет. Прямой доступ не используется, но и он реализуется с полпинка.
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)
Но БЕЗ промежуточного чтения с начала файла
Алексей
Например, есть BIN файл в словаре с одним полем в 200 байт, например String(200)
Надо прочитать, например, 7000-ную запись этого файла, с возможностью ее изменения.
Ну, типа иметь возможность:
Get(file,7000)
.....
put(file)
Аналог:
loop I=1 to 7000
next(file)
end
....
put(file)
Но БЕЗ промежуточного чтения с начала файла
Алексей
Re: Прямой доступ к BINARY файлу
RecSize Equate(200)
...
Get(file,(7000-1) * Recsize+1, RecSize)
....
Put(file, (7000-1) * Recsize+1, Recsize)
Но проблемо...
...
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байт
А структуру определить как запись из 200байт
Это я только кажусь дураком! На самом деле я полный идиот!