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

C Discussion :

Problème d'Access Violation avec lfind


Sujet :

C

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Problème d'Access Violation avec lfind
    Bonjour tout le monde,

    Je suis en train de réviser pour mon examen de C pour la semaine prochaine.

    Je suis sur cette ligne ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TVaisseau* VaisseauTrouve = (TVaisseau*)_lfind(&VaisseauRecherche,Tab.Tableau,(unsigned int*)&(Tab.Nombre),sizeof(TVaisseau),Vaisseau_Comparer);
    Elle me pose problème car elle ne passe pas, j'obtiens ce message d'erreur :

    Unhandled Exception in Orion.exe oxc..... Access Violation
    Voici l'entierté de la fonction plus la fonction appelée.

    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
    long TabVaisseaux_Rechercher(const TTabVaisseaux& Tab, const char* Nom)
    {
     
    	if (Tab.Nombre == 0) return -1;
    	TVaisseau	VaisseauRecherche;
    	VaisseauRecherche.Nom = (char*)Nom;
    	TVaisseau* VaisseauTrouve = (TVaisseau*)_lfind(&VaisseauRecherche,Tab.Tableau,(unsigned int*)&(Tab.Nombre),sizeof(TVaisseau),Vaisseau_Comparer);
    	if (VaisseauTrouve == NULL) return -1;
    	return VaisseauTrouve - Tab.Tableau;
     
     
    	return -1;
    }
     
    int Vaisseau_Comparer(const void* p1, const void* p2)
    {
    	const TVaisseau* e1 = (const TVaisseau*)p1;
    	const TVaisseau* e2 = (const TVaisseau*)p2;
    	return strcmp(e1->Nom,e2->Nom);
    }
    Je présûme que j'essaie d'écrire dans une zone mémoire protégée mais comment résoudre ce problème ?

    Si vous avez besoin de plus de code, n'hésitez pas.

    Merci d'avance pour votre aide.

    beegees

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    C'est du C++.

    Et du mauvais C++ avec ça, vu le nombre de casts C-Style sur une seule ligne...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    ok merci pour l'information.

    beegees

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    De plus, tu n'as pas listé les structures TVaisseau et TTabVaisseaux, donc je ne peux pas vraiment aider...

    Et aussi, la version Microsoft de lfind() semble bien obsolète, vu qu'elle prend des unsigned int en paramètre...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    De plus, tu n'as pas listé les structures TVaisseau et TTabVaisseaux, donc je ne peux pas vraiment aider...
    Bonjour,

    Je viens de trouver la solution à mon problème qui se trouvait au niveau de la fonction de comparaison.

    Merci pour ton aide.

    beegees

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

Discussions similaires

  1. [AC-2007] Problème lenteur ACCESS 2007 avec tables Excel liées
    Par damsmut dans le forum Modélisation
    Réponses: 4
    Dernier message: 14/10/2009, 09h34
  2. [Lazarus] [0.9.27] Erreur access violation avec TCalendar
    Par ovni76 dans le forum Lazarus
    Réponses: 5
    Dernier message: 22/07/2009, 12h17
  3. Réponses: 2
    Dernier message: 17/12/2008, 22h30
  4. [Visual C++] Problème ADO Access violation
    Par irnbru dans le forum MFC
    Réponses: 2
    Dernier message: 24/10/2005, 11h46
  5. Access violation avec fseek
    Par baleine dans le forum C
    Réponses: 7
    Dernier message: 18/03/2005, 16h41

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