Erro aplicação nova no Delphi 10.3.3
Bom dia, criei uma aplicação nova no delphi 10.3.3 porém ao tentar rodar em outro PC da o seguinte erro:
Exception EAcessViolation in module SoftMed.exe at 0045DA9F
Access violation at adress 0085DA9F un module ''SoftMed.exe''. Read of adress 00000000.
Alguém pode me ajudar?
Exception EAcessViolation in module SoftMed.exe at 0045DA9F
Access violation at adress 0085DA9F un module ''SoftMed.exe''. Read of adress 00000000.
Alguém pode me ajudar?
Juliano
Curtidas 0
Melhor post
Emerson Nascimento
11/09/2023
como você usa clientdataset, você precisa incluir a unit MidasLib no uses do teu DM.
no trecho:
// Abre a pesquisa
DM.ibdUsuario.Open;
DM.cdsUsuario.Open;
Open;
você está abrindo três vezes.
DM.cdsUsuario.Open;
deveria bastar.
no trecho:
// Abre a pesquisa
DM.ibdUsuario.Open;
DM.cdsUsuario.Open;
Open;
você está abrindo três vezes.
DM.cdsUsuario.Open;
deveria bastar.
GOSTEI 1
Mais Respostas
Arthur Heinrich
07/09/2023
Isso pode ser causado por muitas coisas. O mais provável é que você tenha acessado uma classe que não foi instanciada, ou acesso a um ponteiro não inicializado.
Não é fácil de localizar estes problemas sem utilizar um debugger. Mas, como você diz que ocorre em outra máquina, pode ser outra coisa. Talvez relacionado a algo que a aplicação acessa, que não esteja disponível na outra máquina.
Não é fácil de localizar estes problemas sem utilizar um debugger. Mas, como você diz que ocorre em outra máquina, pode ser outra coisa. Talvez relacionado a algo que a aplicação acessa, que não esteja disponível na outra máquina.
GOSTEI 0
Juliano
07/09/2023
Fiz algumas alterações o sistema iniciou, porém ao tentar efetuar uma consulta na tela de login retorna o erro: Access violation at adress 0085DA9F un module ''SoftMed.exe''. Read of adress 00000000.
with DM.ibdUsuario do
begin
// Cria o SQL da pesquisa
Close;
SelectSQL.Clear;
SelectSQL.Add('SELECT T1.USU_ID, T1.USU_ATIVO, T1.USU_ADMINISTRADOR, ');
SelectSQL.Add('T1.USU_LOGIN, T1.USU_SENHA ');
SelectSQL.Add('FROM USUARIOS T1 ');
SelectSQL.Add('WHERE T1.USU_LOGIN = :USU_LOGIN ');
ParamByName('USU_LOGIN').AsString := Trim(edtUsuario.Text);
// Abre a pesquisa
DM.ibdUsuario.Open;
DM.cdsUsuario.Open;
Open;
.......
Conecto o banco de dados através de um arquivo .ini conforme a configuração no View Source:
var
vArqIni:TIniFile;
Caminho:string;
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.Title := 'SoftMed';
Application.CreateForm(TDM, DM);
Application.CreateForm(TfrmPrincipal, frmPrincipal);
//Configura arquivo .INI para o banco de dados
Caminho:='127.0.0.1/3050:C:\\SoftMedNew\\Banco_Dados\\DADOS.FDB';
DM.ibdDADOS.Close;
if not(FileExists(extractfilepath(ParamStr(0))+'Config.ini') ) then
begin
ShowMessage('Arquivo de Configurações do Banco de Dados não Encontrado!');
vArqIni := TIniFile.Create(extractfilepath(ParamStr(0))+'Config.ini');
try
vArqIni.WriteString('BANCO','DatabaseName',Caminho);
DM.ibdDADOS.DatabaseName:= Caminho;
finally
vArqIni.Free;
end;
end;
try
vArqIni := TIniFile.Create(extractfilepath(ParamStr(0))+'Config.ini');
Caminho :=vArqIni.ReadString('BANCO','DatabaseName',Caminho);
DM.ibdDADOS.DatabaseName:= Caminho;
finally
vArqIni.Free;
end;
try
DM.ibdDADOS.Open;
frmLogin := TfrmLogin.Create(nil);
frmLogin.ShowModal;
frmLogin.Hide;
frmLogin.Free;
Application.Run;
except
Application.MessageBox( 'Não foi possivel se conectar com o banco de dados.' + #13 +
'verifique se o arquivo de configuração está configurado, ' + #13 +
'ou se o servidor firebird está instalado em seu sistema.' + #13 +
'Verifique tambem se o Usuario secundario esta cadastrado.' + #13 +
'Entre em contato com suporte para esclarecer qualquer dúvida. (14) 99791-6531',
'Error Interno', mb_ok + mb_IconError );
Application.Terminate;
end;
end.
with DM.ibdUsuario do
begin
// Cria o SQL da pesquisa
Close;
SelectSQL.Clear;
SelectSQL.Add('SELECT T1.USU_ID, T1.USU_ATIVO, T1.USU_ADMINISTRADOR, ');
SelectSQL.Add('T1.USU_LOGIN, T1.USU_SENHA ');
SelectSQL.Add('FROM USUARIOS T1 ');
SelectSQL.Add('WHERE T1.USU_LOGIN = :USU_LOGIN ');
ParamByName('USU_LOGIN').AsString := Trim(edtUsuario.Text);
// Abre a pesquisa
DM.ibdUsuario.Open;
DM.cdsUsuario.Open;
Open;
.......
Conecto o banco de dados através de um arquivo .ini conforme a configuração no View Source:
var
vArqIni:TIniFile;
Caminho:string;
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.Title := 'SoftMed';
Application.CreateForm(TDM, DM);
Application.CreateForm(TfrmPrincipal, frmPrincipal);
//Configura arquivo .INI para o banco de dados
Caminho:='127.0.0.1/3050:C:\\SoftMedNew\\Banco_Dados\\DADOS.FDB';
DM.ibdDADOS.Close;
if not(FileExists(extractfilepath(ParamStr(0))+'Config.ini') ) then
begin
ShowMessage('Arquivo de Configurações do Banco de Dados não Encontrado!');
vArqIni := TIniFile.Create(extractfilepath(ParamStr(0))+'Config.ini');
try
vArqIni.WriteString('BANCO','DatabaseName',Caminho);
DM.ibdDADOS.DatabaseName:= Caminho;
finally
vArqIni.Free;
end;
end;
try
vArqIni := TIniFile.Create(extractfilepath(ParamStr(0))+'Config.ini');
Caminho :=vArqIni.ReadString('BANCO','DatabaseName',Caminho);
DM.ibdDADOS.DatabaseName:= Caminho;
finally
vArqIni.Free;
end;
try
DM.ibdDADOS.Open;
frmLogin := TfrmLogin.Create(nil);
frmLogin.ShowModal;
frmLogin.Hide;
frmLogin.Free;
Application.Run;
except
Application.MessageBox( 'Não foi possivel se conectar com o banco de dados.' + #13 +
'verifique se o arquivo de configuração está configurado, ' + #13 +
'ou se o servidor firebird está instalado em seu sistema.' + #13 +
'Verifique tambem se o Usuario secundario esta cadastrado.' + #13 +
'Entre em contato com suporte para esclarecer qualquer dúvida. (14) 99791-6531',
'Error Interno', mb_ok + mb_IconError );
Application.Terminate;
end;
end.
GOSTEI 0
Juliano
07/09/2023
Achei onde está dando o erro, é na obra de abrir o clientdataset, mas isso só acontece em outro computador, onde não tenho o delphi instalado, alguém poderia me ajudar.
"Acess violation at adress 007FB44B in module "SoftMed.exe". Read off address 00000000"
"Acess violation at adress 007FB44B in module "SoftMed.exe". Read off address 00000000"
GOSTEI 0
Juliano
07/09/2023
como você usa clientdataset, você precisa incluir a unit MidasLib no uses do teu DM.
no trecho:
// Abre a pesquisa
DM.ibdUsuario.Open;
DM.cdsUsuario.Open;
Open;
você está abrindo três vezes.
DM.cdsUsuario.Open;
deveria bastar.
no trecho:
// Abre a pesquisa
DM.ibdUsuario.Open;
DM.cdsUsuario.Open;
Open;
você está abrindo três vezes.
DM.cdsUsuario.Open;
deveria bastar.
Muito obrigado declarei o MidasLib e removi DM.ibdUsuario.Open deu certo
GOSTEI 0