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

Langage Delphi Discussion :

Erreur Application.ProcessMessages


Sujet :

Langage Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Erreur Application.ProcessMessages
    Bonjour à tous,

    Lors de l'exécution de mon programme, j'obtiens le message d'erreur suivant :

    'Violation d'accès à l'adresse 008E04A8 dans le module 'vcl90.bpl'
    Lecture de l'adresse 00000004'


    Pour information, mon programme est un petit utilitaire de gestion des connexions internet (adresse IP, statut de connexion, gestion du VPN, des cartes réseaux, du proxy...).
    Le pas à pas dans Delphi m'a permis de situer la procédure "incriminée" (plus particulièrement, la ligne en rouge) :

    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
    22
    procedure TForm1.RafraichirProxies();
    var
      CurrProxy : String;
      ProxyActive: boolean;
       i: integer;
    begin
      // Si une sauvegarde des proxies existe
      if FileExists(FICHIERPROXY) then
      begin
        // Récupère si le proxy est actif dans Internet Explorer
        ProxyActive := LireIntegerDansRegistre(INTERNETSETTINGSREGPATH, 'ProxyEnable') = 1;
        // On récupère l'adresse du proxy
        CurrProxy := LireStringDansRegistre(INTERNETSETTINGSREGPATH, 'ProxyServer');
        // Pour chaque adresse de la liste des proxies
       for i := 0 to ListView1.items.count - 1 do
        begin
           //On coche la case du proxy actuel (si actif) et décoche les autres
         ListView1.Items.Item[i].Checked := (ListView1.Items.Item[i].Caption = CurrProxy) and ProxyActive;
        end;
      end;
     Application.ProcessMessages;
    end;
    J'aimerais donc avoir votre avis sur cette la cause possible de cette erreur, qui reste pour moi assez mystérieuse...

    Merci d'avance pour votre aide !

  2. #2
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    à tu des événement liée à la listview?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Euh, oui : un évènement PopupMenu et un évènement SmallImages.
    Du coup, je ne peux pas utiliser Application.ProcessMessages ?

  4. #4
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    et si tu met le processe message dans la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       for i := 0 to ListView1.items.count - 1 do
        begin
           //On coche la case du proxy actuel (si actif) et décoche les autres
         ListView1.Items.Item[i].Checked := (ListView1.Items.Item[i].Caption = CurrProxy) and ProxyActive;
          Application.ProcessMessages;
        end;

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Non, même en le mettant dans la boucle, j'ai la même erreur

  6. #6
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    alors remet là au tout début de la procedure, car je crois que t'a l'erreur dans le code appelant de celle ci

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    malheureusement, même au début de la procédure, ça ne change rien...

  8. #8
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    Citation Envoyé par edam Voir le message
    alors remet là au tout début de la procedure, car je crois que t'a l'erreur dans le code appelant de celle ci

  9. #9
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 851
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 851
    Points : 15 268
    Points
    15 268
    Par défaut
    Salut.
    Citation Envoyé par Alex_31 Voir le message
    malheureusement, même au début de la procédure, ça ne change rien...
    Et si tu ne la mets pas du tout, cette ligne, ça fait quoi ?
    Parce qu'àmha, c'est pas cette ligne qui pose problème...

    J'ai fait un micro-test avec une Listview et 3 items ajoutés en mode design (test, blah, essai), et ce code :
    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
    procedure TForm1.RafraichirProxies;
    var
       CurrProxy : String;
       ProxyActive: boolean;
       i: integer;
    begin
      CurrProxy := 'blah';
      ProxyActive := True;
      for i := 0 to ListView1.items.count - 1 do
      begin
        //On coche la case du proxy actuel (si actif) et décoche les autres
        ListView1.Items.Item[i].Checked := (ListView1.Items.Item[i].Caption = CurrProxy) and ProxyActive;
        Application.ProcessMessages; // doit être DANS la boucle
      end;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      show;
      RafraichirProxies;
    end;
    y a pas de lézard, y a pas d'embrouille, j'ai bien une case cochée et les deux autres vides...

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Et si tu ne la mets pas du tout, cette ligne, ça fait quoi ?
    Effectivement, qu'elle y soit ou pas, cela ne change rien.
    La cause du problème doit être dans une autre procédure appelant celle-ci, comme le dit edam.
    Je me penche à nouveau sur le reste du code et je vous tiens au courant !

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Problème résolu ! Après une relecture et un "nettoyage en profondeur" de tout le code, je n'ai plus cette erreur à l'ouverture .

    Merci pour votre aide

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

Discussions similaires

  1. Erreur de Application->ProcessMessages()
    Par megamario dans le forum C++Builder
    Réponses: 4
    Dernier message: 16/11/2009, 10h15
  2. Application.ProcessMessages dans une table
    Par sondo dans le forum Bases de données
    Réponses: 11
    Dernier message: 04/02/2007, 14h16
  3. Blocage même avec Application.ProcessMessages
    Par Sub0 dans le forum Delphi
    Réponses: 7
    Dernier message: 31/01/2007, 05h13
  4. ERREUR : Application mal configuré
    Par picsou33 dans le forum C++
    Réponses: 7
    Dernier message: 19/06/2006, 21h51
  5. problème avec Application->ProcessMessages()
    Par petitours dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/08/2005, 10h27

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