Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Problemas con Firebird as an application (https://www.clubdelphi.com/foros/showthread.php?t=34251)

mcruzlr 02-08-2006 17:51:23

Problemas con Firebird as an application
 
Buenas.

Estoy creando una aplicación que necesita BD y me he decido por Firebird, no necesito (ni debo) que funcione en red, es decir, quiero usar Firebird como una "BD de escritorio".

Yo he instalado Firebird "as an application", y así se la voy a querer instalar a la gente que instale mi aplicación, ya que no quiero que esté corriendo el servidor de BD si no están usando mi aplicación. Mi problema es que no soy capaz de levantar el servicio desde código Delphi con esta instalación. He buscado por los foros y lo único que encuentro es como hacerlo mediante el guardian, pero esto sólo funciona si lo tienes configurado como "un servicio" (creo).

Resumiendo, no soy capaz de arrancar Firebird, ni de pararlo (cuando lo levanto a mano). Quisiera que me ayudaran a encontrar una solución, o que me corrigiesen en caso de que no haya entendido bien el uso de la "BD de escritorio" o el "as an application".

Gracias por su tiempo.

Sick boy 02-08-2006 18:50:06

La verdad, yo no lo he entendido.

Con lo facil que es instalar firebird como un servicio, no veo cual es el problema de que el server este en ejecución aunque no se use tu programa.
Ni consume recursos excesivos ni te creará ningun conflicto.

Por otro lado, quizas te interese embeded FireBird, que es una libreria y no necesita ejecutables.

Y lo de arrancar "as an application", dices que lo levantas "a mano", pues entonces utiliza winexec para arrancarlo desde delphi.
Y para matar procesos, yo utilizo esta función (creo que es de trucomania)
Código Delphi [-]
function KillTask(FileName: string): integer; 
var 
  ContinueLoop:    BOOL; 
  FSnapshotHandle: THandle; 
  FProcessEntry32: TProcessEntry32; 
const 
  PROCESS_TERMINATE = $0001; 
begin 
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
  FProcessEntry32.dwSize := Sizeof(FProcessEntry32); 
  ContinueLoop    := Process32First(FSnapshotHandle, FProcessEntry32); 
  while integer(ContinueLoop) <> 0 do 
  begin 
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(FileName)) or 
      (UpperCase(FProcessEntry32.szExeFile) = UpperCase(FileName))) then 
 
      Result := integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE, 
        BOOL(0), FProcessEntry32.th32ProcessID), 0)); 
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); 
  end; 
  CloseHandle(FSnapshotHandle); 
end;

Ya nos contaras como te ha ido!!!!

mcruzlr 03-08-2006 09:43:36

Gracias por la respuesta, lo probaré y os contaré los resultados en cuanto pueda.


La franja horaria es GMT +2. Ahora son las 13:04:48.

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