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

 Delphi Discussion :

Utilisation des pointeurs


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Points : 8
    Points
    8
    Par défaut Utilisation des pointeurs
    Bonjour, je suis une débutante en Delphi youpi..
    J'aimerai avoir plus d'information sur les pointeurs.. Donc si j'ai bien compris, ça sert à gagner de la mémoire vive...
    -Il y a t il d'autre utilité?
    -quand doit-on les utiliser?
    -pour quel type?
    -Peut on utiliser que ça?
    -Si on les déclare, vaut il mieux les déclarer en local ou global?
    -Est ce qu'on les traite comme des variables basiques? (je veux dire, pour les fonction)
    -Si vous avez d'autres remarques...
    Merci!!!
    Maf

  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 445
    Points
    28 445
    Par défaut
    welcome

    ben non c'est pas ça

    je t'invite à lire ceci
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    ça sert à gagner de la mémoire vive
    Non

    -quand doit-on les utiliser?
    Ben a chaque fois que tu en a l'utilité
    A chaque fois que tu utilise des objets, tu utilise des pointeurs sans le savoir

    -Si on les déclare, vaut il mieux les déclarer en local ou global?
    Tous dépend de l'utilisation du pointeur si tu en a besoin en local ou en global dans ton programme...
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Points : 8
    Points
    8
    Par défaut
    Ben un pointeur= adresse de la variable que le pointeur pointe= gain de place... Si j'ai bien compris
    sinon, je vois pas a quoi ca sert en plus d'une variable????

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Points : 8
    Points
    8
    Par défaut
    Bon... Sinon, je suis en train de faire une sorte de mémo pour un pote.. .ca m'entraine (ça fait 2 semaines que j'ai commencé, mais j'avais quelques notion de la fac)
    Le principe c'est donc de faire un mémo avec titre+ date. Comme je suis encore une niewbie, j'utilise un fichier texte qui, les 4 premieres lignes affiche le titre et date dans un TEditbox, et puis le reste dans un tMemo. Ensuite, il y a une option pour enregistrer et une pour ouvrir. Lors de l'enregistrement, un fichier "data" est édité, avec les titre+ date. Celui-ci s'affiche dans une Tlistbox pour pouvoir sélectionner le mémo voulut.
    Je me demandait alors, est-ce qu'il me fallait utiliser des pointeurs . A vrai dire, j'en utilise qu'un, juste pour le fun (c'est pour m'entrainer..) mais je me demander, si par exemple, toutes mes variables temporelles pouvaient être des pointeurs (notament, si je peux, les TextFile..).. enfin, voulais en savoir plus sur ces fameux pointeurs, et à partir de quand ils étaient vraiment utiles...Voilou
    a + maf

  6. #6
    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 445
    Points
    28 445
    Par défaut
    Citation Envoyé par maf.mouton Voir le message
    Ben un pointeur= adresse de la variable que le pointeur pointe= gain de place... Si j'ai bien compris
    sinon, je vois pas a quoi ca sert en plus d'une variable????
    non, et tu n'as pas du lire la page que je t'ai indiquée.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Points : 8
    Points
    8
    Par défaut
    Si j'ai lu!
    ""Le programme repère la variable par son adresse, c'est à dire l'index du tableau à partir duquel est stocké la variable; un seul index suffit car les octets sont utilisés de façon linéaire; c'est à dire qu'un WORD occupe les octets "index" et "index+1".

    Cet "index" est connu en pascal grâce à la fonction addr; par exemple addr(i) renvoie un entier long (integer) qui correspond à l'adresse de la variable "i" en mémoire; on peut également utiliser la notation @i.

    Disons le tout de suite, c'est cette "adresse" qu'on appel "pointeur"...et alors, à quoi ça sert ?

    Comme je viens de l'expliquer, l'ordinateur l'utilise en interne, il ne manipule pas les noms de variables mais uniquement leurs adresses...mais prenons un exemple de code qui exploite des pointeurs de façon transparente :"""

    ensuite il y a des exemples mais ca ne dit rien sur le à quoi ca sert, qu'est ce que ca ajoute de plus??!!! (oui on peut manipuler les adresses ok, alors quand doit on les manipuler?? bon, peut etre qu'il faut que je lise le chapitre sur les piles? mais bon, je demandait en deux mots à quoi ca sert, et je pense quand meme et toujours que ca sert a gagner de la place... surtout quand à l'époque, on avait de la RAM à 500ko...)

    et donc l'exmple dans ce tuto qui est le plus pertinant pour l'auteru c'est pour les type record. Comme dans le tuto que j'ai lu. Alors pourquoi est-ce plus pertinant?

    en plus c'est le meme auteur qui m'envois à sa page...sisi j'ai lu, mais je ne comprend pas plus, et ce que je lis, je l'ai déjà lu ailleurs...

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Points : 8
    Points
    8
    Par défaut
    A moins que cela serve lorsque l'on veut traiter des données les une à coté des autre dans la mémoire.. ?mais dites le moi!!

  9. #9
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    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 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Quelle formation as-tu? Et sur quel langage?

    (C'est pour essayer de faire des rapprochements qui soient explicites).
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Points : 8
    Points
    8
    Par défaut
    J'ai fait des maths. On a vu du C/C++ mais j'étais out tellement ça allait lentement (premier cours sur 'qu'est ce que c'est qu'un ordinateur :S) en plus, en TP, le chargé de TP ne nous aidait pas, j'étais avec un étranger avec qui la communication ne passait pas, donc, au bout de 4 TP on a ramé et on n'a jamais fini le projet (qui était de faire un jeu de Dame à la c**, j'aimais pas du tout avec ce contexte). Sinon, on a fait des petits calculs (genre +/*- de polynomes sur un corps ) et ça ça me bottait plus! mais bon disons que je suis une nulle. Pour dire la lenteur des cours, en deux ans, on arrivait aux piles (sans savoir à quoi ça servait bien sûr...) notre prof était pas trés bien.. trop lente par rapport à ce qu'on devait faire.. il aurait mieux vallut qu'en TP on fasse des petits projets en 1 ou 2 TP de 3h.. mais non, fallait qu'on fasse des jeux de Dames (la seconde année) et des TD la première année... pff
    Niveau pc, je me débrouille un peu pour la maintenance , je sais monter un pc , toujours flirté avec linux, meme si je sais pas trop l'exploiter (mais bon, s'il n'y a pas de chose à faire, on n'a pas l'idée de la faire...), connait un peu le monde de l'info (mais c'est tellement large..)
    en tout cas, bon ,j 'avance sur mon petit programme, et je pense pas qu'il y ait besoin de pointeur...

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Points : 8
    Points
    8
    Par défaut
    mais bon, pas besoin de faire le rapprochement.. j'ai juste l'impression que les pointeurs sont des outils trés performants mais pas pour faire des petits programmes idiots (genre trier une liste, ou faire un blocnote..) et j'aimerai en savoir un peu plus.. genre vous, quand est-ce que vous utilisez un pointeur? et pourquoi? des fois ça à l'air d'être aussi une habitude? mais il parrait qu'il faut la prendre etc...

  12. #12
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    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 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Les pointeurs sont utilisés partout, c'est juste que le mécanisme est plus souvent camouflé qu'avant.

    Dans la plupart des cas, tu peux te passer de recourir aux syntaxes spécifiques aux pointeurs.

    NB: c'est assez dur à expliquer (en tout cas pour moi), mais si tu as fait du c/c++, tu as sûrement déjà vu les pointeurs, char *, etc.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  13. #13
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Ha les pointeurs !

    C'est toujours un sujet difficile à comprendre pour les débutants.

    Ben un pointeur= adresse de la variable que le pointeur pointe= gain de place...
    En gros, un pointeur est une variable qui contient l'adresse d'une autre variable. Cette dernière ne sera pas déclarée à la compilation, mais sera créée ensuite dynamiquement pendant l'exécution du code.

    Donc non, tu ne gagnes pas de place en mémoire car si tu utilises un pointeur, il te faut une variable qui stocke la valeur que tu veux mémoriser, puis une autre (le pointeur) qui te dit ou se trouve la variable que tu utilises.

    Tu ne gagne pas en place mémoire, c'est juste que l'accès à la première variable est indirect.

    Imaginons que tu écrives un Notepad : Tu veux manipuler du texte qui se compose en fait d'une liste de lignes. Tu ne connais pas le nombre de lignes à priori, tu ne connais pas la longueur des lignes de ton texte... donc tu ne peux pas d'écrire la structure de ton texte de façon statique au moment de la compilation du programme.
    A la place, tu va prévoir de travailler avec une liste de lignes. Cette liste pourra être un tableau. Les éléments du tableau seront des pointeurs qui désigneront le début de chaque ligne de texte...
    De même tu ne connais pas le nombre de lignes, donc tu ne connais pas la taille du tableau au moment de la compile.
    Donc au moment de la compilation, tu ne peux pas prédéterminer l'adresse mémoire à laquelle il faudra stocker le tableau. Pour résoudre ce problème, tu utiliseras un tableau dynamique, qui sera en fait un pointeur vers une zone mémoire suffisamment grande pour stocker tous les éléments...

    Dans un programme digne de ce nom, les pointeurs sont partous. Mais les langages actuels les gère plus ou moin automatiquement et implicitement.

    Le sujet est vaste. D'une façon générale, tout ce que tu ne peux pas définir de façon statique avant la compilation devra passer par des pointeurs...

  14. #14
    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 !
    Saviez-vous qu'il y a un petit quelque chose là dessus dans la FAQ ?

    Quid des pointeurs ?
    Bidouilleuse Delphi

  15. #15
    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 445
    Points
    28 445
    Par défaut
    Citation Envoyé par maf.mouton Voir le message
    A moins que cela serve lorsque l'on veut traiter des données les une à coté des autre dans la mémoire.. ?mais dites le moi!!
    oui, par exemple. mais je pense que les pointeurs, c'est comme les objets, ça répond à un besoin qui devient évident quand ce besoin se présente

    EDIT: je précise ma pensée

    à quoi sert à marteau ? à rien quand on est face à un clavier
    par contre c'est assez pratique pour enfoncer un clou, mais ça peut aussi service à casser une noix quand on a pas de casse-noix sous la main, voir à sortir une porte de ses gonds...en fait c'est un outils, il a été conçu pour un certain usage mais finalement on va pouvoir s'en servir pour différentes choses. Les pointeurs c'est pareil, au départ c'est l'adresse d'une variable...c'est tout, libre au programmeur d'en faire ce qu'il veux
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  16. #16
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    à quoi sert à marteau ? à rien quand on est face à un clavier
    Quoique, certains jours...

    Sinon, un point qui n'a pas été abordé, c'est que si les pointeurs ne servent effectivement pas à gagner de la mémoire (au contraire), il permettent de gagner considérablement en temps de traitement : il est par exemple plus rapide de transmettre en paramètre un pointeur qui tient sur quatre ou huit octets, que la variable elle-même si cette dernière occupe plus que la taille d'un pointeur (mais l'usage des mots-clefs var et const génère automatiquement un passage de paramètre par pointeur quand c'est utile, sans qu'on soit obligé de le définir explicitement).

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Points : 8
    Points
    8
    Par défaut
    oki, je comprend mieux maintenant Merci beaucoup pour ce petit débat!! je vais regarder sur la FAQ.. pour le coup du marteau, c'est clair que tant qu'on n'a pas besoin d'un objet, on ne sait pas quoi en faire... ca me rappelle moi quand j'avais 5 ou 6 ans, j'était faciné par les coupe ongle (ca semble idiot lol) mais je savais vraiment pas à quoi ça servait, pourtant, j'en voyait souvent (veux dire dans la salle de bain ou su rle bureau de mon pere qui est guitariste.. etc..) bon.. ll, le truc qui m'intriguait c'est la forme "complexe".. voila lol, la petite histoire du coupeur d'ongle qui intrigue .. puis un jour, j'ai eu des ongles trés trés long, il a fallut me les couper.. enfin, bon, on s'en fou..
    Merci!

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

Discussions similaires

  1. utilisation des pointeurs de type "far"
    Par Flow_75 dans le forum C++
    Réponses: 0
    Dernier message: 25/03/2008, 07h35
  2. utilisation des pointeurs
    Par OutOfRange dans le forum Delphi
    Réponses: 5
    Dernier message: 27/12/2006, 11h27
  3. utilisation des pointeur
    Par nixonne dans le forum Langage
    Réponses: 2
    Dernier message: 25/08/2006, 09h19
  4. Optimiser l'utilisation des pointeurs
    Par progfou dans le forum C
    Réponses: 65
    Dernier message: 10/03/2006, 11h49
  5. Réponses: 6
    Dernier message: 21/02/2006, 16h47

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