PDA

Ver la Versión Completa : Como saber si esta instalado el BDE en un ordenador


Jose Manuel
12-05-2003, 16:57:04
Hola,
Como puede una aplicación realizada en Delphi4 o 6, preguntar si en el ordenador en el que está instalada está el motor de acceso a base de datos, para que en caso de que no este instalado muestre un mensaje de aviso y no intente abrir las bases de datos, que produciria un error.

Saludos
Jose Manuel

FRANKER
12-05-2003, 17:22:55
Hechale un Vistazo al Truco 475 de Trucomania:

http://www.q3.nu/trucomania/truco.cgi?475&esp

Saludos y Suerte!!

Jose Manuel
12-05-2003, 19:13:10
Gracias FRANKER, he visitado TRUCOMANIA y he visto que la forma de conocer si un usuario tiene instalado o no el BDE es
IsBDEExist := (dbiInit(nil) = 0), pero como?

He incluido esta instrucción en el Datamodulo de mi aplicación,

procedure TfDataModulo.fDataModuloCreate(Sender: TObject);
begin
IsBDEExist := (dbiInit(nil) = 0)
.....
.....
End;

y me da el siguiente error al compilarlo, tal vez me falte algún USES, no sé:

[Error] Database.pas(531): Undeclared identifier: 'IsBDEExist'


Los USES que tengo son:
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBTables, Db, Bde;

roman
12-05-2003, 19:37:40
Posteado originalmente por Jose Manuel

He incluido esta instrucción en el Datamodulo de mi aplicación,

procedure TfDataModulo.fDataModuloCreate(Sender: TObject);
begin
IsBDEExist := (dbiInit(nil) = 0)
.....
.....
End;

y me da el siguiente error al compilarlo, tal vez me falte algún USES, no sé:

[Error] Database.pas(531): Undeclared identifier: 'IsBDEExist'



No te falta ningún uses sino leer con un poco más de cuidado antes de copiar y pegar. El truco esencialmente dice (mejor dicho la línea de código por que el truco en sí no lo he visto) que si la funcion dbiInit devuelve 0 es porque sí está instalado y si devuelve distinto de cero es porque no está instalado.

Entonces, la expresión (dbiInit(nil) = 0), que es una expresión booleana, la puedes asignar a una variable de tu elección, declarada por tí.

// Saludos

__cadetill
12-05-2003, 20:52:37
Ampliando un poco la respuesta de roman (que tiene toda la razon en lo que dice), puedes hacer una cosa asi


procedure TfDataModulo.fDataModuloCreate(Sender: TObject);
function IsBDEExist : boolean;
begin
Result := (dbiInit(nil) = 0);
end;
begin
if IsBDEExist then
// Existe
else
// No existe
end;


Espero que ahora te quede algo mas claro ;)

roman
12-05-2003, 20:59:52
Y ya si somos muy exigentes recomendaría pasar la función que indica Cadetill al dpr para que la verificación se ejecute antes que cualquier otra cosa pues es de suponerse que no tiene caso que el sistema inicie y se creen formularos y demás si no está instalado el BDE.

// Saludos

pd: Comentario al autor del truco en trucomanía. El nombre correcto sería "DoesBDEExist" :D

Jose Manuel
13-05-2003, 10:07:49
Gracias, ya me funciona correctamente.
Un saludo a todos.