Erro ao abrir formulário - Acess Violation

Delphi

30/04/2015

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

Curtidas 0

Respostas

Douglas

Douglas

30/04/2015

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

Dirceu Morais

30/04/2015

Obrigado Douglas,

Mas não deu certo. Continua com o mesmo problema.
GOSTEI 0
Douglas

Douglas

30/04/2015

Dirceu, debugue o código e veja exatamente onde ocorre o erro. Aguardo o seu feedback
GOSTEI 0
Thiago Santana

Thiago Santana

30/04/2015

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.
GOSTEI 0
Dirceu Morais

Dirceu Morais

30/04/2015

Valeu vou testar.

Mas como disse, o interessante é que nos outros PCs funcionam. Neste funcionava e de repente parou.
GOSTEI 0
Thiago Santana

Thiago Santana

30/04/2015

Muito estranho!
Deve funcionar em todas as estações!
GOSTEI 0
Douglas

Douglas

30/04/2015

Thiago, realmente muito estranho.
GOSTEI 0
Douglas

Douglas

30/04/2015

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

Dirceu Morais

30/04/2015

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!!!!!!
GOSTEI 0
Thiago Santana

Thiago Santana

30/04/2015

Coloca doidera nisto kkkkkkkkkkkk
GOSTEI 0
Dirceu Morais

Dirceu Morais

30/04/2015

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?
GOSTEI 0
Felipe Morais

Felipe Morais

30/04/2015

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;
GOSTEI 0
Dirceu Morais

Dirceu Morais

30/04/2015

Testei da forma que você mencionou, mas continua com o mesmo problema.
GOSTEI 0
Felipe Morais

Felipe Morais

30/04/2015

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.
GOSTEI 0
Dirceu Morais

Dirceu Morais

30/04/2015

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;
GOSTEI 0
Felipe Morais

Felipe Morais

30/04/2015

Comente os códigos dos eventos OnClose e OnDestroy. Ainda assim dá erro?
GOSTEI 0
Dirceu Morais

Dirceu Morais

30/04/2015

Bom Dia!!!

Depois de muito quebrar a cabeça, me deu estalo e retirei do formulário do RVSystem tirei do USES do

RpDefine, RpBase, RpSystem


Compilei e deu certo.

Agora vou entrar nos outros formulários que tem o RVSystem e trocar todos os meus relatórios pelo FastReport.


Aguento eu troço desse?


Muito obrigado a todos pelo interesse no meu problema, em especial ao Moraissan.
GOSTEI 0
POSTAR