[ Delphi ] Je souhaiterais de l?aide pour les transmission de fonction

Je souhaiterais de l?aide pour les transmission de fonction [ Delphi ] - Delphi/Pascal - Programmation

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  :jap:  :jap:  
 
gab
 


---------------

Reply

Marsh Posté le 08-10-2002 à 21:31:42   

Reply

Marsh Posté le 08-10-2002 à 22:39:44    

Je crois que c'est simple  :sol:  
 
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  :pt1cable: )
 
Test et tu verra ...
 

Reply

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.  :sweat:


Message édité par Olyv le 09-10-2002 à 08:41:52

---------------
La mort... c'est un peu comme la connerie. Le mort, lui, il ne sait pas qu'il est mort... ce sont les autres qui sont tristes. Le con, c'est pareil... (Le Chat)
Reply

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


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed