Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 01-06-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Debes comprobar si existe la entrada siguiente en el registro de windows (en HKEY_LOCAL_MACHINE):

Código Delphi [-]
  _INTERBASE_5_   = '\SOFTWARE\Interbase Corp\InterBase\CurrentVersion';
  _INTERBASE_6_   = '\SOFTWARE\Borland\InterBase\CurrentVersion';
  _FIREBIRD_1_    = '\SOFTWARE\FirebirdSQL\Firebird\CurrentVersion';
  _FIREBIRD_1_5_  = '\SOFTWARE\Firebird Project\Firebird Server\Instances';
  _FIREBIRD_2_0_  = '\SOFTWARE\Firebird Project\Firebird Server\Instances';
  _FIREBIRD_2_1_  = '\SOFTWARE\Firebird Project\Firebird Server\Instances';
  _FIREBIRD_2_5_  = '\SOFTWARE\Firebird Project\Firebird Server\Instances';

Y después puedes mirar si existe en ese directorio uno de estos:

Código Delphi [-]
  _IBSERVER_      = 'gds32.dll';    // 'ibserver.exe';
  _FBSERVER_      = 'fbclient.dll'; // 'fbserver.exe';

Yo tengo una función que he ido ampliando con los años, no es ninguna maravilla, pero funciona

Código Delphi [-]
(* Buscar ruta al interbase / firebird
   Recibe _IB5_  = interbase 5
          _IB6_  = interbase 6
          _FB1_  = firebird 1
          ''     = buscar todos
   Devuelve la ruta a ibserver.exe/fbserver o '' si no lo encuentra.
*)
function getRutaIBFIBlocal(cServerSql:string=''):string;
const
  _INTERBASE_5_   = '\SOFTWARE\Interbase Corp\InterBase\CurrentVersion';
  _INTERBASE_6_   = '\SOFTWARE\Borland\InterBase\CurrentVersion';
  _FIREBIRD_1_    = '\SOFTWARE\FirebirdSQL\Firebird\CurrentVersion';
  _FIREBIRD_1_5_  = '\SOFTWARE\Firebird Project\Firebird Server\Instances';
  _FIREBIRD_2_0_  = '\SOFTWARE\Firebird Project\Firebird Server\Instances';
  _FIREBIRD_2_1_  = '\SOFTWARE\Firebird Project\Firebird Server\Instances';
  _FIREBIRD_2_5_  = '\SOFTWARE\Firebird Project\Firebird Server\Instances';
  //
  // cambio lo de fbserver porque en la versión classic no es ese el ejecutable, sino fb_inet_server, o algo así
  _IBSERVER_      = 'gds32.dll';    // 'ibserver.exe';
  _FBSERVER_      = 'fbclient.dll'; // 'fbserver.exe';
  //
  _IB5_   = '_IB5_';
  _IB6_   = '_IB6_';
  _FB1_   = '_FB1_';
  _FB15_  = '_FB15_';
  _FB20_  = '_FB20_';
  _FB21_  = '_FB21_';
  _FB25_  = '_FB25_';
var
  Reg : TRegistry;
  iSize : Longint;
  cRuta : string;
begin
  Result := '';
  cRuta := '';
  iSize := 0;
  //
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  //
  if cServerSql='' then
  begin
    Result := getRutaIBFIBlocal(_IB5_);
    if Result='' then
    begin
      Result := getRutaIBFIBlocal(_IB6_);
      if Result='' then
      begin
        Result := getRutaIBFIBlocal(_FB1_);
        if Result='' then
        begin
          Result := getRutaIBFIBlocal(_FB15_);
          if Result='' then
          begin
            Result := getRutaIBFIBlocal(_FB20_);
            if Result='' then
            begin
              Result := getRutaIBFIBlocal(_FB21_);
              if Result='' then
              begin
                Result := getRutaIBFIBlocal(_FB25_);
                Exit;
              end;
            end;
          end;
        end;
      end;
    end;
  end;
  // ----------
  // ----------
  if cServerSql = _IB5_ then
  begin
    if Reg.KeyExists(_INTERBASE_5_) then
    begin
      Reg.OpenKey(_INTERBASE_5_,false);
      cRuta := Reg.ReadString('RootDirectory') + 'bin\';
      iSize := GetMideFichero(cRuta+_IBSERVER_);
      if iSize > 0 then
        Result := cRuta;
    end
  end
  else
  if cServerSql = _IB6_ then
  begin
    if Reg.KeyExists (_INTERBASE_6_) then
    begin
      Reg.OpenKey (_INTERBASE_6_,false);
      cRuta := Reg.ReadString('RootDirectory') + 'bin\';
      iSize := GetMideFichero(cRuta+_IBSERVER_);
      if iSize > 0 then
        Result := cRuta;
    end;
  end
  else
  if cServerSql = _FB1_ then
  begin
    if Reg.KeyExists (_FIREBIRD_1_) then
    begin
      Reg.OpenKey (_FIREBIRD_1_,false);
      cRuta := Reg.ReadString('RootDirectory') + 'bin\';
      iSize := GetMideFichero(cRuta+_IBSERVER_);
      if iSize > 0 then
        Result := cRuta;
    end;
  end
  else
  if cServerSql = _FB15_ then
  begin
    if Reg.KeyExists (_FIREBIRD_1_5_) then
    begin
      Reg.OpenKey (_FIREBIRD_1_5_,false);
      cRuta := Reg.ReadString('DefaultInstance') + 'bin\';
      iSize := GetMideFichero(cRuta+_FBSERVER_);
      if iSize > 0 then
        Result := cRuta;
    end;
  end
  else
  if cServerSql = _FB20_ then
  begin
    if Reg.KeyExists (_FIREBIRD_2_0_) then
    begin
      Reg.OpenKey (_FIREBIRD_2_0_,false);
      cRuta := Reg.ReadString('DefaultInstance') + 'bin\';
      iSize := GetMideFichero(cRuta+_FBSERVER_);
      if iSize > 0 then
        Result := cRuta;
    end;
  end
  else
  if cServerSql = _FB21_ then
  begin
    if Reg.KeyExists (_FIREBIRD_2_1_) then
    begin
      Reg.OpenKey (_FIREBIRD_2_1_,false);
      cRuta := Reg.ReadString('DefaultInstance') + 'bin\';
      iSize := GetMideFichero(cRuta+_FBSERVER_);
      if iSize > 0 then
        Result := cRuta;
    end;
  end
  else
  if cServerSql = _FB25_ then
  begin
    if Reg.KeyExists (_FIREBIRD_2_5_) then
    begin
      Reg.OpenKey (_FIREBIRD_2_5_,false);
      cRuta := Reg.ReadString('DefaultInstance') + 'bin\';
      iSize := GetMideFichero(cRuta+_FBSERVER_);
      if iSize > 0 then
        Result := cRuta;
    end;
  end;
  //
  Reg.Free;
end;

Y aquí está getMideFichero
Código Delphi [-]
function GetMideFichero(const cFileName: String): Integer;
var
  SearchRec : TSearchRec;
begin
  if FindFirst(cFileName,faAnyFile,SearchRec)=0 then
    Result := SearchRec.Size
  else
    Result := 0;
  //
  SysUtils.FindClose(SearchRec);
end;

Última edición por Casimiro Noteví fecha: 01-06-2011 a las 10:21:37.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como saber si existe una URL Pensa2r Internet 2 19-10-2010 00:27:56
Como saber si un form existe Mary Carmen G. Varios 5 12-08-2008 15:05:31
OpenDialog para imagenes con vista previa .. existe algo asi? ingel Varios 2 22-05-2008 16:58:39
Como saber si existe aplicación ?? BlueSteel Varios 6 22-02-2008 23:02:36
Como saber si una Tabla existe con Ado manuelpr Conexión con bases de datos 7 02-03-2005 16:23:01


La franja horaria es GMT +2. Ahora son las 18:38:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi