Fórum Erro ao abrir formulário - Acess Violation #518382

30/04/2015

0

Gente,

Estou com este problema ao abrir o formulário. No Formprincipal eu chamo da seguinte forma:
   if formTrocarLote = nil then
      formTrocarLote := TformTrocarLote.create(Application);
   formTrocarLote.Show();


Detalhe:
1) Tem outros form que chamo da mesma forma é dá certo.
2) O mais intrigante é que antes funcionava de repente parou de funcionar.
3) Passei o antivirus e não acusou nada.
4) Nos outros computadores da rede não tem problema.

O que será que está bloqueando/Travando heim?

Desde já agradeço
Dirceu Morais

Dirceu Morais

Responder

Posts

30/04/2015

Douglas

Olá Dirceu, tudo bem? Vamos fazer um teste simples, no create do formulário você vai trocar 'application' por 'nil'
Responder

Gostei + 0

30/04/2015

Dirceu Morais

Obrigado Douglas,

Mas não deu certo. Continua com o mesmo problema.
Responder

Gostei + 0

30/04/2015

Douglas

Dirceu, debugue o código e veja exatamente onde ocorre o erro. Aguardo o seu feedback
Responder

Gostei + 0

30/04/2015

Thiago Santana

Dirceu, tenta o seguinte código:


  formTrocarLote := TformTrocarLote.Create(Self);
  formTrocarLote.ShowModal;
  formTrocarLote.Free;



Outra coisa que você precisa verificar é se no seu projeto esse form está marcado para ser criado ao iniciar!
Espero ter ajudado.
Responder

Gostei + 0

30/04/2015

Dirceu Morais

Valeu vou testar.

Mas como disse, o interessante é que nos outros PCs funcionam. Neste funcionava e de repente parou.
Responder

Gostei + 0

30/04/2015

Thiago Santana

Muito estranho!
Deve funcionar em todas as estações!
Responder

Gostei + 0

30/04/2015

Douglas

Thiago, realmente muito estranho.
Responder

Gostei + 0

30/04/2015

Douglas

Dirceu, construa um novo projeto apartado e leve o seu formulário "TformTrocarLote" tente abri-lo.
Responder

Gostei + 0

04/05/2015

Dirceu Morais

Pessoal,


Estranhamente hoje, o formulário abriu!!!!!!

Estranho, porque este problema, estava acontecendo há alguns, ou seja, o computador foi desligado e ligado novamente.

Não posso nem postar a solução do problema, para os outros colegas, porque não sei o que ocasional o erro e nem o motivo para voltar funcionar.

ô doideira!!!!!!
Responder

Gostei + 0

04/05/2015

Thiago Santana

Coloca doidera nisto kkkkkkkkkkkk
Responder

Gostei + 0

14/09/2017

Dirceu Morais

Pessoal,

O problema voltou a dar em outro cliente, do mesmo jeito, ou seja, tem um computador que está com problema e tenho outros na mesma rede que abre o formulário normalmente.

O Ruim disso tudo é que não consigo debuggar, porque no meu computador que tem o Delphi instalado o programa abre normalmente.


Alguém já passou por isso?
Responder

Gostei + 0

18/09/2017

Felipe Morais

Um Form é um Objeto. Quando manipulamos um objeto e aparece um Access Violation, pode ser um dos cenários:

-> Tentar acessar um Objeto que não foi instanciado (geralmente pelo
constructor Create
);
-> Tentar destruir um Objeto que não existe mais;

Quando se cria Forms em tempo de execução, é seguro fazer uma verificação se a instância desse Form está criada. Se não estiver, é preciso chamar o construtor para instanciar o Form:

if not (Assigned(Seu_Form)) then
  // Técnica padrão do Delphi para criação de Forms (veja seu .dpr, por exemplo)
  Application.CreateForm(TSeu_Form, Seu_Form);


Feito isso, mostre seu Form (Show ou ShowModal) e depois não se esqueça de liberá-lo da memória. O código completo seria:

if not (Assigned(Seu_Form)) then
    Application.CreateForm(TSeu_Form,Seu_Form);

  try
    Seu_Form.ShowModal;
  finally
    FreeAndNil(Seu_Form);
  end;
Responder

Gostei + 0

18/09/2017

Dirceu Morais

Testei da forma que você mencionou, mas continua com o mesmo problema.
Responder

Gostei + 0

18/09/2017

Felipe Morais

Project > Options > Aba "Forms"

Verifique se o formulário que está chamando no código está na janela "Available Forms". Se ainda assim não resolver, posta o código pra gente dar uma olhada.
Responder

Gostei + 0

18/09/2017

Dirceu Morais

Criei um form novo e copiei somente os dados iniciais e mesmo assim continua problema ao criar o formulário.

LEMBRANDO, que o formulário não abre em determinado computador, não consigo fazer DEBUGAR porque no meu abre normalmente.

unit UnEstimativa;

interface

uses
  Windows, FMTBcd, frxDMPExport, frxExportRTF, frxExportXLS,frxExportPDF,Forms,
  frxOLE, frxExportImage, frxExportMail, frxClass, frxDBSet, frxDesgn,SysUtils,
  Menus, RpDefine, RpBase, RpSystem, DB, Provider, SqlExpr, DBClient, inifiles,
  StdCtrls, ExtCtrls, Buttons, Controls, CheckLst, RXCtrls, ToolEdit, Messages,
  CurrEdit, AdvGlowButton, Grids, DBGrids, ComCtrls, RzTabs, Variants, Classes,
  Graphics, DBXpress, Mask, Math, DateUtils;

type
  TFormEstimativa = class(TForm)
   fxPedidos: TfrxReport;
    frxDesigner1: TfrxDesigner;
    frxEmitente: TfrxUserDataSet;
    frxORCAMENTO: TfrxDBDataset;
    frxDuplicatas: TfrxDBDataset;
    frxItensOrcamento: TfrxDBDataset;
    frxBMPExport1: TfrxBMPExport;
    frxMail: TfrxMailExport;
    frxJPEGExport1: TfrxJPEGExport;
    frxOLEObject1: TfrxOLEObject;
    frxPDFExport1: TfrxPDFExport;
    frxXLSExport1: TfrxXLSExport;
    frxRTFExport1: TfrxRTFExport;
    frxDotMatrixExport1: TfrxDotMatrixExport;
    cdsDigItensNota_Moeda: TStringField;
    cdsItensOPEDDESCRICAO: TStringField;
    cdsItensOPEDMOEDA: TStringField;
    cdsItensOPROCST: TStringField;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
 private
    { Private declarations }
 public
    { Public declarations }
  end;

var
  FormEstimativa: TFormEstimativa;

implementation

uses UnPrincipal, unLocaliza, UnDMMov, UnLocCli, UnDadosCliente,
  UnSelecProd, unServicos, UnDM, UnVendedores, UnTransportadoras, UnBancos,
  UDialog, uRotinas, uMatricial, unPreview;

{$R *.DFM}

procedure TFormEstimativa.FormCreate(Sender: TObject);
begin
   // Configurações iniciais
   Top := 6;
   Left := 110;
end;

procedure TFormEstimativa.FormDestroy(Sender: TObject);
begin
   FormOrcamento := Nil;
end;

procedure TFormEstimativa.FormClose(Sender: TObject;  var Action: TCloseAction);
begin
   Action := cafree;
end;

procedure TFormEstimativa.bfecharClick(Sender: TObject);
begin
   Close;
end;
Responder

Gostei + 0

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

Aceitar