Aide, Comment faire pour EFFACE le ATOM !!!!

Résolu
Signaler
Messages postés
86
Date d'inscription
samedi 28 août 2004
Statut
Membre
Dernière intervention
30 janvier 2014
-
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
-
En voulant écrire cette procédure, je suis resté bloqué
Comment faire pour me débloquer SVP...

procedure Tf_Valider.FormCreate(Sender: TObject);
var
atom: Integer;
begin
if GlobalFindAtom('MINHA STRING') = 0 then
atom := GlobalAddAtom('MINHA STRING')
else
begin
MessageDlg('L''application MADEIRAS est déjà en EXECUTION !!', mtWarning, [mbOK], 0);
Halt;
end;
end ;

Et

procedure Tf_Valider.dxb_quitterClick(Sender: TObject);
var
atom: Integer;
begin
GlobalDeleteAtom(atom);

Application.Terminate;
end;

Là je n'arrive plus a démarrer mon application, il donne ça !!!!
===> Opération annulée

Merci de votre aide a tous.
LF

11 réponses

Messages postés
86
Date d'inscription
samedi 28 août 2004
Statut
Membre
Dernière intervention
30 janvier 2014

Bonjour a tous,

Pour qui ça peut aider,

J'ai trouvé une astuce qui a fonctionné, peut être pas trop catholique mais
Ça due être comme ça, au final j'ai résolu mon problème.

1. Restaurer le system a une date précédant l'exécution
2. Facultatif, effacer l'EXE
3. re-compiler avec Delphi

Voila ce que j'ai fait, est ça marche

Merci a vous tous.
LF
Messages postés
86
Date d'inscription
samedi 28 août 2004
Statut
Membre
Dernière intervention
30 janvier 2014

Toujours moi, sorry
BONJOUR A TOUS,

Je suis en Delphi6 Enterprise.

Encore merci

LF
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
18
Messages postés
86
Date d'inscription
samedi 28 août 2004
Statut
Membre
Dernière intervention
30 janvier 2014

Bonjour a tous,

j'ai procéder a la modif comme stipuler dans la page
comme suit

program Mad;

uses
  Windows, Forms,
  U_saisie_grume....
...

ET

{$R *.res}
var
H : THandle;
Erreur: Integer;
begin
  SetLastError(NO_ERROR);
  H := CreateMutex (nil, False, 'Mad');
  Erreur := GetLastError;
  if ( Erreur ERROR_ALREADY_EXISTS ) or ( Erreur ERROR_ACCESS_DENIED )
    then Exit;
  Application.Initialize;
  Application.CreateForm(Tf_Valider, f_Valider);
  Application.Run;
  CloseHandle(H);
end.


Et en lançant l'application, j'ai de nouveau
(Opération annulée)
je ne m?en sors pas, merci pour toutes vs idées
Toujours je n'y accède pas
Quelqu'un ne sait me dire comment je delete ce fichu ATOM
ou pourquoi ce msg, que je pense qu'il ne s'agit plus une erreur de l'Atom, mais alors d'où elle vient !!!!!!

Merci de votre aide.
LF
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Salut,
je ne comprends pas pourquoi ça ne marche pas, mais je sais que ça marcherait si tu utilisais un mutex . Voir la MSDN pour les fonctions liées aux mutex (t'inquiète pas c'est aussi simple que les atomes, mais ça marche à chaque fois).

Cordialement, Bacterius !
Messages postés
86
Date d'inscription
samedi 28 août 2004
Statut
Membre
Dernière intervention
30 janvier 2014

Bonjour à tous,
Le week-end a été bon?.

Oui, Bacterius, le problème doit etre ailleurs, MAIS ou !!!!
C'est là le problème?

Il n'y a pas une âme qui pourrait m?aider sur ce problème
Là, je galère sérieusement?

C'est ce msg (Opération annulée) qui bloque mon Application

Merci
LF
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
18
Essaie ça (non testé) :

var //Vaiable globale.
Atom : word;

...

initialization
if GlobalFindAtom('MINHA STRING')=0 then Atom:=GlobalAddAtom('MINHA STRING')
else begin
  MessageDlg('L''application MADEIRAS est déjà en EXECUTION !!', mtWarning, [mbOK], 0);
  Halt;
end;

finalization
GlobalDeleteAtom(Atom);

END.
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Je ne suis pas sûr que ça fonctionne, car la clause finalization est il me semble inévitable, et si l'atome existait déjà au lancement de l'application, il ne devrait pas être détruit à la fin de l'exécution de celle-là. Mais je n'ai pas testé non plus.

Cordialement, Bacterius !
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
18
... Ben ouais. Mais ça marche quand même.
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Parfois, il vaut mieux ne pas se poser de questions et laisser les choses toutes seules

Cordialement, Bacterius !
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Etrange ! Un peu comme Delphi qui ne remplace pas les ressources périmées par les nouvelles si elles portent le même nom (il faut supprimer la ressource du code, compiler, et ajouter la ressource à nouveau).

Cordialement, Bacterius !