Erro ao abrir formulário - Acess Violation
Gente,
Estou com este problema ao abrir o formulário. No Formprincipal eu chamo da seguinte forma:
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
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
Curtidas 0
Respostas
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
30/04/2015
Obrigado Douglas,
Mas não deu certo. Continua com o mesmo problema.
Mas não deu certo. Continua com o mesmo problema.
GOSTEI 0
Douglas
30/04/2015
Dirceu, debugue o código e veja exatamente onde ocorre o erro. Aguardo o seu feedback
GOSTEI 0
Thiago Santana
30/04/2015
Dirceu, tenta o seguinte código:
Outra coisa que você precisa verificar é se no seu projeto esse form está marcado para ser criado ao iniciar!
Espero ter ajudado.
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
30/04/2015
Valeu vou testar.
Mas como disse, o interessante é que nos outros PCs funcionam. Neste funcionava e de repente parou.
Mas como disse, o interessante é que nos outros PCs funcionam. Neste funcionava e de repente parou.
GOSTEI 0
Thiago Santana
30/04/2015
Muito estranho!
Deve funcionar em todas as estações!
Deve funcionar em todas as estações!
GOSTEI 0
Douglas
30/04/2015
Thiago, realmente muito estranho.
GOSTEI 0
Douglas
30/04/2015
Dirceu, construa um novo projeto apartado e leve o seu formulário "TformTrocarLote" tente abri-lo.
GOSTEI 0
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!!!!!!
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
30/04/2015
Coloca doidera nisto kkkkkkkkkkkk
GOSTEI 0
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?
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
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);
-> 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:
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:
-> 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
30/04/2015
Testei da forma que você mencionou, mas continua com o mesmo problema.
GOSTEI 0
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.
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
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.
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
30/04/2015
Comente os códigos dos eventos OnClose e OnDestroy. Ainda assim dá erro?
GOSTEI 0
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
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.
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