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

Delphi Discussion :

violations d'accès inexpliquées


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Par défaut violations d'accès inexpliquées
    Bonjour.
    Dans un projet, j'ai des violations d'accès inexpliquées.
    J'ai recréé un petit projet qui reproduit ce pb afin de pouvoir l'envoyer ici.
    Pour voir l'erreur, cliquez plusieurs fois sur le bouton nouveau.
    Plusieurs fenêtres apparaissent.
    cliquez sur le bouton "bouton1" d'une de ces fenêtres, une boite de selection apparait.Cliquez sur annuler, une erreur se produit (pas systematiquement)
    Je suis largué, d'ou vient cette erreur ?

    Ci joint le projet en zip et une capture d'écran de l'erreur.
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  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

    Je n'arrive pas à ouvrir ton zip !
    WinZip me dit qu'il est invalide.

    @+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Par défaut fichiers joints
    voici les fichiers contenus dans le zip.
    Je n'ai pas pu tout mettre, mais ça devrait te permettre de refaire le projet.
    A+
    Fichiers attachés Fichiers attachés

  4. #4
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    Citation Envoyé par Cl@udius
    Salut

    Je n'arrive pas à ouvrir ton zip !
    WinZip me dit qu'il est invalide.

    @+
    C'est parce que tu le télécharges avec IE et qu'il l'a uploadé avec Firefox.
    On a le même problème sur les forums privés.

    Winrar te l'ouvrira quand même.

  5. #5
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    juste avant le dialog.execute : c'est pas terrible ça...

  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
    Citation Envoyé par waskol
    C'est parce que tu le télécharges avec IE et qu'il l'a uploadé avec Firefox.
    On a le même problème sur les forums privés.

    Winrar te l'ouvrira quand même.
    Exact ça marche avec WinRAR Merci Waskol pour l'info.

    @+

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Par défaut réponse à waskol
    Exact waskol, c'est bien l'instruction release avant la boite de dialogue qui pose pb.
    Mais je ne peux pas changer cela.C'est le client qui m'impose un bouton.
    Ce bouton doir fermer la fenêtre et ouvrir une boite de dialogue type topendialog.
    Il se trouve que cette fenêtre est une mdi fille et que donc pour la cacher, je dois la détruire...

    Mais même si ça ne parait pas tomber sous le sens comme opération, ça n'est pas contre indiqué ...
    La violation d'accès semble se faire dans le module classes.pas dans des instructions en assembleur...Je me demande si cette unité n'est pas buguée...

  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
    Salut,

    Je pense surtout que la violation d'accès vient surtout que te demande la destruction depuis la fiche elle-même.

    Personnellement je demanderais à la MDIForm sur détruire la fenêtre fille en lui envoyant un message.

    Code MDIForm : 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    const
      WM_CLOSE_MDI_CHILD = WM_USER + 1;
    type
      TForm1 = class(TForm)
        OpenDialog1: TOpenDialog;
        MainMenu1: TMainMenu;
        nouvau1: TMenuItem;
        procedure nouvau1Click(Sender: TObject);
        procedure CloseActiveMDIChild(var Message: TMessage); message WM_CLOSE_MDI_CHILD;
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    uses Unit2;
     
    {$R *.dfm}
     
    procedure TForm1.nouvau1Click(Sender: TObject);
    begin
      form2:=tform2.create(nil);
    end;
     
    procedure TForm1.CloseActiveMDIChild(var Message: TMessage);
    begin
      if Assigned(ActiveMDIChild) then
      begin
        ActiveMDIChild.Close;
        ActiveMDIChild.Release;
      end;
      OpenDialog1.Execute;
    end;
     
    end.

    et dans la fiche enfant
    Code MDIChild : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TForm2.Button1Click(Sender: TObject);
    begin
      SendMessage(Form1.Handle, WM_CLOSE_MDI_CHILD, 0, 0);
    end;

    Voiloù

    @+ Claudius

  9. #9
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    non, en fait je pense que le déroulement du code de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    form1.opendialog1.execute;
    s'éffectue dans le processus de ta Form1 qui lui même s'effectue du coup dans le processus de ta Form2, et ça, c'est pas terrible étant donné que Form1 est bien crée pour l'application mais pas Form2

    Du coup le release doit un peu perdre les pédales, parce que le release demande au processus parent de détruire la fenêtre (si elle n'en a pas, c'est la cata).

    Donc au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    form2:=tform2.create(nil);
    Je tenterais plus un truc de ce genre :
    form2:=tform2.create(Application);

    En plus, si je regarde dans les options de ton projet, ta fiche Form2 est déjà créée preuve en est la présence de cette ligne dans le dpr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.CreateForm(TForm2, Form2);
    Vires cette ligne, ou (c'est KifKif), dans les options de ton projet, onglet Fiches, tu mets form2 dans la partie "fiches disponibles".

    Parce qu'en gros,ce que tu fait, c'est de créer une 2nde instance de fiche sans avoir précédemment libéré celle créée par Delphi (ça doit être ça le lézard...)

Discussions similaires

  1. Violation d'accès inexpliquée
    Par colorid dans le forum Langage
    Réponses: 0
    Dernier message: 17/12/2010, 17h16
  2. [XMLDocument] Violation d'accès
    Par xant dans le forum Composants VCL
    Réponses: 8
    Dernier message: 29/09/2004, 15h39
  3. requete / violation d'accès
    Par marie253 dans le forum Bases de données
    Réponses: 4
    Dernier message: 13/08/2004, 13h29
  4. Violation d'acces apres Execute
    Par SegmentationFault dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 10/08/2004, 16h23
  5. Violation d'accès apres Close
    Par SegmentationFault dans le forum Bases de données
    Réponses: 3
    Dernier message: 05/07/2004, 16h46

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