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 :

[D6] Programmation événementielle pour une suite de traitements


Sujet :

Langage Delphi

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut [D6] Programmation événementielle pour une suite de traitements
    Bonjour à tous

    J'ai une suite de traitement à faire ... Dont le programme me semble mal adapté voire inefficace sinon archaïque...

    Programme Principal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        if MonTruc.AAA(Nouvelledonnee) then 
             if MonTruc.BBB(parametres_BBB) then 
                   if MonTruc.CCC(parametres_CCC) then 
                          AutreComposant.agit(...)
    Donc il ne serait pas mieux de transformer ou d'ajouter des événements pour modifier ou non les paramètres_BBB ou paramètres_CCC et laisser le composant gérer l'appel de MonTruc.BBB et MonTruc.CCC?

    Si oui comment doivent être associé les évènements dans les routines ? Ou comment indiquer dans les routines qu'elle doivent attendre et tenir compte des les paramètres si les événements sont référencé dans la fiche principal?

    Merci d'avance

  2. #2
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 561
    Points : 3 955
    Points
    3 955
    Par défaut
    Salut

    J'avoue ne pas trop comprendre ton problème. En quoi le code cité est-il archaïque ?
    Que veux-tu au juste transformer en événement ?
    Sous réserve de la compréhension de ton problème, transformer des méthodes en événements ne simplifiera sans doute pas ton programme.
    L'ajout d'un événement dans le composant suppose un besoin récurrent et aura un impact sur tout ton application (voire tes application selon les cas).

    Cdlt

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut
    Merci pour ta réponse.

    Effectivement ce n'est pas limpide.

    La réalité c'est que
    Si MonTruc.AAA est vrai, nécessairement MonTruc.BBB doit être lancé.
    Si MonTruc.BBB est vrai, nécessairement MonTruc.CCC doit être lancé.
    Si MonTruc.CCC est vrai, nécessairement une procédure externe doit être lancé.

    Et cette gestion est faite dans le programme principal et non dans le composant. Donc à chaque utilisation du composant dans un nouveau programme la structure imbriquée doit être implanté dans le programme principal.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        if MonTruc.AAA(Nouvelledonnee) then 
             if MonTruc.BBB(parametres_BBB) then 
                   if MonTruc.CCC(parametres_CCC) then 
                          AutreComposant.agit(...)
    On est très loin du principe de la boîte noire...

    Peut-être que la solution est simplement de faire une routine MonTruc.DDD qui recrée simplement cette structure imbriqué.

    C'est vrai que aussi qu'en utilisant des événements, on perd l'exécution synchrone. Il ne faut surtout pas qu'une série d'événements déclenchés soient empilés sans être exécutés.

    À l'origine l'idée derrière cette structure imbriqué était de changer les paramètres lors des appels de chaque routine.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut
    Merci de votre aide

    Je vais intégrer toutes ces routines dans une seule et changerai les paramètres de chaque routine dans des nouvelles propriétés du composant principal.

    Si vous avez d'autres commentaires je suis encore preneur

    A+

    Merci

  5. #5
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 879
    Points : 11 377
    Points
    11 377
    Billets dans le blog
    6
    Par défaut
    Ce qui serait choquant serait plus de ne pas prévoir dans le code externe quoi faire si les conditions ne sont pas remplies...

    Ça reste au programme appelant de gérer l'ordonnancement des tâches et la communication avec l'utilisateur.

    Si on peut automatiser le processus sans perdre d'occasion d'interaction pour l'appelant, pourquoi ne pas l'encapsuler, effectivement. Pour ça, il faut savoir quoi faire si MonTruc.AAA est faux, ou MonTruc.BBB, ou MonTruc.CCC.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut
    Merci pour ta réponse

    Dès qu'une routine est fausse tout s'arrête. On doit attendre que (UneNouvelleDonnee) occasionne la réaction en chaine soit trois vrais consécutifs.

  7. #7
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 879
    Points : 11 377
    Points
    11 377
    Billets dans le blog
    6
    Par défaut
    Dans ce cas, et pour autant que tous les paramètres soient connus lors de l'appel à AAA ([EDIT] ou passés par référence), autant ajouter une méthode à l'objet (dans son propre code) ou dériver l'objet dans le code de l'appelant pour recréer une boîte noire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Choix pour une application de traitement vidéo.
    Par grutfruh dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 02/12/2008, 11h30
  2. Variable pour une suite de contrôle
    Par sakia dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/05/2008, 11h56
  3. Réponses: 5
    Dernier message: 24/04/2008, 21h04
  4. Programme pour une suite
    Par theblinker dans le forum Pascal
    Réponses: 3
    Dernier message: 12/01/2008, 16h51
  5. Erreur dans un programme php pour une connexion à une bdd
    Par gaetan.tranvouez dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/06/2006, 21h06

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