Ir para conteúdo
  • Cadastre-se

dev botao

Acesso Violado - mas como?


  • Este tópico foi criado há 1693 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Fala Galera,


Estou tabalhando em um projeto já tem vários  dias e não consigo encontrar onde esta o erro. Já criei um novo projeto e continua dano o mesmo erro vejam só.

No trecho abaixo, eu clico no botão IniciarVenda e depois no botão bvoltar uma, duas, três, quatro, cinco, seis, e funciona normalmente na sétima vez (ou oitava vez) ao clicar novamente 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

 

As vezes da erro na linha 5 = Queryvalor.close 

As vezes na linha 8 = Queryvalor.open

As vezes na na linha 61 = imCensura01.Picture := ImLivre.Picture

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
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;            


Vejam que não DESTRUO nenhum objeto.

 
Link para o comentário
Compartilhar em outros sites

  • Consultores

Não sei se observou, mas no seu vídeo são exibidas duas mensagens de erro e não apenas uma. E elas são mensagens diferentes.

Por que isso acontece? Sabe dizer?

Você usa mais de uma thread nesse aplicativo? Não tem nenhum outro código rodando em segundo plano que possa interferir?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Obrigado, Amigos,

Citar

Acesse Violation ocorre quando você tenta acessar um Objeto que não existe ou que já foi destruído...


Sei disso, porém, não consigo entender o seguinte.

Clico no botão Inicio e botão voltar, mais de uma vez, e o erro só acontece depois de algum tempo. Na 5, 6 ou 7 vez que clico.

 

Citar

Você usa mais de uma thread nesse aplicativo? Não tem nenhum outro código rodando em segundo plano que possa interferir?

Pensei nisso, mas pesquisei no meu programa, e não vi nenhum thread. Como faço para descobrir se tem algum thread rodando no meu programa? ou se esta rodando alguma coisa em segundo plano? Tem como saber fazendo uma pesquisa?

Pensei também se não tem algum Timer em algum componente, mas não consegui identificar também.

Removi alguns componentes achando que poderia ser. 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1693 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.