Se connecter avec
S'enregistrer | Connectez-vous

[Delphi] Forme d'appel de méthode réservé aux méthodes de classe

Dernière réponse : dans Programmation

Bonsoir,
quand je compile mon code, j'obtiens l'erreur suivante : "Forme d'appel de méthode autorisée seulement pour les méthodes de classes"
à cette ligne :
  1. procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  2. Shift: TShiftState);
  3. begin
  4. gauche:= '0';
  5. droite:= '0';
  6. haut := '0';
  7. bas := '0';
  8. //différents actions sur gauche, droite, haut et bas ...
  9. [b]Client.envoyerTouches(haut,bas,gauche,droite);[/b]
  10. end;


Cette fonction me sert à envoyer une chaîne à partir d'un client vers un serveur en utilisant Winsocks:
  1. procedure Client.envoyerTouches(haut,bas,gauche,droite:string);
  2. begin
  3. socket.sendStr('007 ' + haut + bas + gauche + droite +'#13#10');
  4. end;


et voici mes déclarations :
  1. type
  2. TForm1 = class(TForm)
  3. Label1: TLabel;
  4. Fleche_Haut: TImage;
  5. Fleche_Gauche: TImage;
  6. Fleche_Droite: TImage;
  7. Fleche_Bas: TImage;
  8. affichage: TLabel;
  9. procedure FormKeyDown(Sender: TObject; var Key: Word;
  10. Shift: TShiftState);
  11. procedure FormKeyUp(Sender: TObject; var Key: Word;
  12. Shift: TShiftState);
  13. private
  14. { Déclarations privées }
  15. public
  16. { Déclarations publiques }
  17. end;
  18.  
  19. Client = class
  20. constructor creer(
  21. nom:String;
  22. serveur:String;
  23. port:String);
  24. destructor detruire();
  25. private
  26. socket:TWSocket;
  27. port:String;
  28. procedure onDnsLookupDone(sender:TObject; error:Word);
  29. procedure onSessionConnected(sender:TObject; error:Word);
  30. procedure onSessionClosed(sender:TObject; error:Word);
  31. public
  32. connecte:Boolean;
  33. [b]procedure envoyerTouches(haut,bas,gauche,droite:string);[/b]
  34. end;
  35. var
  36. Form1: TForm1;
  37. gauche:string;
  38. droite:string;
  39. haut :string;
  40. bas :string;


Ma procédure est bien définie partout pareil, et je doute qu'une procédure du même nom soit définie dans uses standarts de Delphi. Je ne comprend vraiment pas d'où vient le problème :/ 

On m'a dit que "Client est une classe, pas un objet de TForm1.
dans la procedure de Tform1, le compilateur cherche un objet de Tform1, une variable globale ou une méthode, mais pas une procédure de classe d'objet."

Mais je ne comprend pas vraiment comment je peux corriger ça.
Il n'y aurait pas de bidouille me permettant d'utiliser cette procédure de Client dans cette procedure de Tform1 ?
Lassé par la pub ? Créez un compte
Expert Programmation

l'erreur principal c'est "Client est une classe, pas un objet"

Client c'est comme TForm1, c'est une classe (un type), pour utiliser ses fonction faut l'instancier (Form1 est une instance globale)

(ne faudrai t'il pas appeler Client ''TClient'' pour respecter la convention de nomage ?)
Lassé par la pub ? Créez un compte