Fórum Delphi - Duvidas #604312
06/08/2019
0
Uma dúvida, no seguinte código
try
try
FDConnection.Connected := False; // fecha a conexão
FDConnection.Params.Values[''''Database''''] := GetCurrentDir + ''''\\\\\\\\BANCO.FDB''''; // recebe o caminho do banco no diretório do .Exe
FDConnection.Connected := True; // abre a conexão
except
raise Exception.Create(''''Não foi possível Conectar ao Banco de Dados!''''); // Cria mensagem de erro de conexão
if not Assigned(FrmConfiguracao) then // testa se o objeto já está em memória
FrmConfiguracao := TFrmConfiguracao.Create(Self); // caso nao esteja, ele cria
FrmConfiguracao.ShowModal;
end;
finally
FreeAndNil(FrmConfiguracao); // libera o objeto da memória
end;
Explicação...
Ao utilizar esse comando ->> raise Exception.Create(''''Não foi possível Conectar ao Banco de Dados!'''');
ele não executa o próximo, que seria esse...
if not Assigned(FrmConfiguracao) then // testa se o objeto já está em memória
FrmConfiguracao := TFrmConfiguracao.Create(Self); // caso nao esteja, ele cria
FrmConfiguracao.ShowModal;
portanto, se no lugar do raise Exception eu utilizar, Application.Messagebox(....);
ele executa o próximo código normal...
Alguem sabe me explicar, por que isso ocorre?
Jefferson Quinelatto
Curtir tópico
+ 0Posts
06/08/2019
Douglas Wordell
Quando você executa raise Exception.Create('') você está gerando uma exceção (dentro do seu tratamento de exceção) e o que tem depois não será executado mesmo, a menos que você colocasse outro bloco try. Mas penso que se o objetivo é apenas notificar o usuário não precisa lançar uma nova exceção.
Gostei + 0
06/08/2019
Jefferson Quinelatto
Quando você executa raise Exception.Create('') você está gerando uma exceção (dentro do seu tratamento de exceção) e o que tem depois não será executado mesmo, a menos que você colocasse outro bloco try. Mas penso que se o objetivo é apenas notificar o usuário não precisa lançar uma nova exceção.
Gostei + 0
06/08/2019
Jefferson Quinelatto
O que precisava era que após a mensagem para o usuário, abrisse a tela de configuração do arquivo manipulado para conexão.
Coloquei dentro do OnShow do meu form.
if FdConnection.Connected = False then
begin
if not Assigned(FrmConfiguracao) then
FrmConfiguracao := TFrmConfiguracao.Create(Self);
try
FrmConfiguracao.ShowModal;
finally
FreeAndNil(FrmConfiguracao);
end;
Será que poderia utilizar dessa forma mesmo?
Gostei + 0
07/08/2019
Douglas Wordell
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)