Привет!
Надо при старте проги определить доступность сервера и, если недоступен, сменить драйвер у пачки файлов. Доступность сервера не проблема, а вот драйвер... Это возможно?
Александр Агеев (aageev@satren.ru)
Написал: ClaList(2)
Смена драйвера в рантайм
Clarion, Clarion 7
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Гость
Сообщение Гость »
Вполне.
Информация о драйвере находится в заголовке FILE-структуры.
Точнее - адрес точки входа в главную процедуру драйвера.
Для версий до C6.0 - первый LONG в заголовке (смещение +00).
Для C6.x - второй LONG в заголовке (смещение +04).
Проще всего достать адрес нового драйвера прямо из заголовка другого файла, заранее обьявленного с нужным драйвером. И, естественно, надежнее всего - прямо в том потоке, где будет использоваться файл.
В любом случае, рекомендую перед сменой драйвера выполнить оператор DESTROY. Правда, в последней версии C61 разработчики опять его "спрятали" внутрь RTL, но имя осталось прежним Cla$FILE_DESTROY.
В C5x для этого следует использовать Cla$deactivate_drv.
Впрочем, эта функция является универсальной - работает и в C6.x
Удачи!
=============================
С уважением, Олег А. Руденко.
Oleg_Rudenko@mail.ru
Oleg_Rudenko@mail333.com
Библиотека DynaLib
http://dynalib.narod.ru
Написал: ClaList(2)
Информация о драйвере находится в заголовке FILE-структуры.
Точнее - адрес точки входа в главную процедуру драйвера.
Для версий до C6.0 - первый LONG в заголовке (смещение +00).
Для C6.x - второй LONG в заголовке (смещение +04).
Проще всего достать адрес нового драйвера прямо из заголовка другого файла, заранее обьявленного с нужным драйвером. И, естественно, надежнее всего - прямо в том потоке, где будет использоваться файл.
В любом случае, рекомендую перед сменой драйвера выполнить оператор DESTROY. Правда, в последней версии C61 разработчики опять его "спрятали" внутрь RTL, но имя осталось прежним Cla$FILE_DESTROY.
В C5x для этого следует использовать Cla$deactivate_drv.
Впрочем, эта функция является универсальной - работает и в C6.x
Удачи!
=============================
С уважением, Олег А. Руденко.
Oleg_Rudenko@mail.ru
Oleg_Rudenko@mail333.com
Библиотека DynaLib
http://dynalib.narod.ru
Написал: ClaList(2)
Гость
Сообщение Гость »
Привет!
Т.е. Если я правильно понял, для 5.5 это будет так:
1. объявляем один файл заранее с нужным драйвером
2. Прописываем Cla$deactivate_drv в Мап как
Deact(FILE),Name('Cla$deactivate_drv') (а параметры?)
3. через Long DrvPoint &= (Address(FileLabelWithNewDriver)) получаем в
DrvPoint нужное значение
4. Для каждого файла делаем
Deact(oldFile)
Long NewPoint &= (Address(oldFile))
NewPoint = DrvPoint
B всё? Этого точно хватит? Драйвер в файле потом проактивируется сам?
Александр Агеев (aageev@satren.ru)
Написал: ClaList(2)
Т.е. Если я правильно понял, для 5.5 это будет так:
1. объявляем один файл заранее с нужным драйвером
2. Прописываем Cla$deactivate_drv в Мап как
Deact(FILE),Name('Cla$deactivate_drv') (а параметры?)
3. через Long DrvPoint &= (Address(FileLabelWithNewDriver)) получаем в
DrvPoint нужное значение
4. Для каждого файла делаем
Deact(oldFile)
Long NewPoint &= (Address(oldFile))
NewPoint = DrvPoint
B всё? Этого точно хватит? Драйвер в файле потом проактивируется сам?
Александр Агеев (aageev@satren.ru)
Написал: ClaList(2)
Гость
Сообщение Гость »
Если NewPoint и DrvPoint у тебя обьявлены как &LONG, то - да, достаточно.
При первом-же обращении к файлу с новым драйвером драйвер сам проинициализирует все внутренние структуры, необходимые для работы с этим файлом.
=============================
С уважением, Олег А. Руденко.
Oleg_Rudenko@mail.ru
Oleg_Rudenko@mail333.com
Библиотека DynaLib
http://dynalib.narod.ru
Написал: ClaList(2)
При первом-же обращении к файлу с новым драйвером драйвер сам проинициализирует все внутренние структуры, необходимые для работы с этим файлом.
=============================
С уважением, Олег А. Руденко.
Oleg_Rudenko@mail.ru
Oleg_Rudenko@mail333.com
Библиотека DynaLib
http://dynalib.narod.ru
Написал: ClaList(2)
Гость
Вернуться в «CLARION for Windows»
Перейти
- CW
- ↳ CLARION for Windows
- ↳ CLARION for Internet
- ↳ Clarion.NET
- Эксклюзив
- ↳ Приват
- CLARION и...
- ↳ Reports
- ↳ Железо
- ↳ Готовые программы, шаблоны, библиотеки...
- ↳ cJSON
- ↳ LibCurl
- ↳ MAV
- ↳ SQL, Oracle, ...
- ↳ Multi-программирование(Pascal/Delphi, и т.д.)
- ↳ WinDev
- DOS
- ↳ CLARION for DOS
- Разное
- ↳ Новости
- ↳ English
- ↳ Ресурсы
- ↳ Работа
- ↳ Обо всем ...
- ↳ Обсуждение этого Форума (типа, Гостевая книга)