ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Fechar o programa na inicialização

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Waldinho
Novato
Novato


Registrado: Quarta-Feira, 26 de Março de 2003
Mensagens: 22

MensagemEnviada: Qui Mar 25, 2010 3:17 pm    Assunto: Fechar o programa na inicialização Responder com Citação

Olá, gente.
Seguinte: na inicialização de uma aplicação estou verificando se existe um arquivo. Em caso positivo ele continua, caso contrário é para fechar a aplicação.
Estou fazendo assim:

Citação:

program Autobox;

uses
Windows,
sDialogs,
Forms,
SysUtils,
Dialogs,
FileCtrl,
UPrincipal in 'UPrincipal.pas' {frmPrincipal},
ufrmCadastroBase in 'ufrmCadastroBase.pas' {frmCadastroBase},
ufrmSobre in 'ufrmSobre.pas' {frmSobre},
ufrmAbertura in 'ufrmAbertura.pas' {frmAbertura},
udmAutobox in 'udmAutobox.pas' {dmAutobox: TDataModule};

var
FrmAbertura : TFrmAbertura;
Map : THandle;
i : integer;

{$R *.res}

const
NUM_FORMULARIOS = 3;

begin
// Somente uma instância da aplicação
Map := CreateFileMapping($FFFFFFFF, nil, PAGE_READONLY, 0, 32, 'MyACMap');
if Map = 0 then begin
sShowMessage('Erro na alocação de memória.');
Halt;
end
else if GetLastError = ERROR_ALREADY_EXISTS then begin
sShowMessage('Esta aplicação já está sendo executada.');
Halt;
end; //Fim da checagem da instância

Application.Initialize;
try
Application.CreateForm(TdmAutobox, dmAutobox);
frmAbertura := TfrmAbertura.Create(Application);
frmAbertura.spbAbertura.Max := NUM_FORMULARIOS ; // número de forms a serem criados
frmAbertura.show;
frmAbertura.update;

Application.CreateForm(TfrmPrincipal, frmPrincipal);
frmAbertura.spbAbertura.StepIt;

Application.CreateForm(TfrmCadastroBase, frmCadastroBase);
frmAbertura.spbAbertura.StepIt;

Application.CreateForm(TfrmSobre, frmSobre);
frmAbertura.spbAbertura.StepIt;

finally
// Fechando o Splash-Screen e liberando memória (este código pode ser posto em,
// outras partes da aplicação. Por exemplo no evento Form1.OnShow)
FreeAndNil(frmAbertura);
end;

if FileExists('Autobox.ini') then
begin
Application.Run;
end
else
begin
ShowMessage('Arquivo de configuração não encontrado.');
Application.Terminate;
end;
end.


Quando não encontra o arquivo é exibida uma mensagem mas dá erro no término da aplicação.

Alguém pode me dar uma ajudar?
Valeu.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
rafmattos
Colaborador
Colaborador


Registrado: Quinta-Feira, 11 de Fevereiro de 2010
Mensagens: 3416
Localização: Campo Grande/MS

MensagemEnviada: Qui Mar 25, 2010 3:45 pm    Assunto: Responder com Citação

Qual erro q da?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
Waldinho
Novato
Novato


Registrado: Quarta-Feira, 26 de Março de 2003
Mensagens: 22

MensagemEnviada: Qui Mar 25, 2010 3:58 pm    Assunto: Responder com Citação

Olá, rafmattos.
Quando executo no Delphi (F9) aparece isto:
Citação:

Project Autobox.exe raised exception EInvalidPointer with message 'Invalid pointer operation'.
Process stopped. use Step or Run to continue.


Quando executo fora aparece isto.
Citação:
Runtime error 217 at 004027AC


Valeu.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Waldinho
Novato
Novato


Registrado: Quarta-Feira, 26 de Março de 2003
Mensagens: 22

MensagemEnviada: Qui Mar 25, 2010 5:06 pm    Assunto: Responder com Citação

Olá, rafmattos.
Resolvi da seguinte forma:
Citação:

program Autobox;

uses
Windows,
sDialogs,
Forms,
SysUtils,
Dialogs,
FileCtrl,
UPrincipal in 'UPrincipal.pas' {frmPrincipal},
ufrmCadastroBase in 'ufrmCadastroBase.pas' {frmCadastroBase},
ufrmSobre in 'ufrmSobre.pas' {frmSobre},
ufrmAbertura in 'ufrmAbertura.pas' {frmAbertura},
udmAutobox in 'udmAutobox.pas' {dmAutobox: TDataModule};

var
FrmAbertura : TFrmAbertura;
Map : THandle;
i : integer;

{$R *.res}

const
NUM_FORMULARIOS = 3;

begin
// Somente uma instância da aplicação
Map := CreateFileMapping($FFFFFFFF, nil, PAGE_READONLY, 0, 32, 'MyACMap');
if Map = 0 then begin
sShowMessage('Erro na alocação de memória.');
Halt;
end
else if GetLastError = ERROR_ALREADY_EXISTS then begin
sShowMessage('Esta aplicação já está sendo executada.');
Halt;
end; //Fim da checagem da instância

Application.Initialize;
try
Application.CreateForm(TdmAutobox, dmAutobox);
frmAbertura := TfrmAbertura.Create(Application);
frmAbertura.spbAbertura.Max := NUM_FORMULARIOS ; // número de forms a serem criados
frmAbertura.show;
frmAbertura.update;

Application.CreateForm(TfrmPrincipal, frmPrincipal);
frmAbertura.spbAbertura.StepIt;

Application.CreateForm(TfrmCadastroBase, frmCadastroBase);
frmAbertura.spbAbertura.StepIt;

Application.CreateForm(TfrmSobre, frmSobre);
frmAbertura.spbAbertura.StepIt;

finally
// Fechando o Splash-Screen e liberando memória (este código pode ser posto em,
// outras partes da aplicação. Por exemplo no evento Form1.OnShow)
FreeAndNil(frmAbertura);
if not (FileExists('Autobox.ini')) then
begin
ShowMessage('Arquivo de configuração não encontrado.' + #13
+ 'O aplicativo será finalizado.');
Application.ShowMainForm := false;
Application.Terminate;
end
end;
Application.Run;
end.


Valeu.
Pode marcar como resolvido.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Qui Mar 25, 2010 8:04 pm    Assunto: Responder com Citação

no lugar do halt, coloque

Exit;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB