GARANTIR DESCONTO

Fórum Analisador Léxico #521798

03/06/2015

0

Estou Desenvolvendo um analisador léxico para trabalho da faculdade... Já criei toda parte de Código para o analisador.. Uso Dois Memos.. Um para Código Fonte.. E o outro Serve para eu escrever uma palavra reservada... E um SpeedButton que serve para fazer a análise...

Só que esta dando este erro que não consegui resolver até agora..
Access Violation at address 004096F6 in module 'Project1.Exe'. Write of Address 00412cC8.

Estou usando um Strng Grid para armazenar os valores... Esta armazenando.... Percebi que quando clico no SpeedButon não está dando erro.. Quando escrevo qualquer coisa no MemoCódigo ai Sim Da o erro... Será algum problema no meu Código.....

Espero que minha pergunta tenha sido clara... E espero uma resposta... Desde já agradeço pela Atenção...
Valsistemasdelphi

Valsistemasdelphi

Responder

Post mais votado

03/06/2015

"Access Violation", via de regra no Delphi, indica que você está fazendo referência a um objeto que não existe ( ou existia e foi eliminado ).

Verifique as procedures relacionadas aos eventos do Memo em que o erro ocorre, ou, até mesmo, se o Memo não foi apagado ( por algum motivo fora de seu controle ).

Uma pesquisa aqui no DevMedia, vai lhe indicar vários casos similares ao seu !

Marcos P

Marcos P
Responder

Gostei + 1

Mais Posts

03/06/2015

Valsistemasdelphi

Valeu pela resposta já olhei todas as procedures não sei ao certo aonde está o erro já olhei todo o código mais não consegui encontrar aonde está o Erro...

Baixei um tal De FastMM... Pois fiz uma pesquisa e desconfio que seja na memória.. Ou seja algum código que eu tinha feito e precisei apagar ficou na memória e agora ele não encontra mais.... Mais não sei como usar este FastMM... Tentei aqui mais não deu certo.... Continuo achando que se trata no Código mesmo...Pois quando ele está em execução clico no button e não da nenhum erro... Ai quando eu adiciono um Código Fonte para ele analisar os Tokens Aparece a Tal Mensagem....
Responder

Gostei + 0

03/06/2015

Valsistemasdelphi

Valeu pela resposta já olhei todas as procedures não sei ao certo aonde está o erro já olhei todo o código mais não consegui encontrar aonde está o Erro...

Baixei um tal De FastMM... Pois fiz uma pesquisa e desconfio que seja na memória.. Ou seja algum código que eu tinha feito e precisei apagar ficou na memória e agora ele não encontra mais.... Mais não sei como usar este FastMM... Tentei aqui mais não deu certo.... Continuo achando que se trata no Código mesmo...Pois quando ele está em execução clico no button e não da nenhum erro... Ai quando eu adiciono um Código Fonte no Memo de Código para ele analisar os Tokens Aparece a Tal Mensagem....
Responder

Gostei + 0

04/06/2015

Valsistemasdelphi

E Ai Marcos P, Consegui resolver meu problema no Analisador Léxico, Juntamente com uns colegas que programam em Delphi também aqui na facu... Analisando todo o código... o erro estava em uma referência no meu Código...

type
Ttoken = array [0..8] of String;

const
listtoken : Ttoken = (';', ':', ')', '(', '.', ']', '[', ':=', ',');

for I := 0 to length(listToken[I]) do

Bom eu fiz essa função Length que até então eu achava que o erro estava nela.. Pois deixei essa parte como texto //... Ai funcionava ... Só que ele não declarava todos os Tokens so o Begin... Ai descobrimos que essa função serve para dar referência a alguma Variável no Código... Que no nosso caso e o i....
Depois que colocamos o entre chaves para fazer referencia deu certo....

Obrigado Pela resposta foi de muita importância.. Pois como vc disse ,via de regra no Delphi, indica que você está fazendo referência a um objeto que não existe...


Abraço...
Responder

Gostei + 0

04/06/2015

Valsistemasdelphi

Marcos P Estou desenvolvendo um Sistema para Projeto... Controle de lanchonete.... Estou com dificuldade na parte de relatório.... Tenho um código pronto com Dois Radios TRadio buttons..

if (Diário.Checked = true) then
begin
//pegar o periodo da data atual menos (-) 30 dias
Form4.Ibtable1.Active := False;
Form4.Ibtable1.filter := 'DATA_Venda >= ' + ''''+datetostr(now-30)+'''' + ' and ' +
'DATA <= ' + ''''+ datetostr(now)+'''';// pegar o periodo da data atual menos (-) 30 dias

Ibtable1.filtered := true;
IBTable1.Active := true;

FRXReport1.LoadFromFile('E:\ProjetoCadastro\Nova Lanchonete\VendaCaixa.fp3');
FrxReport1.ShowReport() ;

end
else
if (Mensal.Checked= true) then
begin
Form4.Ibtable1.Active := false;
Form4.IBtable1.filter := 'DATA_Venda = ' + ''''+datetostr(now)+'''';// pegar a data atual do micro
IBtable1.filtered := true;
Ibtable1.Active := true;

FRXReport1.LoadFromFile('E:\ProjetoCadastro\Nova Lanchonete\VendaCaixa.fp3');
FrxReport1.ShowReport() ;

exit; //Forçar a sair da rotina, ou vai executar o teste abaixo



Só que a data diária que foi feita por exemplo hoje.... Aparece misturada com a data mensal... Já fiz muita pesquisa aqui para descubriir outro jeito mais não consegui solucionar esse problema..... Se vc poder me ajudar ....

Abraços....
Responder

Gostei + 0

04/06/2015

Marcos P

Estou "empenhado" nesse feriado...

Vejo isso na sequência.
Responder

Gostei + 0

05/06/2015

Valsistemasdelphi

Obrigado Marcos no que vc poder me ajudar sobre a parte de Relatório eu te agradeço...


Abraço....
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar