IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

Comment faire pour effacer l'ATOM


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut Comment faire pour effacer l'ATOM
    Bonjour a tous,
    En voulant écrire cette procédure, je suis resté bloqué
    Comment faire pour me débloquer SVP...
    Je suis en Delphi6 Enterprise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    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

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    atom est une variable locale. Tu perds donc sa valeur en quittant le Create.

    Utilise une variable globale.

    @+ Claudius

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut
    OUI,

    Mais mon problème c est que je suis bloqué,
    Comment faire pour me débloquer maintenant
    (Opération annulée)
    Je n’est aucune idée comment procéder, quelqu’un peut m’aider SVP

    LF

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut
    Des que j essaie de lancer l’application, j’obtient
    Operation annulée….

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 937
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 937
    Par défaut
    Tu n'as plus qu'à rebooter et faire la modif à Claudius .

    Sinon, utilise plutôt un mutex qui ne vivra que pendant la durée de l'application.

  6. #6
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Re,

    Pour le mutex tu as un exemple dans la Faq: Comment n'instancier qu'une seule fois un programme ?

    @+

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut
    SVP

    Quelqu'un sait me dire comment je delete ce fichu ATOM

  8. #8
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    As-tu rebooter ta machine, comme te la conseillé Andnotor ?

    Mais également supprimer le FindAtom, puisque tu passes par un Mutex maintenant ?

  9. #9
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut
    Oui, meme apres reboote toujour

    Opération annulée et il bloque là

    Cl@udius,
    quand tu dis (supprimer le FindAtom)
    Est-ce que ce code est correcte? si non merci de ton aide,
    Parce que là je rame...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    {$R *.res}
    var
       H : THandle;
       Erreur: Integer;
       atom: Integer;
    begin
      GlobalDeleteAtom(atom);
    
      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.
    merci de ton aide.
    LF

  10. #10
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Par défaut
    opération annulée vient d'ailleur...
    rien à voir avec l'atom
    Écrire ceci n'a aucun sens puisque atom n'est pas initialisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var
       H : THandle;
       Erreur: Integer;
       atom: Integer;
    begin
      GlobalDeleteAtom(atom);
    Fait afficher les break-points du projet CTRL+ALT+B
    et efface tout les point d'arrêt du programme.

    Est-ce que l'application démarre si Delphi est fermé?
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  11. #11
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut
    Bonjour Eric,

    Ne démarre pas NON plus même avec Delphi fermer,
    Tiens ça je n’avait pas pensée, de fermer Delphi, mais bon je suis toujours au même point.
    Mais par contre que ça pouvait ne pas être de l’Atom j’ai commencé à douter de ça, ou serait l’erreur ??? P-c-q là je bloque…

    Je vérifie les break-points...

    @+
    LF

  12. #12
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut
    Il n’existe pas de break-points, la liste est vide !!!!

  13. #13
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut
    Bonjour à tous,
    Le week-end a été bon….

    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

    LF

  14. #14
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut
    Voici le msg qui apparaît...
    (Madeiras) est le nom de l’application
    Fichiers attachés Fichiers attachés

  15. #15
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Par défaut
    Est-ce qu'on peut voir toutes les lignes de code entre
    Program Madeiras
    et
    {$R *.RES}
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  16. #16
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Par défaut
    En faite, je viens de retrouver un problème que j'ai expérimenté ici.

    C'était un peu louintain dans ma tête et je vous le soumet ici.
    (ça n'a peut-être aucun lien avec ton problème)

    Avec mon delphi 5 ici, impossible de changer Application.Title dans
    une fonction et/ou procedure.

    Le compilateur refuse de compiler.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Program Test
     
    use
      ....
     
    {$R *.RES}
     
    //procedure PeutImporteLeNom(PeutImporteLeNomICIAUSSI:string);
    //le compilateur refuse de compiler (D5)
    procedure ChangeTitle(s:string);
    begin
        Application.Title:=s; // Si on met cette ligne en commentaire, pas de probleme!?!
    end;
     
    Begin
     Application.Initialize;
     ChangeTitle('TESTBidon');
     Application.CreateForm(TfrmMain, frmMain);
     Application.Run;
    End.
    Que ce passe-t-il avec une autre version Delphi avec ce code?
    Est-ce qu'on obtient le Opération Annulée de 810mcu?
    si quelqu'un peu expliquer pourquoi Delphi refuse de le faire...

    Comme je dis, peut-être aucun lien avec le problème de 810mcu....
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  17. #17
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut
    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

  18. #18
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 140
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 140
    Par défaut
    Yop !
    Citation Envoyé par Eric Boisvert Voir le message
    Que ce passe-t-il avec une autre version Delphi avec ce code ?
    D7 PE :Compile impec, mais impossible d'exécuter (Menu "Exécuter", "Exécuter F9" est grisé...) Avec ta ligne à souci en commentaire, ça s'exécute.

    Citation Envoyé par Eric Boisvert Voir le message
    Est-ce qu'on obtient le Opération Annulée de 810mcu ?
    Non, rien à voir, àmha.

    Citation Envoyé par Eric Boisvert Voir le message
    si quelqu'un peu expliquer pourquoi Delphi refuse de le faire...
    Il doit s'embrouiller qqpart, car si je veux "enregistrer le projet sous...", je gagne :
    Erreur dans le module Project1 : L'appel à Application.CreateForm est manquant ou incorrect.
    Solution :
    1. mettre la ligne en commentaires ;
    2. "enregistrer le projet sous..." ;
    3. décommenter la ligne ;
    4. compiler ;
    5. aller dans le dossier d'enregistrement, où l'on va trouver un magnifique .exe qui fonctionne as expected, ie, Application.Title est bien changé !


    Valà,

  19. #19
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Par défaut
    Merci pour les tests Jipété!
    Mon but était de faire quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.Tilte:='NomDuPrg.EXE V' + GetFileVers(Application.ExeName);
    Disons que j'avais chercher longtemps pourquoi mon projet de compilait plus.
    C'est domage...
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment faire pour qu'une application soit toujours visible ?
    Par goldbar dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 28/03/2004, 14h35
  2. Réponses: 7
    Dernier message: 13/12/2003, 14h09
  3. comment faire pour developper des prog en win32
    Par rhodan51 dans le forum Autres éditeurs
    Réponses: 11
    Dernier message: 09/11/2003, 19h39
  4. Comment faire pour mettre l'ecran en veille ?
    Par March' dans le forum MFC
    Réponses: 6
    Dernier message: 29/08/2002, 14h25
  5. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo