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 de module ntdll.dll


Sujet :

Langage Delphi

  1. #1
    Membre régulier Avatar de EssaiEncore
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Points : 74
    Points
    74
    Par défaut Erreur de module ntdll.dll
    Bonjour,

    J'ai réalisé une application interne qui fonctionne parfaitement sous environnemnt windows XP.
    Cependant je rencontre un probleme sur un poste en 2000, je recois un message d'erreur me disant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    L'instruction à "0x78465281"emploie l'adresse 
    mémoire "0x00000004".La mémoire ne peut etre "read".
    puis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Exception EAccessViolation dans le module ntdll.dll dans 00005281.
    Violation d'acces à l'adresse 78465281 dans le module 'ntdll.dll'.
    Lecture a l'adresse mémoire 00000004
    .

    J'ai donc fait plusieurs test sur des pc avec environnemnt windows 2000 et il en résult que mon appli marche sur tous ....... sauf 1

    J'ai jeté quelques coup d'oeil pour le module ntdll.dll mais j'ai rien trouvé de concluant.

    Merci d'avance.

  2. #2
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Le EAccessViolation laisse a penser que c'est un problème d'instanciation. Mais c'est étrange tout de même.

    Perso, à ta place, j'installera Delphi sur le poste ui marche pas, et je ferais du pas à pas.
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  3. #3
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut Nt 5
    Salut.

    Quelle est la version de Windows 2000 du poste sur le quel la DLL
    pose un problème ? Sp1, Sp2, Sp3 ou 4 ?

    Peut être une incompatibilité d'un pilote, ou d'une mise à jour nécessaire.


    A+
    Rien n'est moins sur que l'incertain : Pierre DAC

  4. #4
    Membre régulier Avatar de EssaiEncore
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Points : 74
    Points
    74
    Par défaut
    Merci pour vos reponses .

    La version est : Microsoft Windows 2000 5.0 (2195.Service Pack 3)

    Pour ce qui est d'installer delphi sur la machine, je suis pas chaud, c vrai que c une tres bonne idee et que cela pourrais grandement m'aidé, mais il faut que je demande l'autorisation au boss et installé tout les packages...
    donc je vais attendre un peu et encore me creuser les méninges.

  5. #5
    Membre régulier Avatar de EssaiEncore
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Points : 74
    Points
    74
    Par défaut
    Grace a des showmessage, j'ai vu que les erreurs apparaissaient pendant la création d'une de met fiches...pensez vous que l'erreur vienne d'un composant ??

    Merci

  6. #6
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut Acces d'adresse ?
    Le message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    L'instruction à "0x78465281"emploie l'adresse 
    mémoire "0x00000004".La mémoire ne peut etre "read".
    Je l'ai rencontré souvent avec des programmes commerciaux.

    De plus :
    Exception EAccessViolation dans le module ntdll.dll dans 00005281.
    Violation d'acces à l'adresse 78465281 dans le module 'ntdll.dll'.
    Lecture a l'adresse mémoire 00000004
    Selon la version du pack windows, la mémoire peut être mal gérée
    dans certains programmes. C'est la conclusion que j'en ai tiré.

    Si les machines sur lesquelles le programme ne plante pas sont en
    SP4, je te suggère de migrer le PC.

    Mais le mieux (quoi que) serait de vérifier dans la DLL si il ne
    manque pas une sécurité (libération mémoire, destruction d'objets etc...)
    .

    A+
    Rien n'est moins sur que l'incertain : Pierre DAC

  7. #7
    Membre régulier Avatar de EssaiEncore
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Points : 74
    Points
    74
    Par défaut
    Rien ni fait...j'ai installé le pack 4 sur le pc....mais rien de mieux.
    Je suis a cour d'idée....

  8. #8
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut Mémoire
    Poursuivons.

    Grace a des showmessage, j'ai vu que les erreurs apparaissaient pendant la création d'une de met fiches...pensez vous que l'erreur vienne d'un composant ??
    Cherche en premier dans le OnCreate des fiches. Si on fait un
    SetFocus sur un comosant, il y a plantage dans la plupart des cas,
    car on ne peut pas faire un SetFocus sur un composant qui n'est
    pas visible. Les comosants ne peuvent être visibles seulemnt après
    la fin de l'événement OnShow de la fiche.
    C'est une piste...

    Donc je te suggère de chercher en premier dans les événements
    OnCreate, OnShow et OnActivate.
    Peut être un composant mal géré.
    Si tu ne trouve pas, poste la procedure OnCreate de la fiche en
    question, je pourais mieux t'aider.

    A+
    Rien n'est moins sur que l'incertain : Pierre DAC

  9. #9
    Membre régulier Avatar de EssaiEncore
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Points : 74
    Points
    74
    Par défaut
    Merci de ton aide.

    Alors, mon application renvoi l'erreur avant de passer dans le create d'une de mes fiches.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        showmessage('avant stat create');         
    Application.CreateForm(TForm_Statistique, Form_Statistique);//erreur ici 
    .
    Il passe dans le showmessage, execute le create form et avant de lire la premiere ligne de mon create form (showmessage), plante.

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    procedure TForm_Statistique.FormCreate(Sender: TObject);
    begin
    showmessage('debut formcreate');
      DataModule_Base.Query_ListeBlessureSiege.SQL.Clear;
      DataModule_Base.Query_ListeBlessureSiege.SQL.Add('SELECT DISTINCT * FROM LISTE_LESIONS_SIEGE');
      DataModule_Base.Query_ListeBlessureSiege.SQL.Add('ORDER BY Siege');
      DataModule_Base.Query_ListeBlessureSiege.Open;
      DataModule_Base.Query_ListeBlessureNature.SQL.Clear;
      DataModule_Base.Query_ListeBlessureNature.SQL.Add('SELECT * FROM LISTE_LESIONS_NATURE');
      DataModule_Base.Query_ListeBlessureNature.SQL.Add('ORDER BY Nature');
      DataModule_Base.Query_ListeBlessureNature.Open;
      DataModule_Base.Query_ListeChef.SQL.Clear;
      DataModule_Base.Query_ListeChef.SQL.Add('SELECT * FROM LISTE_CHEFS');
      DataModule_Base.Query_ListeChef.SQL.Add('ORDER BY Chef');
      DataModule_Base.Query_ListeChef.Open;
      DataModule_Base.Query_ListeSecteur.SQL.Clear;
      DataModule_Base.Query_ListeSecteur.SQL.Add('SELECT * FROM LISTE_SECTEURS');
      DataModule_Base.Query_ListeSecteur.SQL.Add('ORDER BY Secteur');
      DataModule_Base.Query_ListeSecteur.Open;
      DataModule_Base.Query_ListeSoigneur.SQL.Clear;
      DataModule_Base.Query_ListeSoigneur.SQL.Add('SELECT * FROM LISTE_SOIGNEURS');
      DataModule_Base.Query_ListeSoigneur.SQL.Add('ORDER BY Secouriste');
      DataModule_Base.Query_ListeSoigneur.Open;
      showmessage('fin requete');
      if (not DirectoryExists(PATH_RAPPORT)) then
        CreateDir(PATH_RAPPORT);
      Label_FicheClick(nil);
      showmessage('debut excel');
      OleExcel := CreateOleObject('Excel.Application');
      showmessage('fin formcreate'); 
    end;
    .

    Je pense de + en + que l'erreur vient du pc et non pas du programme, car l'appli fonctionne sur toute les machines sauf une.

    J'ai suivi vos conseils : MAJ windows, Sp4...rien ni fait.

    Dur dur pour les nerfs d'etre developpeur delphi....

    A+

  10. #10
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut
    le type et la variable TForm_Statistique, Form_Statistique sont ils
    bien connus avant l'appel de CreateForm ?

    Je te suggère d'executer en mode pas-a-pas sous débbuger pour
    suivre le problème. Evidamment il faut installer Delphi sur la machine.
    mais il faut que je demande l'autorisation au boss et installé tout les packages...
    Je te rapelle que la licence de DELPHI est nominative. Rien ne
    t'empeche de l'installer sur le PC le temps de trouver le problème
    et de désinstaller ensuite.
    De toute façon au point où tu en es, tu n'a pas le choix.


    Juste une petite chose (c'est peut être le problème).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (not DirectoryExists(PATH_RAPPORT)) then
        CreateDir(PATH_RAPPORT);
    Utilise plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (not DirectoryExists(PATH_RAPPORT)) then
        ForceDirectories(PATH_RAPPORT);
    //Unite FileCtrl
    Consulte l'aide sur ForceDirectories.

    A+
    Rien n'est moins sur que l'incertain : Pierre DAC

  11. #11
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut Erreur
    le type et la variable TForm_Statistique, Form_Statistique sont ils
    bien connus avant l'appel de CreateForm ?

    Je te suggère d'executer en mode pas-a-pas sous débbuger pour
    suivre le problème. Evidamment il faut installer Delphi sur la machine.
    mais il faut que je demande l'autorisation au boss et installé tout les packages...
    Je te rapelle que la licence de DELPHI est nominative. Rien ne
    t'empeche de l'installer sur le PC le temps de trouver le problème
    et de désinstaller ensuite.
    De toute façon au point où tu en es, tu n'a pas le choix.


    Juste une petite chose (c'est peut être le problème).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (not DirectoryExists(PATH_RAPPORT)) then
        CreateDir(PATH_RAPPORT);
    Utilise plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (not DirectoryExists(PATH_RAPPORT)) then
        ForceDirectories(PATH_RAPPORT);
    //Unite FileCtrl
    Consulte l'aide sur ForceDirectories.

    A+
    Rien n'est moins sur que l'incertain : Pierre DAC

  12. #12
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 75
    Points : 100
    Points
    100
    Par défaut
    La connexion du datamodule c'est quoi?
    Est-ce que la base de données se retrouve sur un autre poste à travers un réseau?

    Si oui, essaie de mettre à jour MDAC sur l'ordi

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Salut à tous.

    1) Quelle est la version de ta ntdll.dll ?
    Elle doit être au moins supérieure ou égale à la version
    5.0.2195.4082 (Date : 07-Aug-2001)

    2) Est ce que ton appli utilise des Threads ?
    Si oui --> voir ici


    3) Est-ce que ton application utilise DirectX ? --> upgrade le PC en DirectX 9c (il doit probablement être en DirectX 8.1)

    4) Utilise tu la carte son d'une manière ou d'une autre (bref as-tu une fonctionnalité audio quelconque) ? Si oui --> utilises les API DirectSound à la place de ce que tu utilises (bonne chance)

    5) Dis moi, as-tu vérifié si la fonction DEP (Data Execution Prevention --> Prévention de l'exécution des données) de ce Windows était activée ou non ? si elle existe --> il faut la désactiver

    6)Un virus du style Sasser ou Netsky présent sur le PC (on ne sait jamais)



    Ca peut venir de tout ça...

    Maintenant coté Delphi :
    1) Utilise tu une ComboBox ?
    ça, ça plante (Crécupération d'une chaîne vide) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.Button1Click(Sender: TObject);
      var aStr : string;
      begin
        ComboBox1.Items.Add('');
        aStr := ComboBox1.Items[0];
      end;
    2) Utilises tu un fichier Ini ?
    La section dans la méthode ReadString est une chaine vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      var
        IniFile: TIniFile;
      begin
        IniFile := TIniFile.Create('C:\anyfile.ini');
        try
          IniFile.ReadString('', 'ident', 'default value');
        finally
          IniFile.Free;
        end;
      end;
    3) la propriété OldCreateOrder de toutes tes fiches est mise à True automatiquement par Delphi.

    Tous les problêmes de 1 à 3 sont présents dans Delphi 7.0 --> update vers Delphi 7.1 obligatoire !

    4) Utilises tu Visibroker ?
    Mets ta version à jour, on ne sait jamais...



    5) Conseil
    Sinon, pour vraiment tracer ton programme, dans ton .DPR, je te conseilles de mettre à true, la propriété OldCreateOrder de toutes tes fiches.

    parce que si elle est à false, le OnCreate de tes fiches n'intervient que sur la ligne (et pas avant, c'est le piège) :
    Vérifie aussi alors que ta ligne (mais je pense que tu as tout bon là) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.CreateForm(TDataModule_Base, DataModule_Base);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.CreateForm(TForm_Statistique, Form_Statistique);

    Ensuite, ton problême peut venir du code que tu as placé dans ton Data module (connexion à la base la base de données peut-être, référence à une fiche qui n'est pas encore crée, etc...)

    Ca en fait des pistes
    Bidouilleuse Delphi

  14. #14
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 75
    Points : 100
    Points
    100
    Par défaut
    Je suis aussi tombé sur ce bug là avec la version Delphi 7 et les combos box...
    Il faut installer une patch qui te rend tout ça en 7.1 si je me souviens bien et on recompile l'Application...

Discussions similaires

  1. erreur Eaccess violation dans module ntdll.dll
    Par cilies38 dans le forum Langage
    Réponses: 1
    Dernier message: 05/05/2006, 20h12
  2. ntdll.dll
    Par romstarr dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 04/10/2005, 17h33
  3. erreur du module de base de donnees
    Par rachid202446 dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/09/2005, 15h36
  4. Violation d'accès du module msado15.dll
    Par kobe dans le forum Bases de données
    Réponses: 4
    Dernier message: 19/08/2005, 10h57
  5. [Débutant][JNI]Erreur de chargement de dll
    Par Agifem dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 24/04/2003, 14h36

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