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
Emanuel Gonçalves

Emanuel Gonçalves

Responder

Post mais votado

23/01/2017

Você pode verificar no Exception se a mensagem corresponde a essa e trata-la.

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

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.

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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar