Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema con la instruccion Halt (https://www.clubdelphi.com/foros/showthread.php?t=16584)

VRO 02-12-2004 18:42:34

Problema con la instruccion Halt
 
Hola a todos, ¿Qué hay denuevo?,
ya estoy en la ultimísima etapa para acabar la aplicación, ahora lo que estoy haciendo es encontrar la forma correcta (sin que me de error) de permitir que mi aplicación no se ejecute más de una vez simultáneamente y que cuando se intente ejecutar más de una vez me de un mensaje de error y me resture la aplicación anteriormente ejecutada.

Para ello primeramente he utilizado un componente llamado TUsedTimeStop, que con unos pequeños arreglos han conseguido que sirve también para permitir que la aplicaciín se ejecute hasta 40 veces (no simultáneamente) sin que se registre y a la 41 hay que registrar la aplicación.
El código fuente de este componente trae una instrucción que es halt que da un error:

" Este programa ha efectuado una operación no admitida y será interrumpido."

Después he utilizado código encontrado en este foro, que paso a postearlo a continuación:
Código Delphi [-]

procedure TForm1.FormCreate(Sender: TObject);
 var Sem  : THandle;
begin
   
   Sem := CreateSemaphore(nil,0,1,'PROGRAM_NAME');
    if ((Sem <> 0) and (GetLastError = ERROR_ALREADY_EXISTS)) then 
    begin 
    CloseHandle( Sem );
    ShowMessage('This program is already running.'+
          'Este programa ya se está ejecutando...');
    Halt;
end;

Si en vez de halt pongo application.terminate, no me da error pero no se como restaurar la aplicación anterior, es decir, la primera ha ejecutar y me ocurre otra cosa que es como si pegase un pantallazo, es decir, se carga el formulario principal y luego se descarga, es cuestión de segundos pero queda muy feo.

Si alguien pued decirme porque da error el halt y como arreglarlo para que me restaure la plicación en ejecución.

En realidad no se si con esta parrafada de explicación e aclarado mi situación ó lo he empeorado.

De antemano, gracias por prestar su tiempo.

Verónica Ríos.

roman 02-12-2004 20:43:34

Cita:

Empezado por VRO
lo que estoy haciendo es encontrar la forma correcta (sin que me de error) de permitir que mi aplicación no se ejecute más de una vez simultáneamente y que cuando se intente ejecutar más de una vez me de un mensaje de error y me resture la aplicación anteriormente ejecutada.

Si esto es todo lo que quieres no busques más. Usa mi unidad uiapp.pas. Con ella no tienes que hacer nada mas que incluirla en el uses de tu dpr y ella se encarga de todo. Bueno, no manda mensaje pero fácilmente se lo añades al código.

// Saludos

llonigualker 02-12-2004 21:52:24

o tambien puedes buscar en trucomania que ese caso viene explicado

www.q3.nu/trucomania/


La franja horaria es GMT +2. Ahora son las 02:32:46.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi