Probleme quand je creer ma procedure

Résolu
damomospike Messages postés 25 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 19 janvier 2005 - 19 janv. 2005 à 21:19
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 - 19 janv. 2005 à 22:11
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

cs_sim51 Messages postés 240 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 31 décembre 2006 2
19 janv. 2005 à 22:09
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 !!!
3
cs_sim51 Messages postés 240 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 31 décembre 2006 2
19 janv. 2005 à 22:07
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 !!!
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
19 janv. 2005 à 22:11
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+
0
Rejoignez-nous