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 :

delphi (if else case of )


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Femme Profil pro
    genie des systemes automatisés
    Inscrit en
    Avril 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : genie des systemes automatisés
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 49
    Points : 60
    Points
    60
    Par défaut delphi (if else case of )
    Bonjour
    J’effectue un stage dont le sujet est le développement d’un logiciel interne sous Delphi et j’ai un souci d'affichage de courbes.
    Au début il y avait une fenêtre d’affichage dans j’ai rajoutez un bouton qui permet de ouvrir une autre fenêtre dont l'utilisateur doit rentrer des données puis d’après c’est donné le logiciel fait le calcul et à la fin j affiche une courbe
    Mon souci c’est que je dois afficher mes courbes sur 2 objets différents (soit l’un soit autre)
    Je souhaiterais bien savoir s’il y a une fonction appart « if else » car j’ai essayé avec
    ca et j’ai toujours des problèmes de structures aussi je voudrais me renseignez sur la fonction
    case ***** of
    1 : ****** ;
    2 : ****** ;

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par fz.saida Voir le message
    ca et j’ai toujours des problèmes de structures aussi je voudrais me renseignez sur la fonction
    case ***** of
    1 : ****** ;
    2 : ****** ;
    Amenez le curseur dans votre code source sur le mot clé case puis appuyez sur !
    Vous aurez les réponses à vos questions...
    Philippe.

  3. #3
    Membre du Club
    Femme Profil pro
    genie des systemes automatisés
    Inscrit en
    Avril 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : genie des systemes automatisés
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 49
    Points : 60
    Points
    60
    Par défaut delphi
    enfaite je me suis pas bien expliqué mon Souci c’est que j’ai un fonction qui dépend de deux variable dans la partie graphique et selon ou l'utilisateur clique (sous-station ou multimètre) et je dois récupérer le courant qui est sur mon graphe

    en effet j'essai (OR) mais c'est n'ai valable que pour les booléen, ma question Ya pas une autre syntaxe dans je peux exprimer mon programme ?
    en passant juste par la seul condition ( courantcat sans la répéter




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    case resultat of
          courantcat :begin //courantcat
          resultattemp:= ObjetTemplist.rangekutta4(TobjetresultatsSST(objetTemplist.I).Temps[k],TobjetresultatsSST(objetTemplist.I).Temps[k+1],1,T1,TobjetresultatsSST(objetTemplist.I).CourantCat[k]);
           T1:=resultattemp.Cells[1,2];
           objettemplist.theta.AddXY(TobjetresultatsSST(objetTemplist.I).Temps[k],T1);
          end;
     
         courantcat  :begin
             resultattemp:= ObjetTemplist.rangekutta4(TObjetResultatsMultimetre(objetTemplist.I).Temps[k],TObjetResultatsMultimetre(objetTemplist.I).Temps[k+1],1,T1,TobjetresultatsSST(objetTemplist.I).CourantCat[k]);
             T1:=resultattemp.Cells[1,2];
             objettemplist.theta.AddXY(TObjetResultatsMultimetre(objetTemplist.I).Temps[k],T1);
             end;

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 13 447
    Points : 24 846
    Points
    24 846
    Par défaut
    Tu as mis deux fois courantcat dans le case fourni mais tu donnes des objets TobjetresultatsSST et TObjetResultatsMultimetre que tu sembles mélanger

    Si on lit ton code TObjetResultatsMultimetre hérite de TobjetresultatsSST
    puisque tu fais sur la même ligne de le transtypage de objetTemplist.I comme ceci TObjetResultatsMultimetre(objetTemplist.I).Temps[k+1],1,T1,TobjetresultatsSST(objetTemplist.I).CourantCat[k]);

    En fait, le case avec du cast d'objet est typique d'une mauvaise compréhension de la POO

    Si TobjetresultatsSST et TObjetResultatsMultimetre n'ont pas de lien d'héritage direct

    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
    if objetTemplist.I is TobjetresultatsSST then
    begin
      with TobjetresultatsSST(objetTemplist.I) do
      begin
        resultattemp:= ObjetTemplist.rangekutta4(Temps[k], Temps[k+1], 1, T1, CourantCat[k]);
        T1:=resultattemp.Cells[1,2];
        objettemplist.theta.AddXY(Temps[k],T1);
      end;
    end else objetTemplist.I is TObjetResultatsMultimetre then
    begin
      with TobjetresultatsSST(objetTemplist.I) do
      begin
        resultattemp:= ObjetTemplist.rangekutta4(Temps[k], Temps[k+1], 1, T1, CourantCat[k]);
        T1:=resultattemp.Cells[1,2];
        objettemplist.theta.AddXY(Temps[k],T1);
      end;
    end;
    Si TObjetResultatsMultimetre hérite de TobjetresultatsSST, c'est plus court évidemment

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if objetTemplist.I is TobjetresultatsSST then
    begin
      with TobjetresultatsSST(objetTemplist.I) do
      begin
        resultattemp:= ObjetTemplist.rangekutta4(Temps[k], Temps[k+1], 1, T1, CourantCat[k]);
        T1:=resultattemp.Cells[1,2];
        objettemplist.theta.AddXY(Temps[k],T1);
      end;
    end;
    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

  5. #5
    Membre du Club
    Femme Profil pro
    genie des systemes automatisés
    Inscrit en
    Avril 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : genie des systemes automatisés
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 49
    Points : 60
    Points
    60
    Par défaut delphi
    en effet mes deux class TobjetresulatsSST et TobjetresulatsMultimetre hérite d'une classe mère qui est Tobjetresulats . Aussi objetTempliste c’est mon constructeur avec lequel je récupère mon courantcat et je l’affiche dans un graphe après un passage par le programme que j’ai réalisée
    les donné de courant cat diffère selon ou on est (TobjetresulatsSST et TobjetresulatsMultimetre )
    Le souci que j’ai c’est quand je veux afficher mon graphe il ne prend pas en compte ma 2eme parti du programme ; j’ai essai le if else J’ai toujours un problème de end attendu au lieu de ; par contre avec la fonction case sa marche mais il ne passe pas par ma deuxième partie après else
    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
     
      for k := 0 to (ObjetTemplist.I.getTaille-2) do
       case resultat of
       courantcat:begin if (resultat = courantcat) then
                       begin //courantcat
                       resultattemp:= ObjetTemplist.rangekutta4(TobjetresultatsSST(objetTemplist.I).Temps[k],TobjetresultatsSST(objetTemplist.I).Temps[k+1],1,T1,TobjetresultatsSST(objetTemplist.I).CourantCat[k]);
                       T1:=resultattemp.Cells[1,2];
                       objettemplist.theta.AddXY(TobjetresultatsSST(objetTemplist.I).Temps[k],T1);
                       end
                     else
                       begin
                       resultattemp:= ObjetTemplist.rangekutta4(TObjetResultatsMultimetre(objetTemplist.I).Temps[k],TObjetResultatsMultimetre(objetTemplist.I).Temps[k+1],1,T1,TobjetresultatsSST(objetTemplist.I).CourantCat[k]);
                       T1:=resultattemp.Cells[1,2];
                       objettemplist.theta.AddXY(TobjetresultatsSST(objetTemplist.I).Temps[k],T1);
                       end
                    end;
    quand je lance mon programme pas par pas il passe pas par la deuxième partie même si on n’y est sur le la fiche d'affichage

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 13 447
    Points : 24 846
    Points
    24 846
    Par défaut
    Est-ce que tu relis un peu ce que tu écrits ??
    Si l'on extrait juste la structure case\if voici ce que cela donne
    Citation Envoyé par fz.saida Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    for k := 0 to (ObjetTemplist.I.getTaille-2) do
     case resultat of
       courantcat:
         begin 
           if (resultat = courantcat) then
           begin //courantcat
             resultattemp:= 
           end
           else
           begin
              resultattemp:= 
           end
         end;
    le else //courantcat est impossible puisque déjà éliminé par le case !
    Faudrait mieux maitriser la syntaxe du Delphi !

    Citation Envoyé par fz.saida Voir le message
    en effet mes deux class TobjetresulatsSST et TobjetresulatsMultimetre hérite d'une classe mère qui est Tobjetresulats .
    Évident, vu l'erreur de transtypage SST et MM et l'aspect du code,
    Pourquoi ne pas contacter l'auteur à l'origine du projet pour qu'il t'aide ?

    Donc tu pouvais simplifier le code que je l'ai déjà fourni
    puisqu'il n'y a pas aucune différence visible dans ce cas entre TobjetresulatsSST et TobjetresulatsMultimetre, on doit pouvoir écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if objetTemplist.I is Tobjetresulats then
    begin
      with Tobjetresulats (objetTemplist.I) do
      begin
        resultattemp:= ObjetTemplist.rangekutta4(Temps[k], Temps[k+1], 1, T1, CourantCat[k]);
        T1:=resultattemp.Cells[1,2];
        objettemplist.theta.AddXY(Temps[k],T1);
      end;
    end;
    Citation Envoyé par fz.saida Voir le message
    les donné de courant cat diffère selon ou on est (TobjetresulatsSST et TobjetresulatsMultimetre )
    Cela ne voit pas dans le code fourni !
    Essaye de mieux cerner le polymorphisme de tes classes !
    Je pense que certains propriétés sont déjà ou peuvent être mises en commun dans Tobjetresulats sans devoir explicitement typé tes classes !
    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

  7. #7
    Membre du Club
    Femme Profil pro
    genie des systemes automatisés
    Inscrit en
    Avril 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : genie des systemes automatisés
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 49
    Points : 60
    Points
    60
    Par défaut DELPHI
    Enfaite c'est ma premier fois que je me lance dans un projet comme celui-ci surtout j' ai jamais de la programmation c'est normal que je fasse de tel erreurs concernant le programme la personne qu’il l’a développé est parti vous pouvez m’expliquer la différence entre le deux instruction

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 13 447
    Points : 24 846
    Points
    24 846
    Par défaut
    Ah, tu reprends le projet sans personne pour t'aider alors que tu débutes, ce n'est pas un cadeau !

    Quelles instructions ?
    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

  9. #9
    Membre du Club
    Femme Profil pro
    genie des systemes automatisés
    Inscrit en
    Avril 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : genie des systemes automatisés
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 49
    Points : 60
    Points
    60
    Par défaut DELPHI
    Merci c’est gentil de ta part.
    la fonction case quand il faut l’utiliser, la même chose pour le if else et pourquoi on peut pas les mettre ensemble (l’une dans l’autre ou l’inverse )

  10. #10
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 13 447
    Points : 24 846
    Points
    24 846
    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

Discussions similaires

  1. Equivalent "Select Case when then else end" sur Paradoxe
    Par Seuh.m dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/06/2006, 08h23
  2. [Delphi] [Algorythmie] [case of] case of dynamique ?
    Par Stormbull dans le forum Langage
    Réponses: 7
    Dernier message: 22/12/2005, 00h30
  3. Réponses: 5
    Dernier message: 31/10/2005, 13h25
  4. [Const et Case] Delphi Laxiste ?
    Par Manopower dans le forum Langage
    Réponses: 15
    Dernier message: 05/10/2005, 13h46
  5. [Rave et delphi] Case à cocher
    Par Leesox dans le forum Rave
    Réponses: 11
    Dernier message: 30/09/2005, 20h46

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