Ajuda - Busca - Membros - Calendário
Versão Completa: [resolvido] Erro No Botão Salvar
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
robinhocne
Olá pessoal tô fazendo uns comandos do Botão Salvar:

Esse é o codigo do Botão Salvar:

QUOTE
procedure TFrmTipo.spbsalClick(Sender: TObject);
begin
TxtDes.Enabled := False;
With vCpo Do
begin
Clear;
Add ('Tipo');
Add ('Descricao');
end;
With vVlr Do
begin
Clear;
Add (#39 + TxtTipo.Text + #39);
Add (#39 + TxtDes.Text + #39);
end;
If (Editar) Then
AlterarRegistro('Tipo_Vestuario', vCpo, vVlr, 'Codigo ='+ TxtCod.Text)
Else
IncluirRegistro('Tipo_Vestuario', vCpo, vVlr);
inherited;
end;
Esse é o erro:

QUOTE

Access violation at address 004E54D2 in module 'Loja.exe'.Read of address 00000000.
Pirambu!
Cara você quer salvar o que? em que banco de dados você estar usando?


robinhocne
Ai vou salvar os dados do formulário, e eu uso Firebird
Micheus
QUOTE(robinhocne @ 06/08/2007 - 10:10) *
Olá pessoal tô fazendo uns comandos do Botão Salvar:
Esse é o codigo do Botão Salvar:
QUOTE
procedure TFrmTipo.spbsalClick(Sender: TObject);
begin
TxtDes.Enabled := False;
With vCpo Do
begin
Clear;
Add ('Tipo');
Add ('Descricao');
end;
With vVlr Do
begin
Clear;
Add (#39 + TxtTipo.Text + #39);
Add (#39 + TxtDes.Text + #39);
end;
If (Editar) Then
AlterarRegistro('Tipo_Vestuario', vCpo, vVlr, 'Codigo ='+ TxtCod.Text)
Else
IncluirRegistro('Tipo_Vestuario', vCpo, vVlr);
inherited;
end;
Esse é o erro:
QUOTE
Access violation at address 004E54D2 in module 'Loja.exe'.Read of address 00000000.
robinhocne, por acaso o programa não desvia para linha do erro dentro do editor do Delphi? Seria de mais ajuda.

Como esse seu projeto já está "velho" em termos de dúvidas (você já postou outras), eu sei que vCpo e vVlr são listas de strings (TStrings/TStringList). Por acaso elas estão inicializadas? Parece-me que este erro pode der pelo acesso a estas variáveis sem terem sido inicializadas. Dê uma verificada.

Pirambu!, se quiser entender um pouco sobre a pergunta, dá uma olhada neste outro post do robinhocne.
robinhocne
Erro Dentro do Delphi:

QUOTE


Project Loja.exe raised exception class EAccessViolation with message 'Access violation at address 004E79E7 in module 'Loja.exe'.Read of address 00000000'. Process stopped. Use Step or Run to continue.
Micheus
QUOTE(robinhocne @ 06/08/2007 - 17:12) *
Erro Dentro do Delphi:
QUOTE
Project Loja.exe raised exception class EAccessViolation with message 'Access violation at address 004E79E7 in module 'Loja.exe'.Read of address 00000000'. Process stopped. Use Step or Run to continue.
acho que não mudou muita coisa. Continuou não ajudando muito. unsure.gif

Normalmente quando você executa o programa "por dentro" do Delphi, após ocorrer uma exceção é comum que o fluxo do programa seja desviado para dentro da IDE do Delphi, e neste caso, o cursor normalmente é posicionado na linha (ou próximo a ela) em que a tentativa de acesso a uma variável gera o erro.

Como disse antes:
QUOTE
eu sei que vCpo e vVlr são listas de strings (TStrings/TStringList). Por acaso elas estão inicializadas? Parece-me que este erro pode der pelo acesso a estas variáveis sem terem sido inicializadas. Dê uma verificada.

Voce se deu ao trabalho de ao menos verificar isto? (se o objeto vCpo e vVlr estão inicializados)
Não é fácil advinhar a causa do erro quando não temos o código. Tem que ter uma pista de onde ocorre o erro.

O erro pode ainda estar ocorrendo dentro dos procedimentos AlterarRegistro ou IncluirRegistro. Se você não der uma pista de onde ocorre o erro, não vai dar para ajudar.

Voce sabe utilizar Break-points? Se souber, coloque um no início do procedimento e siga executando passo-a-passo até que ocorra o erro.
"para adicionar um break-point, você tecla F5 (a linha deve ficar vermelha e um ponto vermelho aparece na margem esquerda do editor). Este procedimento adiciona um Break-point (ponto de parada). Quando você executar seu programa (normalmente via F9), ele irá parar nesta linha no momento em que ela estiver para ser executada. Neste momento você estará devolta a IDE do Delphi e poderá utilizar o avaliador de expressões (diálogo Evaluate/Modify) - tecland CTRL+F7. Na caixa Expression você digita o nome variável/componente que você quer verificar/alterar o conteúdo"

Voce poderá verificar se as variáveis citadas estão nulas (nil).

Veja o que consegue.
robinhocne
Ok, Micheus entendi, e consegui achar o erro, só não estava relacionando certo os vvlr e vcpo.

Resolvido.
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.