IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Declaration procedure dynamique


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Inscrit en
    Novembre 2002
    Messages
    815
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 815
    Par défaut Declaration procedure dynamique
    bonjour a tous,

    Juste un conseil sur l'écriture de code, je voudrai savoir si il existe une méthode plus compacte d'écrire le code ci dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    if ControleSiChargementDll(I)=true then
            begin
               Rack  :=TabBit[TabAdressMesure[I].Rack];
               Panier:=TabBit[TabAdressMesure[I].Panier];
               CarteH:=TabBit[TabAdressMesure[I].CarteH];
               CarteL:=TabBit[TabAdressMesure[I].CarteL];
               case i of
                   001 : begin
                                 generique0001(253,NumMode,Rack,Panier,Carteh,CarteL,TypeCarteAvant,TypeCarteApres,P1,P2,P2,P4,P5, R1,R2,R3,R4,R5,Status);
                         end;
                   002 : begin
                                 generique0002(253,NumMode,Rack,Panier,Carteh,CarteL,TypeCarteAvant,TypeCarteApres,P1,P2,P2,P4,P5, R1,R2,R3,R4,R5,Status);
     
                         end;
                   003 : begin
                                 generique0003(253,NumMode,Rack,Panier,Carteh,CarteL,TypeCarteAvant,TypeCarteApres,P1,P2,P2,P4,P5, R1,R2,R3,R4,R5,Status);
     
                         end;
     
                   ...... jusqu a
     
     
                   254 : begin
                                generique0254(253,NumMode,Rack,Panier,Carteh,CarteL,TypeCarteAvant,TypeCarteApres,P1,P2,P2,P4,P5, R1,R2,R3,R4,R5,Status);
     
                         end;
                   255 : begin
                                generique0255(253,NumMode,Rack,Panier,Carteh,CarteL,TypeCarteAvant,TypeCarteApres,P1,P2,P2,P4,P5, R1,R2,R3,R4,R5,Status);
     
                         end;
               end
             end;
    Le but serai la création dynamique du nom de la procédure 'generiqueN' en fonction du numéro du case, pour supprimer le case.

    Par exemple à la méthode de 'Findcompent' où l'on peut numéroter les composant pour les passer dans une boucle...

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    oui, il suffit de créer un tableau de procédures

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    type
      TProc = procedure(parms...);
     
    procedure proc_001(params..);
    begin
    end;
     
    procedure proc_002(params...);
    begin
    end;
     
    const
      Procs:array[1..2] of TProc = (
        proc_001, proc_002
      );
     
    begin  
      Procs[i](params...);
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Voir aussi les méthodes publiées et MethodAddress comme dans le sujet
    Créer un jeu d'aventure textuel
    Appel d'une fonction/TThread de façon paramétrique

    La proposition de Paul TOTH sur un tableau de procédure a aussi été exploité dans le sujet
    Déclaration de pointeur de fonction et structure
    Le Tableau a l'avantage que dès la compilation les appels de fonctions respecterons le même prototype contrairement à une version RTTI où plus de surprises peuvent débarquer en RunTime !

    petit rappel sur les booléens
    if ControleSiChargementDll(I)=true then ou if ControleSiChargementDll(I) then sont équivalents mais la seconde est la forme recommandée !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    j'ai jamais eu 256 procédure dans une seul unité
    est ce que tout ces procédure sont radicalement différent, ou simplement quelques lignes?

  5. #5
    Membre émérite Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Par défaut
    Pour supprimer le case, il suffit de créer une procédure "generique" avec les paramétres nécessaires a "generiqueXXX" plus un parametre index.
    Suivant la complexite, soit conditionner la procedure "generique", soit déporter le case a l'interieur de celle ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if ControleSiChargementDll(I) then
    begin
      Rack  :=TabBit[TabAdressMesure[I].Rack];
      Panier:=TabBit[TabAdressMesure[I].Panier];
      CarteH:=TabBit[TabAdressMesure[I].CarteH];
      CarteL:=TabBit[TabAdressMesure[I].CarteL];
      generique(I, 253,NumMode,Rack,Panier,Carteh,CarteL,TypeCarteAvant,TypeCarteApres,P1,P2,P2,P4,P5, R1,R2,R3,R4,R5,Status);
    end;

  6. #6
    Membre émérite Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Par défaut
    Qu'est ce qui diffère dans l'implémentation des 256 procédures ?

Discussions similaires

  1. [ASE 15.0.2] Procedure dynamique introuvable
    Par MartyMacFly dans le forum Adaptive Server Enterprise
    Réponses: 2
    Dernier message: 25/02/2009, 16h44
  2. Lancer procedure dynamiquement.
    Par Junior_jef dans le forum Access
    Réponses: 11
    Dernier message: 04/05/2006, 19h26
  3. champ dynamiques dans une procedure stockée
    Par augereau dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/11/2005, 07h52
  4. Réponses: 6
    Dernier message: 24/09/2004, 13h10
  5. Declaration Type ds une procedure
    Par Qwazerty dans le forum Langage
    Réponses: 6
    Dernier message: 28/08/2002, 09h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo