Appel de fonction

Clercq Messages postés 19 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 14 juin 2006 - 30 mai 2006 à 11:42
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 - 30 mai 2006 à 14:24
Voici mon probleme, lors de la compilation de mon code j'ai l'erreur suivante :


"Forme d'appel de méthode autorisée seulement pour méthodes de classe"


la fonction appelé n'est pas dans la meme forme que la fonction appellante.


La fonction appelé est faite comme suit (afin d'appeler l'autre fonction) :


uses

  [...]progEnr; // declaration de l'autre forme (enfin je sais pas si on appel ça comme ça :p)


type

    TForm1 = class(TForm)

    [...]

    procedure EnrVar1Click(Sender: TObject); //declaration de ma procedure qui va appeler la fonction

    

procedure TForm1.EnrVar1Click(Sender: TObject);

begin

         [...]

          listVarEnr := TForm4.PassageDeParam; // appel de la fonction

    [...]

     end;


Form appelée :


type

  TForm4 = class(TForm)

    [...]

    function PassageDeParam: TStringList; //declaration de ma fonction


  private

    { Déclarations privées }

  public

    { Déclarations publiques }

  end;


var

  Form4 : TForm4;

  heure : string;

  minute : string;

  seconde : string;

  duree : string;

  listVarEnr : TStringList;


function TForm4.PassageDeParam: TStringList;

begin

     listVarEnr.Add(heure);

     listVarEnr.Add(minute);

     listVarEnr.Add(seconde);

     listVarEnr.Add(duree);

     result := listVarEnr;

end;
 et voila, si vous avez une idée, et bah merci d'avance de m'en faire part :D

merci a tous :).

1 réponse

ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
30 mai 2006 à 14:24
Salut Clercq,

Pas mal d'erreurs dans ton code !

Uses ProgEnr : si tu as renommé l'unité associée à TForm4 (par défaut = unit4) en "progenr", ce n'est pas dans le uses de la partie interface qu'il faut y référer, mais au début de la partie implementation. D'autre part, à la compilation, Delphi te propose de lui-même de référencer une unité associée à une Forme dès qu'il voit un appel à celle-ci. 

L'appel à la fonction PassageDeParam doit se faire comme ceci :
     ListVarEnr := Form4.PassageDeParam; // et pas Tform4

Mais ici, il y a un autre problème : ListVarEnr = variable générale déclarée dans unité de Form4. Donc tu ne dois pas employer de fonction pour récupérer sa valeur.

procedure  TForm4.PassageDeParam;
begin
     listVarEnr.Add(heure);
     listVarEnr.Add(minute);
     listVarEnr.Add(seconde);
     listVarEnr.Add(duree);
end;

donc ça donne :
procedure TForm1.EnrVar1Click(Sender: TObject);
begin
         [...]
         Form4.PassageDeParam; // appel de la procedure
         edit1.text: = ListVarEnr[1];   // un simple exemple
 end;

Dernière chose : quand tu crées une fonction ou procedure , il faut la déclarer dans la partie private (ou public) de TForm.  

A +
Thierry 
0
Rejoignez-nous