Je souhaiterais de l?aide pour les transmission de fonction [ Delphi ] - Delphi/Pascal - Programmation
Marsh Posté le 08-10-2002 à 22:39:44
Je crois que c'est simple
quand tu passe par référence (utilisation de: var a: integer) et que tu affecte une valeur à ta variable (a := 7) tu modifie aussi la valeur de la variable référencé (ici b car tu appel ta fonction avec b).
si tu définie ParDeux(a: integer) (donc sans le var) la valeur de b ne devrait pas changer (sauf si je me plante )
Test et tu verra ...
Marsh Posté le 09-10-2002 à 08:41:42
le var est util pour le passage de paramètres dont la procédures va modifier la valeur et dont tu veux récupérer la valeur après l'appel.
Il semble en fait que lorsque tu met le 'var' devant ta variable le compilo va faire passer l'adresse de ta variable (mais c'est invisible pour le développeur) donc tu modifis le contenu de la variable originale. Et lorsque tu ne mets pas le 'var', le compilo fait une 'copie' de ta variable, comme ca si tu la modifie dans ta procédure, cela n'affectera le reste de ton prog après l'appel à ta procédure.
corrigez moi si je m'a gouru.
Marsh Posté le 09-10-2002 à 09:40:02
var/const/out passe fait un passage d'adresse (plus rapide) alors que sinon il fait une copie
var -> on peut modifier la valeur
const -> on ne peut pas la modifier, donc si on ne la modifie pas il y a intérêt à indiquer const pour éviter une recopie, surtout pour les chaînes (string)
out -> on ne fait que récupérer la valeur mise dans la variable. Je sais plus exactement comment ça marche, c'est le même genre que var sauf que la fonction ne reçoit pas l'ancienne valeur de la variable
Marsh Posté le 08-10-2002 à 21:31:42
Salut a tous
Voilà je suis un peu perdu ou plus exactement je n?ai pas tous compris par rapport au procédures et fonctions sous delphi6.
Bon j?ai compris comment on fait pour définir une fonction j?ai aussi compris comment on fais pour l?appeler mais la ou j?ai un probleme c?est quand a la transmission par valeur ou par référence.
Sur mon livre il est m?est donner un explication très sucsaite que je n?arrive pas a comprendre. Celle-ci est illustre par un exemple que vois ci :
Le choix se fait dans la déclaration de la fonction réceptrice. Il suffit d?ajouter le mot réservé VAR avant le nom du paramètre, comme dans une déclaration de variable globale . voici comment modifier notre projet pour une transmission par référence :
Function ParDeux(var a: Integer) : Integer ;
Begin
A :=7 ;
ParDeux := a * 2 ;
End ;
Supposez l?appel suivant à notre nouvelle fonction :
??..
B := 2;
A := ParDeux(b);
(* combien vaut b maintenant ? 2 ,7 ou 14 ? *)
??..
la réponse est a vaut 14 et b vaut 7
je pense que pour vous tous ces fonctions sont déjà bien connus de vous mais pour moi non
si vous pouviez m?aider cela serais sympa
et dite moi aussi si on a souvent besoin de ce type de transmission
il y a aussi d?autre type je crois eu nom de transmission de plusieurs paramètre
merci et a bientôt
gab
---------------