Fórum Erro acsses violation at address 00774788 in module PreVenda.exe. Read of address 00000000. #417643
29/05/2012
0
Segue o codigo inteiro da chamada ao formulario.
procedure TfrmPreVenda.btnPesqPedidoClick(Sender: TObject);
var
ret : Boolean;
p : TBancoDados;
begin
if status = 0 then
begin
if sPedVenda = 1 then
begin
ret := p.gravaBackup(P);
limpaCampos;
desabilitaBotoesFinal;
if ret = false then
begin
Application.MessageBox(Erro ao ao regravar a Pré venda,Informação do Sistema,
MB_OK+MB_ICONERROR);
end;
end;
frmConsultaPedVenda := TfrmConsultaPedVenda.Create(Application);
try
frmConsultaPedVenda.ShowModal;
finally
frmConsultaPedVenda.Release ;
frmConsultaPedVenda := nil;
end;
end
else
Application.MessageBox(Existe Pré Venda em edição!,Informação do Sistema,
MB_OK+MB_ICONINFORMATION);
btnPesqPedido.Enabled := false;
btnOrcamento.Enabled := false;
btnConsPreco.Enabled := false;
btnCancelaItem.Enabled := false;
btnLogff.Enabled := false;
btnTransp.Enabled := true;
btnEditar.Enabled := true;
btnDescAcresc.Enabled := true;
btnGravar.Enabled := false;
gridProdutos.Enabled := false;
end;
Como sempre consegui resolver meus problemas por aqui, segue mais uma vez como minha ultima esperança;
Guilherme
Curtir tópico
+ 0Posts
29/05/2012
Joel Rodrigues
Gostei + 0
29/05/2012
Guilherme
sou iniciante, não sei usar o Debug, e outra coisa na maquina que eu desenvolvo nao acontece isso, só em outras maquinas.
Gostei + 0
30/05/2012
William
Exception de Access Violation gralmente é disparada quando tentamos acessar um obejto que não está na memória, revise seu código com cuidado.
Gostei + 0
30/05/2012
William
Gostei + 0
30/05/2012
Guilherme
Exception de Access Violation gralmente é disparada quando tentamos acessar um obejto que não está na memória, revise seu código com cuidado.
Estou Usando a Versão 2010
Gostei + 0
30/05/2012
Guilherme
Na verdade foi uma outra pessoa que fiz isso, e nem trabalha mais aqui, estou começando agora, em desenvolvimento e preciso corrigir isso.
pode me dar um ex:
Se eu segurar o control em TBancoDados caoio aqui:
TBancoDados = class
published
function gravaPreVenda(numero, cliente, nome, orcamento, obs: String;
valorProd, descAcresc, valorTotal: String;
transp, vendedor, situacao: String): Boolean;
function gravaItemPedVenda(numero: String;
valorTotal, DATotal, qtdeItem: Double): Boolean;
function gravaRecPedVenda(numero: String): Boolean;
function deletaPedVenda(numero: String): Boolean;
function valorGenPV: Integer;
function gravaOrcam(numero, cliente, nome, obs, valorProd,
descAcresc: String; valorTotal, transp, vendedor, situacao: String)
: Boolean;
function gravaItemOrcam(numero: String;valorTotal, DATotal, qtdeItem:Double): Boolean;
function gravaRecOrcam(numero: String): Boolean;
function deletaOrcam(numero: String): Boolean;
function valorGenOrcam: Integer;
function comissaoVend(codigo: String): Double;
function checarDireitoAcesso(permissao, usuario: Integer): Boolean;
function gravaBackup(tipo : String): Boolean;
function gravaBackupOrcam :Boolean;
function alteraStatusOrcam(numero, situacao : String):Boolean;
function verficaOrcam(numero: String):Boolean;
function consultClientes(codigo : String):Boolean;
end;
Gostei + 0
30/05/2012
William
Gostei + 0
30/05/2012
Guilherme
ok. tenho um conhecimento nivel médio.....estou aprendendo.....mas ja aprendi bastante coisas.
Gostei + 0
30/05/2012
Joel Rodrigues
Talvez você não esteja visualizando este problema na sua máquina por não estar atendendo a condição sPedVenda = 1, logo, o objeto P não é utilizado.
Outro detalhe, no código da classe TBancoDados, o método gravaBackup recebe um parâmetro do tipo String e você está passando o próprio objeto P ao invés disso.
Para contornar essa situação, tente colocar ´´p := TBancoDados.Create;´´ logo após o begin. Se isso funcionar, atente para a questão do parâmetro do método gravaBackup. Não conheço o método, mas talvez seja esperado um diretório ou nome de arquivo no qual será gravado o backup.
Faça a alteração proposta e nos dê retorno.
Gostei + 0
30/05/2012
Guilherme
Talvez você não esteja visualizando este problema na sua máquina por não estar atendendo a condição sPedVenda = 1, logo, o objeto P não é utilizado.
Outro detalhe, no código da classe TBancoDados, o método gravaBackup recebe um parâmetro do tipo String e você está passando o próprio objeto P ao invés disso.
Para contornar essa situação, tente colocar ´´p := TBancoDados.Create;´´ logo após o begin. Se isso funcionar, atente para a questão do parâmetro do método gravaBackup. Não conheço o método, mas talvez seja esperado um diretório ou nome de arquivo no qual será gravado o backup.
Faça a alteração proposta e nos dê retorno.
Fiz o teste da seguinte forma
var
ret : Boolean;
p : TBancoDados;
begin
p := TBancoDados.Create;
if status = 0 then
begin
if sPedVenda = 1 then
begin
mas deu o mesmo erro. Acho que tem algo relacionado com a gride que vai exibir as pre vendas, pois se eu colocar na opção da gride visible = false, não da o erro.
No final do erro aparece
System Error Code 1400 o identificador da janela é invalido
Gostei + 0
30/05/2012
Deivison Melo
Gostei + 0
31/05/2012
Joel Rodrigues
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)