Debug Xe6
25/06/2019
0
Estou tralhando em projeto que está me tirando o sono. Nos outros projetos quando dá um erro de execução sql ou algum erro qlq, na maioria das vezes eu coloco o Try ...Except end;
Try Execute('insert into bilhete (código, nome, data, hora) values (:0,:1,:2,)' except on e : Exception do Begin beep; dm.DB.Rollback; KDialog('Erro ao gravar bilhete'#13#13'Classe de erro: '+e.ClassName + #13+ 'Mensagem de erro: '+ e.Message, 'Erro', 'ERRO'); exit end; end;
Ao invés de mostrar a mensagem "Erro ao gravar bilhete......" aparece a mensagem de violação:
'Access violation at address 004053CD in module ''Bilheteria.exe''. Read of address 0030002C'
Mesmo eu fazendo o DEBUG aparece a mensagem de Violação.
Debbuger Fault Notification Project: d:\\Vendas\\Bilhete.exe fauted with message: 'system exception (code 0x00041d) at 0x00000053cd'.Process stopped. use step or run to continue
Depois que dá essa mensagem, nem sair do programa eu consigo.
Eu testei, várias vezes o comando "clientdataset.locate" e apareceria a mensagem de violação. Acho que deve ser alguma coisa a respeito da hora.
Porque fui almoçar, quando retornei já não deu erro mais.
Me ajudem..... rsrsrs
Dirceu Morais
Post mais votado
26/06/2019
se com o código em mãos você não está conseguindo identificar o problema, imagine como pode ser difícil pra quem quer te ajudar, se você não publicá-lo.
indique também qual banco de dados, tipos dos campos e o que mais você puder detalhar.
Emerson Nascimento
Mais Posts
25/06/2019
Bruno
Estou tralhando em projeto que está me tirando o sono. Nos outros projetos quando dá um erro de execução sql ou algum erro qlq, na maioria das vezes eu coloco o Try ...Except end;
Try Execute('insert into bilhete (código, nome, data, hora) values (:0,:1,:2,)' except on e : Exception do Begin beep; dm.DB.Rollback; KDialog('Erro ao gravar bilhete'#13#13'Classe de erro: '+e.ClassName + #13+ 'Mensagem de erro: '+ e.Message, 'Erro', 'ERRO'); exit end; end;
Ao invés de mostrar a mensagem "Erro ao gravar bilhete......" aparece a mensagem de violação:
'Access violation at address 004053CD in module ''Bilheteria.exe''. Read of address 0030002C'
Mesmo eu fazendo o DEBUG aparece a mensagem de Violação.
Debbuger Fault Notification Project: d:\\\\Vendas\\\\Bilhete.exe fauted with message: 'system exception (code 0x00041d) at 0x00000053cd'.Process stopped. use step or run to continue
Depois que dá essa mensagem, nem sair do programa eu consigo.
Eu testei, várias vezes o comando "clientdataset.locate" e apareceria a mensagem de violação. Acho que deve ser alguma coisa a respeito da hora.
Porque fui almoçar, quando retornei já não deu erro mais.
Me ajudem..... rsrsrs
você inicia a transação? porque esta dando roollback talvez ele não esteja em transação e gera a erro
25/06/2019
Dirceu Morais
você inicia a transação? porque esta dando roollback talvez ele não esteja em transação e gera a erro
O Trecho que tem o Roollback foi só um exemplo, para vcs entenderem como eu faço.
26/06/2019
Dirceu Morais
Veja bem:
Testei uma vez aqui e deu certo.
If Not cdsTMP.Locate('Categoria','-',[]) Then KDialog('Não achei categoria vazia','Alerta','Erro'); cdsTMP.Edit; cdsTMPValor.AsFloat := cdsEventosVALOR.AsFloat; cdsTMPCategoria.AsString := 'I';
Agora fui executar novamente de deu erro de violação na linha: If Not cdsTMP.Locate('Categoria','-',[]) e como se não existisse a tabela CDSTMP.
Tem agora que consigo imprimir no FastReport de boa, dai do nada, ao executar não imprimi nada ou dá erro de violação.
26/06/2019
Emerson Nascimento
se cdsTMP for criado em tempo de execução, veja quem é o owner, pois ao eliminar o owner, os childs também são eliminados.
26/06/2019
Bruno
Veja bem:
Testei uma vez aqui e deu certo.
If Not cdsTMP.Locate('Categoria','-',[]) Then KDialog('Não achei categoria vazia','Alerta','Erro'); cdsTMP.Edit; cdsTMPValor.AsFloat := cdsEventosVALOR.AsFloat; cdsTMPCategoria.AsString := 'I';
Agora fui executar novamente de deu erro de violação na linha: If Not cdsTMP.Locate('Categoria','-',[]) e como se não existisse a tabela CDSTMP.
Tem agora que consigo imprimir no FastReport de boa, dai do nada, ao executar não imprimi nada ou dá erro de violação.
antes de dar locate verifica se esta cdsTMP.IsEmpty
26/06/2019
Dirceu Morais
Formprincipal:
Borderstyle=bsSingle FormStyle = fsMDIForm Visible = True Windostate=wsMaximized
Chamada:
If FormVendas = nil Then FormVendas := TFormVendas.Create(Application); FormVendas.Show; Panel2.Visible := False;
No formVendas:
Borderstyle=bsNone FormStyle = fsMDIChild Visible = True Windostate=wsMaximized
O Formvendas trabalha com outra tela (outro monitor para o cliente ficar vendo o que esta sendo digitado, com a mesma característica do formvendas)
type
TFormVendas = class(TForm)
...
cdsTMP: TClientDataSet;
...
No oncreate do formvendas:
cdsTMP.CreateDataSet;
No Botão Inicia vendas:
cdsTMP.EmptyDataSet;
Lembrando que o erro ocorre em outras tabelas também;
Neste caso também esta com erro:
cdsSessao.Close; cdsSessao.ParamByName('Data').AsDateTime := cdsEventosDATA.AsDateTime; cdsSessao.ParamByName('Hora').AsDateTime := cdsEventosHORA.AsDateTime; cdsSessao.ParamByName('01').AsInteger := cdsEventosID_VENDA.AsInteger; cdsSessao.ParamByName('02').AsString := cdsEventosID_ITEM.AsString; cdsSessao.Open();
Ao executar o OPEN dá erro.
O que mais me intriga é que Não é sempre que acontece isto.
As vezes acontece na primeira chamada, outras vezes na segunda.
;(
27/06/2019
Dirceu Morais
Na hora de imprimir, abrir uma tabela.
'Access violation at address 004053CD in module ''Bilheteria.exe''. Read of address 0030002C'
[code=delphi
Debbuger Fault Notification
Project: d:\\\\Vendas\\\\Bilhete.exe fauted with message: 'system exception (code 0x00041d) at 0x00000053cd'.Process stopped.
use step or run to continue
[/code]
Acho que vou começar um projeto novo.
Pq já tem uma semana que estou nesta peleja.
27/06/2019
Dirceu Morais
Criei outro projeto e continua com o mesmo erro.
Olha só este outro erro:
Coloquei um Componente FDQuery liquei a conexão com o DM coloquei o sql lá.
Inclui os Fields. Deixei a conexão com o Banco de dados Fechada.
No Form eu uso assim.
cdsSessao.Close; //CdsSessao = FDQuery -----DÁ ERRO DE VIOLAÇÃO AQUI cdsSessao.ParamByName('Data').AsDateTime := cdsEventosDATA.AsDateTime; cdsSessao.ParamByName('Hora').AsDateTime := cdsEventosHORA.AsDateTime; cdsSessao.ParamByName('01').AsInteger := cdsEventosID_VENDA.AsInteger; cdsSessao.ParamByName('02').AsString := cdsEventosID_ITEM.AsString; cdsSessao.Open();
Testei assim:
cdssessao.close; ///Testei também: cdssessao.active := False;
cdsSessao.ParamByName('Data').AsDateTime := cdsEventosDATA.AsDateTime;
cdsSessao.ParamByName('Hora').AsDateTime := cdsEventosHORA.AsDateTime;
cdsSessao.ParamByName('01').AsInteger := cdsEventosID_VENDA.AsInteger;
cdsSessao.ParamByName('02').AsString := cdsEventosID_ITEM.AsString;
cdsSessao.Open();
Porém, entra no "cdssessao.close" e dá erro.
Tentei não usando o "cdssessao.close" passou, só que eu preciso, atualizar o meu CDS.
Caramba!
27/06/2019
Emerson Nascimento
27/06/2019
Bruno
27/06/2019
Dirceu Morais
Não há nenhum evento nas tabelas.
Aliás eu coloquei uma agora no "afteropen" da tabela.
if cdsVendas.Active then cdsVendas.Close;
27/06/2019
Rafael Bosco
27/06/2019
Dirceu Morais
Veja:
program Bilheteria; uses Vcl.Forms, MidasLib, unPrincipal in 'unPrincipal.pas' , UDialog in 'UDialog.pas' , unDm in 'unDm.pas' {DM: TDataModule}, unLogin in 'unLogin.pas' , uRotinas in 'uRotinas.pas', UnConfiguracao in 'UnConfiguracao.pas' , unFechamentoCaixa in 'unFechamentoCaixa.pas' , unBilheteria in 'unBilheteria.pas' , unTelaCliente in 'unTelaCliente.pas' , unprogramacao in 'unprogramacao.pas' , unrelprogramacao in '..\\unrelprogramacao.pas' , unSenha in 'unSenha.pas' , ufCadastrar in '..\\ufCadastrar.pas' {FrameCadastro: TFrame}; {$R *.res} begin Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TFormPrincipal, FormPrincipal); Application.CreateForm(TfrmDialog, frmDialog); Application.CreateForm(TDM, DM); Application.Run; end.
06/08/2019
Dirceu Morais
Ainda estou na peleja.
Criei um novo projeto e continua dano o mesmo erro vejam só.
o trecho abaixo, executa uma, duas, três, quatro, cinco, seis, e de repente ao clicar no botão btiniciavendaclick da erro.
Classe de erro: EAccessViolation
Mensagem de erro: Access violation at address 0040572B in module 'DSCinema.exe'. Read of address 00300030
procedure TFormBilheteria.btIniciaVendaClick(Sender: TObject); Var i : Integer; Classif : String; begin Try QueryValor.Close; QueryValor.SQL.Text := 'Select Data_Exibicao, id_sala, id_filme from '+ 'sessao_filme Where data_exibicao < current_date'; QueryValor.Open; //AS VEZES DA ERRO AQUI if dm.QueryValor.RecordCount > 0 then Begin KDialog('Existe caixa aberto do dia '+FormatDateTime('dd/mm/yyyy',dm.QueryValor.FieldByName('Data_Exibicao').AsDateTime)+ ' Sala '+dm.QueryValor.FieldByName('id_sala').AsString,'Alerta','Info'); Exit; End; TelaCliente(0,'1','1','1'); //PROCEDIMENTO ESTA VAZIO NÃO FAZ NADA POR ENQUANTO tsFilme.TabVisible := True; RzPageControl1.ActivePageIndex := 1; tsInicial.TabVisible := False; cdsTMP.EmptyDataSet; cdsEventos.Close; cdsEventos.Open; i := 1; PanelData.Caption := 'Data: '+ cdsEventosDATA_EXIBICAO.AsString; lbSelecao.Caption := 'Total Selecionada: 0'; stCadeiraSelec.Caption := lbSELECAO.Caption; imsala01.Picture := Nil; imsala02.Picture := Nil; imsala03.Picture := Nil; imsala04.Picture := Nil; while not cdsEventos.eof do Begin case i of 1 : Begin PanelSALA01.Visible := True; if cdsEventosIMAGEM.AsString <> '' Then begin If FileExists(cdsEventosIMAGEM.AsString) Then imsala01.Picture.LoadFromFile(cdsEventosIMAGEM.AsString); end; stFilme01.Caption := Trim(cdsEventosTITULO.AsString); S1 := cdsEventosID_SALA.AsString; F1 := cdsEventosID_FILME.AsString; H1 := cdsEventosHORA_EXIBICAO.AsString; stSala01.Caption := 'Sala: '+ cdsEventosID_SALA.AsString; stPrecoIS01.Caption := 'R$ '+Formatar_valores(cdsEventosPR_INTEIRA.AsFloat); stPrecoMS01.Caption := 'R$ '+Formatar_valores(cdsEventosPR_MEIA.AsFloat); stHora01.Caption := FormatDateTime('HH:mm',cdsEventosHORA_EXIBICAO.AsDateTime); Classif := RetSomenteNumeros(cdsEventosCENSURA.AsString); stLota01.Caption := 'Lotação: '+cdsEventosLOTACAO.AsString; //88Pinta_sessao(stSessao01,FormTelaCliente.stSessao01, cdsEventosLOTACAO.AsInteger,cdsEventosCAPACIDADE.AsInteger); Case StrToIntDef(Classif,0) of 18 : imCensura01.Picture := im18.Picture; 16 : imCensura01.Picture := im16.Picture; 14 : imCensura01.Picture := im14.Picture; 12 : imCensura01.Picture := im12.Picture; 10 : imCensura01.Picture := im10.Picture; Else //ERRO AQUI........... imCensura01.Picture := ImLivre.Picture; //DA ERRO AQUI End; If cdsEventosAUDIO.AsString = 'L' Then stLegenda01.Caption := 'LEGENDADO' Else stLegenda01.Caption := 'DUBLADO'; if cdsEventosTIPOPROJECAO.AsString = '3' then Proj01.Caption := '3D' Else Proj01.Caption := 'DIGITAL'; Gauge1.MaxValue := cdsEventosCAPACIDADE.AsInteger; cdsVendas.Close; cdsVendas.ParamByName('TSala').AsString := cdsEventosID_SALA.AsString; cdsVendas.ParamByName('Data').AsDate := cdsEventosDATA_EXIBICAO.AsDateTime; cdsVendas.ParamByName('Hora').AsString := cdsEventosHORA_EXIBICAO.AsString; cdsVendas.ParamByName('Filme').AsString := cdsEventosID_FILME.AsString; cdsVendas.Open; gauge1.Progress :=cdsEventosLOTACAO.AsInteger; End; 2 : Begin PanelSALA02.Visible := True; if cdsEventosIMAGEM.AsString <> '' Then begin If FileExists(cdsEventosIMAGEM.AsString) Then imsala02.Picture.LoadFromFile(cdsEventosIMAGEM.AsString); end; stFilme02.Caption := Trim(cdsEventosTITULO.AsString); stSala02.Caption := 'Sala: '+ cdsEventosID_SALA.AsString; stPrecoIS02.Caption := 'R$ '+Formatar_valores(cdsEventosPR_INTEIRA.AsFloat); stPrecoMS02.Caption := 'R$ '+Formatar_valores(cdsEventosPR_MEIA.AsFloat); stHora02.Caption := FormatDateTime('HH:mm',cdsEventosHORA_EXIBICAO.AsDateTime); Classif := RetSomenteNumeros(cdsEventosCENSURA.AsString); F2 := cdsEventosID_FILME.AsString; S2 := cdsEventosID_SALA.AsString; H2 := cdsEventosHORA_EXIBICAO.AsString; Case StrToIntDef(Classif,0) of 18 : imCensura02.Picture := im18.Picture; 16 : imCensura02.Picture := im16.Picture; 14 : imCensura02.Picture := im14.Picture; 12 : imCensura02.Picture := im12.Picture; 10 : imCensura02.Picture := im10.Picture; Else imCensura02.Picture := ImLivre.Picture; End; If cdsEventosAUDIO.AsString = 'L' Then stLegenda02.Caption := 'LEGENDADO' Else stLegenda02.Caption := 'DUBLADO'; if cdsEventosTIPOPROJECAO.AsString = '3' then Proj02.Caption := '3D' Else Proj02.Caption := 'DIGITAL'; Gauge2.MaxValue := cdsEventosCAPACIDADE.AsInteger; cdsVendas.Close; cdsVendas.ParamByName('TSala').AsString := cdsEventosID_SALA.AsString; cdsVendas.ParamByName('Data').AsDate := cdsEventosDATA_EXIBICAO.AsDateTime; cdsVendas.ParamByName('Hora').AsString := cdsEventosHORA_EXIBICAO.AsString; cdsVendas.ParamByName('Filme').AsString := cdsEventosID_FILME.AsString; cdsVendas.Open; gauge2.Progress := cdsEventosLOTACAO.AsInteger; stLota02.Caption := 'Lotação: '+cdsEventosLOTACAO.AsString; End; end; Inc(i); cdsEventos.Next; End; Except on e : Exception do Begin KDialog('Erro ao iniciar venda'#13#13'Classe de erro: '+e.ClassName + #13+ 'Mensagem de erro: '+ e.Message, 'Erro', 'ERRO'); end; end; PanelSALA01.Visible := S1<>''; PanelSALA02.Visible := S2<>''; end; procedure TFormBilheteria.bVoltarClick(Sender: TObject); begin tsInicial.TabVisible := True; RzPageControl1.ActivePageIndex := 0; tsFilme.TabVisible := False; tsPoltrona.TabVisible := False; tsFinalizacao.TabVisible := False; end;
Veja que não DESTRUO nenhum objeto.
Já faz mais de mês que estou lutando com esse erro.
Me ajude sniff, sniff
Clique aqui para fazer login e interagir na Comunidade :)