Como tratar o erro (Cannot load vendor library Fbclient.dll) com o Delph, mensagem mais amigável
23/01/2017
0
Gostaria de tornar a mensagem de erro quando o firedac não encontrar o fbclient.dll mais amigável.
essa é a mensagem de erro atual, a ideia é tratar
[FireDAC][Phys][314]. Cannot load vendor library [C:\\Program Files\\Firebird\\Firebird_3_0\\Fbclient.dll]. O sistema não pode encontrar o arquivo especificado
essa é a mensagem de erro atual, a ideia é tratar
[FireDAC][Phys][314]. Cannot load vendor library [C:\\Program Files\\Firebird\\Firebird_3_0\\Fbclient.dll]. O sistema não pode encontrar o arquivo especificado
Emanuel Gonçalves
Curtir tópico
+ 0
Responder
Post mais votado
23/01/2017
Você pode verificar no Exception se a mensagem corresponde a essa e trata-la.
É uma forma de fazer...
try on E: Exception do begin if (pos('cannot load', lowercase(E.Message)) > 0) and (pos('fbclient.dll', lowercase(E.Message)) > 0) then begin // todo end; end; except end;
É uma forma de fazer...
Raylan Zibel
Responder
Mais Posts
23/01/2017
Emanuel Gonçalves
Você pode verificar no Exception se a mensagem corresponde a essa e trata-la.
É uma forma de fazer...
try on E: Exception do begin if (pos('cannot load', lowercase(E.Message)) > 0) and (pos('fbclient.dll', lowercase(E.Message)) > 0) then begin // todo end; end; except end;
É uma forma de fazer...
--------------------------------------------------------
grato Raylan
Segue a função que uso para conectar, como posso adaptar sua dica
function TDtMdl.Conecta_Banco() : boolean; var pathexe,host, txt: String; begin result := true; pathexe := ExtractFilePath (Application.ExeName); Try FB_DataBase.Connected := false; {if not(FileExists('C:\\Program Files\\Firebird\\Firebird_3_0\\fbclient.dll'))then begin ShowMessage('fbclient.dll NÃO FOI ENCONTRADO, VERIFIQUE COM O ADMINISTRADOR DO SISTEMA !'); Application.Terminate; end;} FB_DriverLink.VendorLib := Ler_chave_reg ('Default', 'PathLibrary3', GetDOSEnvVar ( 'PROGRAMFILES' ) + 'C:\\Program Files\\Firebird\\Firebird_3_0\\fbclient.dll', g_nome_ini); Grava_chave_reg ('Default', 'PathLibrary3', FB_DriverLink.VendorLib, g_nome_ini); host := Ler_chave_reg ('Default', 'Ident_Host', '', g_nome_ini); FB_DataBase.Params.Values['server'] := host; Grava_chave_reg ('Default', 'Ident_Host', host, g_nome_ini); if (UpperCase(host) <> '') then begin // IdIcmpClient.Host := host; // if IdIcmpClient.ReplyStatus.BytesReceived = 0 then // raise Exception.create('Servidor não localizado !'+#13+#13+'Verifique as configurações de conexão !'); end; FB_DataBase.Params.Values['database'] := Ler_chave_reg ('Default', 'PathDados', '', g_nome_ini); FB_DataBase.Connected := True; FB_Transaction.Active; Except on E:EIBNativeException do begin Case EIBNativeException(E).ErrorCode of 335544344: Application.messagebox ('O CAMINHO OU O BANCO DE DADOS ESTÁ INCORRETO.'+#13+#13+'POR FAVOR, VERIFIQUE E CONFIGURE AGORA!','Aviso!',MB_OK + MB_ICONERROR); 335544721: Application.messagebox ('O SERVIDOR NÃO RESPONDE. '+#13+#13+'VERIFIQUE A CONEXÃO COM O SERVIDOR','Aviso!',MB_OK + MB_ICONERROR); 335544375: Application.messagebox ('O SERVIDOR DE DADOS NÃO FOI ACIONADO OU'+#13 + 'A CONEXÃO DEVE SER REMOTA E NÃO LOCAL.','Aviso!',MB_OK + MB_ICONERROR); 335544741: Application.MessageBox ('A CONEXÃO COM O BANCO DE DADOS FOI PERDIDA !', 'Aviso',MB_OK + MB_ICONERROR); 335544704: Application.MessageBox ('NÃO FOI POSSÍVEL LOCALIZAR O HOST !', 'Aviso',MB_OK + MB_ICONERROR); else txt := FORMAT('%s%s'#13'%s%d',['Mensagem do FireDac: ',E.message+#13,'Codigo de Error do FD : ',EIBNativeException(E).ErrorCode]); Application.messagebox ( pchar(txt) ,'Aviso!',MB_OK + MB_ICONERROR); end; Application.Terminate; end; end; if (not abreTabelas) Then begin result := false; Application.Terminate; end; end;
Responder
Clique aqui para fazer login e interagir na Comunidade :)