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 :

Soucis Violation d'Acces


Sujet :

Langage Delphi

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2010
    Messages : 270
    Points : 391
    Points
    391
    Par défaut Soucis Violation d'Acces
    Bonjour à tous,

    Dans une application Delphi, je me retrouve avec une Acces Violation, pas cool...Lorsque je quitte le mode pas à pas, l'erreur se situe sur une fonction, unu simple get, crée de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function get : string
    begin
    result := self.reference;
    end;
    Avez-vous une idée du problème?

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 289
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 289
    Points : 1 940
    Points
    1 940
    Par défaut
    ce code ne peut pas fonctionner, et ne peut pas compiler.

    Montres-nous le code original, ou vérifie que self ne soit pas à nil ou pointe sur un objet valide.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2022

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2010
    Messages : 270
    Points : 391
    Points
    391
    Par défaut
    Alors ce code compile, c'est lors d'une éxécution pas à pas que je me suis rendu compte que cette erreur apparraissait. La ligne qui déclenche cette exception n'est autre qu'un simple test entre deux variables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    if ((e.getNom) = (c.getReference)) then ...

  4. #4
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 289
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 289
    Points : 1 940
    Points
    1 940
    Par défaut
    Si le code compile c'est que la syntaxe est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function TMonObjet.get : string
    begin
    result := self.reference;
    end;
    Normalement, une violation d'accès sur une méthode de ce genre, est que soit l'objet est à nil soit il a été libéré.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2022

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2010
    Messages : 270
    Points : 391
    Points
    391
    Par défaut
    Oui le code complie normalement et la fonction est bien de ce type la!! Donc c'est soit un soucis de libération soit un problème de pointeur dans le vide!!??

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2010
    Messages : 270
    Points : 391
    Points
    391
    Par défaut
    Bon alors la violation d'acces s'est déplacé sur un objet.free, je ne comprends vraiment pas!! L'objet a du être deja libéré non? ou alors il ne pointe sur rien en mémoire...

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 534
    Points : 25 082
    Points
    25 082
    Par défaut
    Tu as bien fait un Create de e et de c ?
    en tout cas, e et c, c'est des noms bien choisis pour des objets c'est clair et maintenable

    tu utilises des fonctions get sans passer par property ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #8
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2010
    Messages : 270
    Points : 391
    Points
    391
    Par défaut
    Oui oui mes objets sont bien créés, je fais appel à des constructeurs!!
    Le problème c'est qu'en fonction des lignes que je rajoute, la violation d'accès se déplace, se met sur une méthode, puis sur l'autre, je dois avoir une erreur importante quelque part!!

    En ce qui concerne les noms, je les ai simplifié pour le forum, ils ne s'appellent pas réellement comme ca!!

  9. #9
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Enfin bon, avec le peu de code que tu nous mets ça risque pas d'être facile de pouvoir t'aider.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  10. #10
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2010
    Messages : 270
    Points : 391
    Points
    391
    Par défaut
    Merci de vous être penchés sur mon problème, j'ai réussi à le résoudre finalement, un problème de pointeur me semble!!

    J'ai juste une question, si je veux changer deux boucles while en repeat until, y-a-t-il autant de repetat until que de while?

    2 while imbriqués = 2 repeat until imbriqués?

  11. #11
    Expert éminent sénior
    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 : 61
    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
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par titou31000 Voir le message
    2 while imbriqués = 2 repeat until imbriqués?
    Oui tu auras le même nombre d'itérations.

    A noter tout de même la différence entre un Repeat et un While.
    Lors d'un Repeat le corps de la 'boucle' sera exécuté au minimum une fois, contrairement au While qui ne sera pas exécuté si la condition d'entrée n'est pas respectée.

    @+ Claudius.

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

Discussions similaires

  1. ReportPrinterDialog (QR2) : violation d'accès..
    Par Harry dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/12/2004, 14h04
  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