O$>>>Как определить версию установленного на машине клиента Oracle (программно разумеется) ?
PPA>>А под чем работаешь?
O$>windows 98, nt4,2k, xp (или я вопроса не понял?)

Правильно, под другими ос это делается не так.

А тут из реестра достаешь путь к ORACLE_HOME
От туда+\bin динамически грузишь oci*.dll
А потом получаешь функции по такому алгоритму:

    OCI70 := True;
    GetProc(HDLL, OCI70, @orlon, 'orlon');
    OCI72 := OCI70;
    GetProc(HDLL, OCI72, @olog, 'olog');
    OCI73 := OCI72;
    GetProc(HDLL, OCI73, @opinit, 'opinit');
    // OCI 8 Relational functions
    OCI80Detected := True;
    GetProc(HDLL, OCI80Detected, @OCIInitialize, 'OCIInitialize');
    // External Procedure functions (OCI 805)
    ExtProcDetected := OCI80Detected;
    GetProc(HDLL, ExtProcDetected, @OCIExtProcGetEnv, 'ociepgoe');
    // New OCI 8.1 functions
    OCI81 := OCI81Detected;
    GetProc(HDLL, OCI81Detected, @OCIEnvCreate, 'OCIEnvCreate');
    GetProc(HDLL, OCI81Detected, @OCIDirPathAbort, 'OCIDirPathAbort');

.......
function OCIVersion: string;
begin
  if OCI81 then Result := 'Version 8.1'
  else
    if OCI80 then Result := 'Version 8.0'
  else
    if OCI73 then Result := 'Version 7.3'
  else
    if OCI72 then Result := 'Version 7.2'
  else
    if OCI70 then Result := 'Version 7.0'


p.s.
Код взят из DOA (c) Allround Automations
Автор: PPA    Оценить