PDA

Ver la Versión Completa : como comprobar que está instalado el BDE?


lemon-club
14-06-2003, 18:04:08
Saludos de nuevo!

He leido un comentario en TRUCOMANIA sobre comprobar si el BDE está instalado al ejecutar nuestro programa pero soy un mar de dudas. No sé implementarlo porque está incompleto.

La forma que explica para comprobar si está instalado el BDE es la siguiente:
_______________________________________________
1. Leyendo el registro de Windows:

RootKey := HKEY_LOCAL_MACHINE;
OpenKey('SOFTWARE\Borland\Database Engine', False);
try
s := ReadString('CONFIGFILE01');
{BDE Instalada}
{BDE Installed}
finally
CloseKey;
end;

2. Intentar incializar la BDE.

IsBDEExist := (dbiInit(nil) = 0)

NOta: Personalmente yo prefiero el segundo metodo porque el otro no es bueno ya que una desintalación podría remover los archivos de la BDE pero no registro de Windows...
__________________________________________________

¿Sabeis la forma de implementar cualquiera de estas líneas en un programa?
No me reconoce muchas de las variables como "dbiInit" y "IsDBEExist" no sé qué tipo de variable es.

:o
En resumen,
¿¿sabeis la forma de comprobar si está instalado el BDE antes de que se lance nuestro programa??
y
¿¿sabeis la forma de instalar el bde de una forma manual sin utilizar el InstallShield??
Para esta segunda pregunta me han dicho haciendo una llamada al

gracias mil de nuevo

Jorge
Spaña

marcoszorrilla
14-06-2003, 18:49:20
Por qué no pruebas con esto:

Incluye Db, BDE en el Uses.

procedure TForm1.Button1Click(Sender: TObject);
var
ThisVersion : SYSVersion;
begin
DbiGetSysVersion(ThisVersion);
ShowMessage('Versión del B.D.E. Utilizada = ' + IntToStr(ThisVersion.iVersion));
end;




O más ampliado según la ayuda de Delpni al respecto.


Get BDE system version information. This function can return the SYSVersion structure or clear and add the information to the SysVerList TStringList. If nil is passed in, only the SYSVersion structure is returned. This example uses the following input:

Ver := fDbiGetSysVersion(MyList);

The function is:

function fDbiGetSysVersion(SysVerList: TStringList): SYSVersion;

var
Month, Day, iHour, iMin, iSec: Word;
Year: SmallInt;
begin
Check(DbiGetSysVersion(Result));
if (SysVerList <> nil) then begin
with SysVerList do begin
Clear;
Add(Format('ENGINE VERSION=%d', [Result.iVersion]));
Add(Format('INTERFACE LEVEL=%d', [Result.iIntfLevel]));
Check(DbiDateDecode(Result.dateVer, Month, Day, Year));
Add(Format('VERSION DATE=%s', [DateToStr(EncodeDate(Year, Month,

Day))]));
Check(DbiTimeDecode(Result.timeVer, iHour, iMin, iSec));
Add(Format('VERSION TIME=%s', [TimeToStr(EncodeTime(iHour, iMin,
iSec div 1000, iSec div 100))]));
end;
end;
end;



DBIERR_NONE The system version information was returned successfully.

Teniendo en cuenta que si esta variable retorna algo es que ha habido error y no estaría el BDE instalado.


Un Saludo.