Probleme quand je creer ma procedure

Résolu
Signaler
Messages postés
25
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
19 janvier 2005
-
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
-
bonjour a tous!

voila je voulais apprendre à creer ma propre procedure, en cherchant j'ai a peut prés trouvé se qu'il falait faire mais y me manque quelque chose puisque mon code plante!
le voici:

unit Unit1;


interface


uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;


type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Déclarations privées }
procedure cucou(var nbr1: integer ; nbr2: integer ; result: integer);
public
{ Déclarations publiques }
end;


var
Form1: TForm1;
nbr : integer;


implementation


{$R *.dfm}
procedure cucou(var nbr1: integer ; nbr2: integer ; result: integer);
begin
result := nbr1*nbr2;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
cucou(3,4,nbr);
showmessage(inttostr(nbr));
end;


end.

quand je lance le code, je eçois l'erreur: [Erreur] Unit1.pas(35): Les types des paramètres VAR originaux et formels doivent être identiques.

je ne vois pas ce qu'il faut faire.
je vous remercie de vos réponse

3 réponses

Messages postés
240
Date d'inscription
dimanche 31 octobre 2004
Statut
Membre
Dernière intervention
31 décembre 2006
2
Heu j'ai oublié aussi de te dire qu'il fallait aussi écrire quand tu
implémente ta procédure d'écrire Tform1.cucou(nbr1, nbr2: integer ; var
result: integer);

begin

result := nbr1*nbr2;

end;

En effet tu as déclaré ta procédure en privé ( si tu l'avais mise en public tu n'aurais pas eu ce prob )

N'oubliez pas de cliquer sur réponse acceptée si la réponse vous convient !!!
Messages postés
240
Date d'inscription
dimanche 31 octobre 2004
Statut
Membre
Dernière intervention
31 décembre 2006
2
C'est normal, tu utilise mal le mot var dans les procédures. En effet
tu dois l'utiliser quand tu change la valeur de la variable dans ta
procédure. Or tu ne change pas tes Nb1 et Nb2 tandis que tu change ton
result.

Donc au lieu de procedure cucou(var nbr1: integer ; nbr2: integer ; result: integer) tu dois mettre
procedure cucou( nbr1: integer ; nbr2: integer ; var result: integer)

( tu peux même écrire
procedure cucou( nbr1,nbr2: integer ;var result: integer))

Tu avais une erreur car puisque nbr2
était déclaré comme étant une variable, quand tu appelais ta procédure
cucou(3,4,nbr), 3 et 4 son des integers et pas des variables !!


Je te conseil de revoir tes cours de pascal
ou d'acheter un livre sur le pascal, pour apprendre les bases ( il y a
une section livre sur le site ).

Voilà, bon courage et bonne prog !!

N'oubliez pas de cliquer sur réponse acceptée si la réponse vous convient !!!
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
hello,



procedure cucou(nbr1, nbr2: integer;var result: integer);

begin

result := nbr1 * nbr2;

end;



ou



function cucou(nbr1, nbr2: integer;): Integer;

begin

result := nbr1 * nbr2;

end;



à utiliser comme ceci :



nbr := cucou(3,4);



toi c'est ton VAR qui est mal placé, et comme tu vois tu peux faire "a,
z, e, r, t, y: integer" au lieu de "a: integer, z: integer, e:
integer..."

a+