Erro aplicação nova no Delphi 10.3.3

Delphi

07/09/2023

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?
Juliano

Juliano

Curtidas 0

Melhor post

Emerson Nascimento

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.
GOSTEI 1

Mais Respostas

Arthur Heinrich

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.
GOSTEI 0
Juliano

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.
GOSTEI 0
Juliano

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"
GOSTEI 0
Juliano

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.


Muito obrigado declarei o MidasLib e removi DM.ibdUsuario.Open deu certo
GOSTEI 0
POSTAR