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 :

Problème de construction d'une classe


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 14
    Points : 19
    Points
    19
    Par défaut Problème de construction d'une classe
    Salut à tous, je débute en Delphi et j'ai déjà un problème :

    Dans une classe A, j'ai créé un constructeur (d'abord doit-il forcément s'appeler Create ou non?). J'ai testé ce constructeur dans cette même classe, il marche.

    J'ai créé une 2ème classe B, dans laquelle je veux créer des objets de classe A, donc en utilisant mon constructeur de la classe A. Et là ça me met "violation access", j'ai sûrement oublié quelque chose...

    Voici ce que j'ai fait dans ma classe B :

    - j'ajoute dans uses le nom du .dcu de ma classe A
    - j'ajoute dans var (avant l'implémentation) une ligne du style :
    o : TClasseA ;

    - j'appelle mon constructeur dans une procédure TForm1.Panel1Click (pour créer mon objet lorsque je clique sur mon panel) avec une ligne comme :
    o.Create( des arguments );


    Voilà ce que j'ai ajouté à ma classe B, merci d'avance si vous savez ce que j'ai fait de mal.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    o.Create( des arguments );
    Mauvais. C'est :

    (cf. doc de Delphi).
    "It's more fun to compute !"

  3. #3
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 556
    Points : 3 937
    Points
    3 937
    Par défaut
    Salut

    Citation Envoyé par 'AraBorLeg
    Dans une classe A, j'ai créé un constructeur (d'abord doit-il forcément s'appeler Create ou non?). J'ai testé ce constructeur dans cette même classe, il marche.
    Create n'est pas un nom obligatoire pour un constructeur, c'est une tradition bien ancrée, qu'il vaut mieux respecter car c'est devenu une norme.

    Citation Envoyé par 'AraBorLeg
    J'ai créé une 2ème classe B, dans laquelle je veux créer des objets de classe A, donc en utilisant mon constructeur de la classe A. Et là ça me met "violation access", j'ai sûrement oublié quelque chose...

    Voici ce que j'ai fait dans ma classe B :

    - j'ajoute dans uses le nom du .dcu de ma classe A
    - j'ajoute dans var (avant l'implémentation) une ligne du style :
    o : TClasseA ;

    - j'appelle mon constructeur dans une procédure TForm1.Panel1Click (pour créer mon objet lorsque je clique sur mon panel) avec une ligne comme :
    o.Create( des arguments );
    Erreur classique du débutant, il faut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      O := TclassA.Create( des arguments);
    et non pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      o.Create( des arguments );
    Cette dernière notation est valide mais se contente d'exécuter le code du constructeur sur l'objet préalablement instancié. La première notation instancie l'objet puis appelle le constructeur. Ceci est une particularité du constructeur qui est à la fois méthode d'objet et méthode de classe.
    Ce qui explique la violation d'accès que tu nous relates.

    Citation Envoyé par 'AraBorLeg
    Voilà ce que j'ai ajouté à ma classe B, merci d'avance si vous savez ce que j'ai fait de mal.
    Y a pas de mal.

    cdlt

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

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

Discussions similaires

  1. Problème de compréhension d'une classe
    Par goldorax113 dans le forum Langage
    Réponses: 5
    Dernier message: 25/10/2006, 22h50
  2. Réponses: 8
    Dernier message: 16/10/2006, 12h28
  3. problème d'accès dans une classe dérivée!
    Par chrono23 dans le forum C++
    Réponses: 47
    Dernier message: 10/10/2006, 11h22
  4. construction d'une classe
    Par r0d dans le forum C++
    Réponses: 10
    Dernier message: 16/09/2004, 17h35
  5. Réponses: 12
    Dernier message: 01/07/2004, 11h03

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