Appel de procédure ou fonction dans Case Of

Résolu
PythonGreg Messages postés 68 Date d'inscription jeudi 3 novembre 2011 Statut Membre Dernière intervention 6 février 2015 - 26 oct. 2012 à 06:20
PythonGreg Messages postés 68 Date d'inscription jeudi 3 novembre 2011 Statut Membre Dernière intervention 6 février 2015 - 26 oct. 2012 à 18:52
Bonjour à tous ;
J'ai un petit problème voila j'ai une partir serveur qui exécuté des commandes reçu par le client le serveur compte a peu pré 30 commandes.

procedure TFServeur.IdTCPServer1Execute(AContext: TIdContext);
var 
Cmd : string;
begin
  Cmd := AContext.Connection.IOHandler.ReadLn();
   If Cmd = ?Open? then
   Open; // Appel de procedure ou function
End;


Mais je ne peu pas inséré 30 [ If Then ] dans la procédure sa fait énorme ?
Donc j'ai pence qu'un Case Of serai plus adapter a cette situation mais voila comment appelé une fonction ou procédure dans un Case Of

procedure TFServeur.IdTCPServer1Execute(AContext: TIdContext);
var 
Cmd : string;
 I : Integer;
begin
  Cmd := AContext.Connection.IOHandler.ReadLn();
   For I := 1 to length(Cmd) do
   Begin
     Case Cmd[I] of
?Open? := Open; // Apple de procedure ou function  
End;


Merci d'avance pour votre aide.

2 réponses

Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
26 oct. 2012 à 14:23
Bonjour,

Voici une méthode insensible à la casse :

var
  Cmd : TStrings;
begin
  Cmd := TstringList.create;
  try
    Cmd.Add ('Open');
    Cmd.Add ('Cmd2');
    Cmd.Add ('Cmd3');

    Case Cmd.IndexOf( AContext.Connection.IOHandler.ReadLn() ) of
      0: Open();
      1: DoCmd2();
      2: DoCmd3();
      else ShowMessage('Ce n''est pas une commande.');
    end;
  finally Cmd.Free;  end;
end;
3
PythonGreg Messages postés 68 Date d'inscription jeudi 3 novembre 2011 Statut Membre Dernière intervention 6 février 2015
26 oct. 2012 à 18:52
Merci Caribensila tu ma évité la Procedure spaghetti
0
Rejoignez-nous