Возможна ли замена Driver

BD> Возможно ли поменять Driver файла во время выполнения?
BD> FileXXX{PROP:Driver} =
BD> Почему то не помогает.

Нет, легально не получится. Свойство PROP:Driver ТОЛЬКО возвращает наименование драйвера для данного файла. Но не меняет его.

В принципе, есть два варианта:

  1. использовать библиотеки третьих разработчиков, например, что-то типа MetaDriver.
    Там это сделано через подстановку в качестве драйвера своей «пустышки». А уже в пустышке» они перенаправляют запрос нужному драйверу.
  2. делать это самому, просто меняя в заголовке файла адрес точки входа в нужный драйвер.

Второй вариант, имхо, более предпочтителен. Хотя-бы потому, что использует ТОЛЬКО ЛЕГАЛЬНЫЕ средства самого Клариона.
Нет необходимости в подключении самописных драйверов, которые, к тому-же, необходимо корректировать в зависимости от версии Клриона.

Точный код реализации приводить не буду.
Приведу лишь алгоритм — тот кто понимает, сможет его реализовать на любой версии Клариона.
Если тема будет интересна многим, могу более подробно ее «развернуть» в письме.

TPS_Driver  BYTE,EXTERNAL,DLL(dll_mode),NAME('TOPSPEED')
DAT_Driver  BYTE,EXTERNAL,DLL(dll_mode),NAME('CLARION')
BTR_Driver  BYTE,EXTERNAL,DLL(dll_mode),NAME('BTRIEVE')
SQL_Driver  BYTE,EXTERNAL,DLL(dll_mode),NAME('MSSQL')
ODBC_Driver BYTE,EXTERNAL,DLL(dll_mode),NAME('ODBC')

MyFile FILE,DRIVER('TOPSPEED'),PRE(FIL),NAME(GLO:FName),CREATE
       ...
       END

  ...
  FHeaderAddr# = Address(MyFile)! Адрес заголовка файла
  DrvAddr# = Address(DAT_Driver)! Адрес точки входа драйвера 'CLARION'
  POKE(FHeaderAddr#,DrvAddr#)   ! Замена драйвера для файла MyFile

  GLO:FName = ...
  Create(MyFile)                ! Создаем DAT-файл заданной структуры
  ...                           ! Работаем с этим файлом
  Close(MyFile)

  DrvAddr# = Address(BTR_Driver)! Адрес точки входа драйвера 'BTRIEVE'
  POKE(FHeaderAddr#,DrvAddr#)   ! Замена драйвера для файла MyFile

  GLO:FName = ...
  Create(MyFile)                ! Создаем BTRIEVE-файл заданной структуры
  ...                           ! Работаем с этим файлом
  Close(MyFile)

В версиях до C55 этого достаточно.
В С55 желательно (даже обязательно!) после закрытия файла или
ПЕРЕД сменой драйвера вызвать:

  MAP
    MODULE('Clarion RTL')
      DeActivate_Drv(FILE _File),NAME('Cla$deactivate_drv'),DLL(dll_mode)
    END
  END

  ...
  DeActivate_Drv(MyFile)

В С60 можно делать то-же самое или использовать новую функцию, которую SV вывели на верхний уровень, DESTROY(MyFile).

P.S.
Кстати, если не секрет — зачем это?
Что-то с трудом могу себе представить реальную задачу, в которой это могло-бы потребоваться. Если только для конвертора из одного формата в другой?