Voce deve distribuir o BDE(Borland Database Engine) junto com a sua aplicacao.
se voce usa inno setup tem um exemplo na pagina deles, caso nao tem um artigo aki:
3- Como executar uma aplicação com Paradox sem tê-lo instalado na maquina. Enviado por Fabiano Novaes Ferreira fabianonf@ig.com.br
Cheguei no resultado final abaixo na necessidade de criar programas com bancos de dados que pudessem ser executados a partir de um Zip Drive ou de um Pen Drive. O problema era que a máquina onde o sistema poderia ser usado, não necessariamente tem o BDE instalado. Com as configurações abaixo você manda os arquivos do BDE no Zip e o sistema se encarrega de registrá-los se necessário (não estraga uma instalação já existente do BDE).
os arquivos do BDE abaixo listados podem estar nas seguintes pastas que a rotina funciona ... qualquer alteração dos caminhos é simples de configurar ... :
- Raiz do Zip numa pasta BDE (ou equipamento de armazenagem) X:\BDE
- Junto com o EXE do seu sistema X:\Sistema
- Numa pasta BDE dentro da pasta do seu sistema X:\Sistema\BDE
Arquivos Exenciais para o BDE:
idapi32.cfg (esse arquivo pode ter qualquer outro nome, desde que seja configurado no registro.)
idapi32.dll
bantam.dll
blw32.dll
idr20009.dll
charset.cvb
europe.btl
usa.btl
idasci32.dll (Driver ASCII)
iddbas32.dll (Driver DBase)
idodbc32.dll (Driver ODBC)
idpdx32.dll (Driver Paradox)
O BDE precisa de todos esses arquivos para funcionar. Foi a configuração minima que eu consegui.
eu criei a rotina abaixo para verificar a existencia do BDE na maquina
procedure Verifica_BDE;
const
Key_Root = HKEY_LOCAL_MACHINE;
Key_Data : Array[00..05, 01..03] Of String = ((´Software\Borland\Database Engine´, ´BDE_EXTERNAL´, ´0´),
(´Software\Borland\Database Engine´, ´DLLPATH´ , ´0´),
(´Software\Borland\Database Engine´, ´CONFIGFILE01´, ´1´),
(´Software\Borland\BLW32´ , ´BLAPIPATH´ , ´0´),
(´Software\Borland\BLW32´ , ´LOCALE_LIB1´ , ´5´),
(´Software\Borland\BLW32´ , ´LOCALE_LIB2´ , ´6´));
BDE_Files : Array[01..10] Of String = (´idapi32.cfg´, ´idapi32.dll´, ´idr20009.dll´, ´blw32.dll´, ´usa.btl´, ´europe.btl´, ´idpdx32.dll´, ´idasci32.dll´, ´iddbas32.dll´, ´idodbc32.dll´);
var
Status : Boolean;
Index : Integer;
Ind_Files : Integer;
BDE_Dir : String;
Registro : TRegIniFile;
begin
Try
Registro := TRegIniFile.Create();
Registro.RootKey := Key_Root;
If (Not Registro.KeyExists(Key_Data[0,1])) Or (( Registro.KeyExists(Key_Data[0,1])) And (Registro.ReadString(Key_Data[0,1], Key_Data[0,2], ´FALSE´) = ´TRUE´)) Then
Begin
For Index := 1 To 3 Do
Begin
Case Index Of
1 : BDE_Dir := ExtractFileDrive(ParamStr(0)) + ´\BDE\´;
2 : BDE_Dir := ExtractFileDir(ParamStr(0)) + ´\BDE\´;
3 : BDE_Dir := ExtractFilePath(ParamStr(0));
End;
Status := DirectoryExists(BDE_Dir);
If Status Then
For Ind_Files := Low(BDE_Files) To High(BDE_Files) Do
Status := Status And FileExists(BDE_Dir + BDE_Files[Ind_Files]);
If Status Then
Break;
End;
For Index := Succ(Low(Key_Data)) To High(Key_Data) Do
Begin
If Key_Data[Index,3] = ´0´ Then
Registro.WriteString(Key_Data[Index,1], Key_Data[Index,2], BDE_Dir)
Else
Registro.WriteString(Key_Data[Index,1], Key_Data[Index,2], BDE_Dir + BDE_Files[StrToInt(Key_Data[Index,3])]);
End;
Registro.WriteString(Key_Data[0,1], Key_Data[0,2], ´TRUE´);
End;
Finally
Registro.Free;
End;
end;
PS. Acrescentar no Uses do programa a biblioteca Registry
Quanto ao Alias, eu criei (a varios anos) uma rotina para criar o alias pra mim sempre que eu precisar ... eu uso a função :
procedure Cria_Alias(Parametros : Array Of Variant);
var
List_Aux : TStringList;
begin
If (Parametros[0] <> ´´) And (Parametros[1] <> ´´) Then
Begin
{Configura o parâmetro Local Share}
SetConfigParameter(´\SYSTEM\INIT\;LOCAL SHARE´ , ´FALSE´);
{Configura o parâmetro Net Dir}
SetConfigParameter(´\DRIVERS\PARADOX\INIT\;NET DIR´, Parametros[1]);
{Cria ou altera o Path do Alias}
List_Aux := TStringList.Create;
List_Aux.Clear;
List_Aux.Add(´PATH=´ + Parametros[1]);
If Not Session.IsAlias(Parametros[0]) Then
Session.AddAlias(Parametros[0], ´PARADOX´, List_Aux)
Else
Session.ModifyAlias(Parametros[0], List_Aux);
Session.SaveConfigFile;
List_Aux.Free;
End;
end;
Para usá-la basta chamar no on create de seu programa :
Verifica_BDE;
Cria_Alias([´Nome do Alias´, ´Pasta de Dados´]);
tah ai.......