DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

Usercontrol Erro EAccessViolation

Visualizando 9 posts - 1 até 9 (de 9 do total)
  • Autor
    Posts
  • #3214
    Newton C. da Silva
    Participante

    Boa Noite,

    Instalei o usercontrol Versao 2.31 RC4 sob o Delphi 10.1 Berlin
    Configurei na minha aplicação, conector UCDBISAMConn e funciona tudo (Cadastro de usuários, perfil, alterações etc.) mas, na hora de fechar a aplicação dá Exception EAccessViolation.

    procedure TfPrincipal.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    if application.messagebox (‘DESEJA REALMENTE SAIR DO PROGRAMA ??? ‘, ‘CONFIRMAÇÃO DE SAÍDA’, mb_yesno + mb_iconquestion)=idyes then
    begin
    try
    action:= cafree;
    application.terminate;
    except
    action:= cafree;
    end;
    End else
    action:= canone;
    end;

    apresenta a tela com:

    Application Error

    Exception EAccessViolation in module BeerSorte.exe at
    002F7EBE
    Access violation at address 006F7EBE in module
    BeerSorte.exe. Read of address 00000000.

    Alguém já passou por isso?

    Grato
    Newton – Tangará da Serra/MT

    #3215
    Newton C. da Silva
    Participante

    RESOLVIDO

    Apenas coloquei ucMycontrol.free;
    procedure TfPrincipal.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    if application.messagebox (‘DESEJA REALMENTE SAIR DO PROGRAMA ??? ‘, ‘CONFIRMAÇÃO DE SAÍDA’, mb_yesno + mb_iconquestion)=idyes then
    begin
    try
    ucMycontrol.free; // Inclui essa linha antes de fechar o form.
    action:= cafree;
    application.terminate;
    except
    action:= cafree;
    end;
    End else
    action:= canone;
    end;

    #3283
    mariodosreis
    Participante

    Prezado Newton,

    Qual a versão do Delphi que está a usar? E, se estar a usar todos os componentes inclusive o TUCMassegeAplication e TUCHistorico?
    É que depois que comecei a usar este dois componentes comecei a experimentar problemas que nunca tinha tido antes e uso o UCcontrol há muitos anos. Primeiro com D7 depois com XE e hoje com o Delphi XE7 (e a ultima versão do User control baixada do Show Delphi. Estou a usar o MDI, pelo vistos V. também “caFree”, mas não consigo replicar o que V. diz:
    try
    Aqui ele dá sempre um problema de MemoryLeak uma vezes e outras EAccessViolation quando faço o ucMycontrol.free; // Inclui essa linha

    action:= cafree; // CHEGA: o caFree faz no MDI faz Application.Terminate

    except
    action:= cafree;
    end;

    No seu lugar passava para o
    If
    begin …
    try…
    caFree; // antes
    except
    …caFree; // depois é redundante, faz sempre
    end;

    // Passe para aqui porque evita a redundancia. Ou percebi mal?
    // try e no except
    caFree
    end
    else…

    #3339

    Obrigado Newton pelo retorno.

    #3357
    mariodosreis
    Participante

    Desculpe mas não vejo qualquer retorno do Newton e gostaria de ter acesso ao mesmo. obrigado
    Atentamente

    #3361
    Newton C. da Silva
    Participante

    Tô na área Máriodosreis, se derrubar é pênalty, se relar em mim eu caio. kkk Tirei a redundância conforme vc. sugeriu. Resolvido

    #3383
    Josimar Antunes
    Participante

    Aqui comigo ficou assim, conforme sugerido, mas o problema persiste, quanto fecho a aplicação não dá erro de imediato, mas apos algum tempo aparece o erro

    segue o código

    if Application.MessageBox(‘Você tem certeza que deseja realmente sair do sistema?’,’Aguarde!…’,MB_YESNO+MB_ICONQUESTION) = ID_YES then
    begin
    try
    ucMycontrol.free; // Inclui essa linha antes de fechar o form.
    //UCApplicationMessage1.Free;
    Action :=caFree;
    Application.terminate;
    except
    Action :=caFree;
    end;
    end else
    Action :=caNone;

    #3395

    Josimar, tente no OnClose do form onde o usercontrol desta colocar
    usercontrol1.free, por exemplo, só para verificar se o erro para.

    #3656
    mariodosreis
    Participante

    Não se repararam que o Vagner corrigiu o memoty leaks. Pedi k ele partilhasse o código, mas ele, ou não viu ainda ou só quer fazê-lo by the book(Como manda o livrinho)!?
    Não sei é. Às tantas se houver mais gente a pedir o mesmo, pode ser que se apresse a partilhá-lo.

Visualizando 9 posts - 1 até 9 (de 9 do total)
  • Você deve fazer login para responder a este tópico.

Ir ao topo
© 2024 Infus Soluções em Tecnologia - Todos os Direitos Reservados