Fui instalar o programa no computador do cliente, mas quando abro o executável, ele abre, fica menos de 1 segundo aberto e já fecha...
O pior é que em outros computadores aqui do esrcitório ele abriu normal....no computador de casa tambem...
é só no computador do cliente ¬¬
alguém já passou por isso??
Tem alguma coisa a dizer que possa me ajudar?!
Para instalar o programa no pc do cliente, eu apenas instalei o BDE na máquina e copiei o executável pra lá,
e na abertura do form principal, tem isto...
////////////////////////////////////////////////////////////////////////////////
////////// VERIFICA SE O BORLAND DATABASE ENGINE ESTA INSTALADO ///////////
////////// SE NÃO ESTIVER, INSTALA E REGISTRA /// (uses Registry) ///
////////////////////////////////////////////////////////////////////////////////
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 4 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));
4 : BDE_Dir := 'C:\Arquivos de Programas\Borland\Common Files\BDE\';
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;
////////////////////////////////////////////////////////////////////////////////
///////////// CRIA UM ALIAS PARA UM BANCO DE DADOS NO BDE //////////////////
////////////////////////////////////////////////////////////////////////////////
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;
procedure TfrmSupermPrincipal.mnuCadProClick(Sender: TObject);
begin
frmCadPro.Show;
end;
procedure TfrmSupermPrincipal.mnuCadFornClick(Sender: TObject);
begin
frmCadForn.Show;
end;
procedure TfrmSupermPrincipal.mnuCadSecaoClick(Sender: TObject);
begin
frmCadSecao.Show;
end;
procedure TfrmSupermPrincipal.mnuCadCliClick(Sender: TObject);
begin
frmCadCli.Show;
end;
procedure TfrmSupermPrincipal.mnuCadOpeCxClick(Sender: TObject);
begin
frmCadOpeCx.Show;
end;
procedure TfrmSupermPrincipal.ControledeCaixa1Click(Sender: TObject);
begin
frmControleCaixa.Show;
end;
procedure TfrmSupermPrincipal.FormCreate(Sender: TObject);
var
cur_dir:string;
begin
cur_dir:=ExtractFileDir(ParamStr(0))+'\';
Verifica_BDE;
Cria_Alias(['superm',cur_dir]);
end;
end.
Se alguém conseguir me ajudar...
pois só falta isso para o programa funcionar no cliente, e como ele já funcionou em outros computadores daqui, eu não sei o que está havendo :(
Pergunta
Gabriel Cabral
Bom dia, pessoal...
Tive um sério problema ontem..
Fui instalar o programa no computador do cliente, mas quando abro o executável, ele abre, fica menos de 1 segundo aberto e já fecha...
O pior é que em outros computadores aqui do esrcitório ele abriu normal....no computador de casa tambem...
é só no computador do cliente ¬¬
alguém já passou por isso??
Tem alguma coisa a dizer que possa me ajudar?!
Para instalar o programa no pc do cliente, eu apenas instalei o BDE na máquina e copiei o executável pra lá,
e na abertura do form principal, tem isto...
//////////////////////////////////////////////////////////////////////////////// ////////// VERIFICA SE O BORLAND DATABASE ENGINE ESTA INSTALADO /////////// ////////// SE NÃO ESTIVER, INSTALA E REGISTRA /// (uses Registry) /// //////////////////////////////////////////////////////////////////////////////// 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 4 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)); 4 : BDE_Dir := 'C:\Arquivos de Programas\Borland\Common Files\BDE\'; 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; //////////////////////////////////////////////////////////////////////////////// ///////////// CRIA UM ALIAS PARA UM BANCO DE DADOS NO BDE ////////////////// //////////////////////////////////////////////////////////////////////////////// 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; procedure TfrmSupermPrincipal.mnuCadProClick(Sender: TObject); begin frmCadPro.Show; end; procedure TfrmSupermPrincipal.mnuCadFornClick(Sender: TObject); begin frmCadForn.Show; end; procedure TfrmSupermPrincipal.mnuCadSecaoClick(Sender: TObject); begin frmCadSecao.Show; end; procedure TfrmSupermPrincipal.mnuCadCliClick(Sender: TObject); begin frmCadCli.Show; end; procedure TfrmSupermPrincipal.mnuCadOpeCxClick(Sender: TObject); begin frmCadOpeCx.Show; end; procedure TfrmSupermPrincipal.ControledeCaixa1Click(Sender: TObject); begin frmControleCaixa.Show; end; procedure TfrmSupermPrincipal.FormCreate(Sender: TObject); var cur_dir:string; begin cur_dir:=ExtractFileDir(ParamStr(0))+'\'; Verifica_BDE; Cria_Alias(['superm',cur_dir]); end; end.Se alguém conseguir me ajudar...
pois só falta isso para o programa funcionar no cliente, e como ele já funcionou em outros computadores daqui, eu não sei o que está havendo :(
Muito obrigado
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.