![ActiveDelphi - Índice do Fórum](templates/subSilver/images/logo_phpBB.gif) |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
Waldinho Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quarta-Feira, 26 de Março de 2003 Mensagens: 22
|
Enviada: Qui Mar 25, 2010 3:17 pm Assunto: Fechar o programa na inicializaçã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 |
|
![](templates/subSilver/images/spacer.gif) |
rafmattos Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Quinta-Feira, 11 de Fevereiro de 2010 Mensagens: 3416 Localização: Campo Grande/MS
|
Enviada: Qui Mar 25, 2010 3:45 pm Assunto: |
|
|
Qual erro q da? |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
Waldinho Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quarta-Feira, 26 de Março de 2003 Mensagens: 22
|
Enviada: Qui Mar 25, 2010 3:58 pm Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
Waldinho Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quarta-Feira, 26 de Março de 2003 Mensagens: 22
|
Enviada: Qui Mar 25, 2010 5:06 pm Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
gilsonnrodrigues Moderador
![Moderador Moderador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/moderador.gif)
Registrado: Quinta-Feira, 14 de Abril de 2005 Mensagens: 9009 Localização: Governador Valadares-MG
|
Enviada: Qui Mar 25, 2010 8:04 pm Assunto: |
|
|
no lugar do halt, coloque
Exit; |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|