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

Chico75

Habitué
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 :
[cpp]procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
gauche:= '0';
droite:= '0';
haut := '0';
bas := '0';
//différents actions sur gauche, droite, haut et bas ...
Client.envoyerTouches(haut,bas,gauche,droite);
end;[/cpp]

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

et voici mes déclarations :
[cpp]type
TForm1 = class(TForm)
Label1: TLabel;
Fleche_Haut: TImage;
Fleche_Gauche: TImage;
Fleche_Droite: TImage;
Fleche_Bas: TImage;
affichage: TLabel;
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;

Client = class
constructor creer(
nom:String;
serveur:String;
port:String);
destructor detruire();
private
socket:TWSocket;
port:String;
procedure onDnsLookupDone(sender:TObject; error:Word);
procedure onSessionConnected(sender:TObject; error:Word);
procedure onSessionClosed(sender:TObject; error:Word);
public
connecte:Boolean;
procedure envoyerTouches(haut,bas,gauche,droite:string);
end;
var
Form1: TForm1;
gauche:string;
droite:string;
haut :string;
bas :string;
[/cpp]

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 ?
 

batchy

Grand Maître
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 ?)
 

zeb

Modérateur
Batchy>+1
Remplace
Code:
Client = class
par
Code:
TClient = class
Ecris quelque part
Code:
var
  Client : TClient
et ça devrait fonctionner.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 071
Membres
1 586 286
Dernier membre
petitangebleu1977
Partager cette page
Haut