1. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

Conversion Code Python To WinDev22

Discussion dans 'Résolution problème & conseils' créé par Razorte, Mai 17, 2018.

  1. Razorte

    Razorte Member

    Inscrit:
    Mai 11, 2018
    Messages:
    49
    J'aime reçus:
    50
    Bonjour, Voici le code Python que je n'arrive pas a transcrire en windev, je ne sais pas comment interpréter cette suite de if et else :
    Code (Windev):

    byteFour = byteFour+0x80 if self.SWP2 == 1 else byteFour
    byteFour = byteFour+0x40 if self.standby == 1 else byteFour
    byteFour = byteFour+0x20 if self.bandLimits == 1 else byteFour
    byteFour = byteFour+0x10 if self.XTAL == 1 else byteFour
    byteFour = byteFour+0x08 if self.softMute == 1 else byteFour
    byteFour = byteFour+0x04 if self.HCC == 1 else byteFour
    byteFour = byteFour+0x02 if self.SNC == 1 else byteFour
    byteFour = byteFour+0x01 if self.SW == 1 else byteFour
     
    Voilà mes tests mais bon ... :
    Code (Windev):

    SI Tea5767.SWP2 ALORS ByteFour += 0x80
    SI Tea5767.standby  ALORS ByteFour += 0x40
    SI Tea5767.bandLimits ALORS ByteFour += 0x20
    SI Tea5767.XTAL ALORS ByteFour += 0x10
    SI Tea5767.softMute ALORS ByteFour += 0x08
    SI Tea5767.HCC ALORS ByteFour += 0x04
    SI Tea5767.SNC ALORS ByteFour += 0x02
    SI Tea5767.SW ALORS ByteFour += 0x01
     
     
    Tags:
  2. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,924
    J'aime reçus:
    1,557

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    , dans la LST 112 , il ya un exemple d'ajout de code Python dans windev
     
    Razorte apprécie ceci.
  3. Razorte

    Razorte Member

    Inscrit:
    Mai 11, 2018
    Messages:
    49
    J'aime reçus:
    50

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    , dans la LST 112 , il ya un exemple d'ajout de code Python dans windev
    Cliquez pour agrandir...
    Haa je n'étais pas au courant, merci bien je me vais regarder la LST112.
     
  • popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,924
    J'aime reçus:
    1,557
    tu écrit en python:
    [windev]byteFour = byteFour+0x80 if self.SWP2 == 1 else byteFour[/windev]
    puis en windev:
    [windev]SI Tea5767.SWP2 ALORS ByteFour += 0x80[/windev]
    je suppose donc que self est Tea5767.
    dans ce cas pourquoi tu ne fait pas:
    [windev]
    SI Tea5767.SWP2 = 1 ALORS
    byteFour = byteFour+0x80
    SINON
    ByteFour = ByteFour
    FIN
    [/windev]
    si le résultat est le même tu t'amuseras ensuite a mettre sur un seule ligne en windev.
    (regarde comment on fait avec le "?").
    l'aide n'est pas toujours claire.
     
  • Johjo

    Johjo New Member

    Inscrit:
    Jan 2, 2018
    Messages:
    14
    J'aime reçus:
    17

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Cette suite de if correspond en windev à la syntaxe suivante :

    [windev]
    résultat = (condition) ? valeur si condition est vrai SINON valeur si condition est fausse.
    [/windev]

    On traduirait ta première ligne en :
    [windev]
    ByteFour = Tea5767.SWP2 ? ByteFour + 0x80 Sinon ByteFour
    [/windev]

    Bon, l'écriture est assez particulière. A quoi bon retourner ByteFour si la condition est fausse ? Je pense que l'auteur voulait faire en sorte que l'écriture tienne sur une seule ligne.

    Vu le code, je te conseillerai aussi d'utiliser l'opérateur OuBinaire plutôt que le +=, ce qui laisse bien voir l'intention du code, c'est à dire activer ou désactiver des bits de la variable ByteFour. Pour savoir si une des valeurs est présente, tu peux ensuite utiliser EtBinaire. Par exemple :

    [windev]
    Si EtBinaire(ByteFour, 0x80) = 0x80 ALORS
    ....
    FIN
    [/windev]

    Enfin, je te conseille aussi de remplacer les 0x80 et autres valeurs par des constantes, qui expriment elles aussi l'intention du code et qui évitent des erreurs de saisie.
     
    #5 Johjo, Juil 5, 2018
    Dernière édition: Juil 5, 2018
  • Partager cette page

    Chargement...