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 :

Petite question pointeurs Delphi


Sujet :

Langage Delphi

  1. #1
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut Petite question pointeurs Delphi
    bonjour,

    j'ai déclaré un pointeur vers un type d'objet dans une form, puis je le fais pointer sur l'objet qui m'interesse.

    Par ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ptrToto : ^TTypeToto;
    ...
    ptrToto := @unToto;
    showMEssage('Toto préfère le livre : ' + ptrToto.getFilmName);
    Tout fonctionne ensuite très bien.

    Or en lisant d'autre code, j'ai l'impression que je m'embête pour rien, et que si je déclarais ma variable sans expliciter le fait qu'elle est de type pointeur, le résultat serait le même, avec donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Toto : TTypeToto;
    ...
    Toto := unToto;
    showMEssage('Toto préfère le livre : ' + ptrToto.getFilmName);
    Il me semble que c'est exactement pareil au final... d'où ma question : à quoi sert l'opérateur Delphi ^ qui permet de typer en tant que pointeur, alors qu'apparemment c'est déjà le cas sans cet opérateur... ?

    Initialement, je voulais un pointeur afin de ne pas avoir une partie de mémoire supplémentaire allouée, correspondant à la place mémoire d'un TTypeToto, mais juste la place pour stocker un pointeur...

    Merci.

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    les "class" Delphi sont implicitement des pointeurs.

    les pointeurs existaient avant les "class", la première implémentation objet dans le Pascal de Borland se faisait avec le mot clé "object" qui est alors statique comme un "record".

    Delphi a rendu l'opérateur "^" optionnel sur les pointeurs (et non les classes sur lesquelles il n'est pas accepté), ainsi "p^.champ" et "p.champ" sont équivalents, tandis que p et p^ restent distincts évidemment...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    les "class" Delphi sont implicitement des pointeurs.

    les pointeurs existaient avant les "class", la première implémentation objet dans le Pascal de Borland se faisait avec le mot clé "object" qui est alors statique comme un "record".

    Delphi a rendu l'opérateur "^" optionnel sur les pointeurs (et non les classes sur lesquelles il n'est pas accepté), ainsi "p^.champ" et "p.champ" sont équivalents, tandis que p et p^ restent distincts évidemment...
    Salut Paul,

    je ne comprends pas très bien ta réponse... du coup, voyant que tu as écrit <<< ainsi "p^.champ" et "p.champ" sont équivalents >>>, j'ai modifié le post initial afin que tu puisses voir comment j'utilise ensuite les deux type de variable possible (de la même façon en fait)... utiliserais-je mal la version pointeur ?

  4. #4
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Oui comme il a dit, un type class est déjà un pointeur. Si tu fais SizeOf(unToto) tu auras toujours 4 (la taille d'un pointeur).

    Si tu définis les type ^TTypeToto, en quelque sorte tu définis un pointeur sur un pointeur.

    Sauf à savoir ce qu'on fait, on n'a jamais besoin de déclarer un pointeur sur un type classe.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  5. #5
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par sjrd Voir le message
    Oui comme il a dit, un type class est déjà un pointeur. Si tu fais SizeOf(unToto) tu auras toujours 4 (la taille d'un pointeur).

    Si tu définis les type ^TTypeToto, en quelque sorte tu définis un pointeur sur un pointeur.

    Sauf à savoir ce qu'on fait, on n'a jamais besoin de déclarer un pointeur sur un type classe.
    OK, Merci.

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 25/10/2009, 22h02
  2. Petite question codage Delphi
    Par Oxygn44 dans le forum Langage
    Réponses: 3
    Dernier message: 14/11/2008, 10h38
  3. pointeur petit question
    Par damien77 dans le forum Débuter
    Réponses: 9
    Dernier message: 29/09/2007, 21h28
  4. Réponses: 2
    Dernier message: 11/02/2007, 18h15
  5. une petite question sur les pointeurs
    Par guy777 dans le forum C
    Réponses: 4
    Dernier message: 06/10/2006, 17h44

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