Fórum Como tratar o erro (Cannot load vendor library Fbclient.dll) com o Delph, mensagem mais amigável #574117
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
Gostei + 2
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
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)