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 :

[D2005 - Xp Sp2] Tableau ou set et comment? Je patauge!


Sujet :

Langage Delphi

  1. #1
    Membre averti
    Avatar de Hauwke
    Inscrit en
    Septembre 2005
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 329
    Points : 400
    Points
    400
    Par défaut [D2005 - Xp Sp2] Tableau ou set et comment? Je patauge!
    Bonjour,
    J'ai une unité qui contient une liste de constantes du style:
    (tous les codes touches et souris +tous les événements souris du sdk+...+)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    HK_FALSE=	0		;//	Valeur faux
    HK_TRUE=  	1		;//	Valeur vraie
    VK_LBUTTON = 	2		;//01	Left mouse button
    VK_RBUTTON=	3		;//02 	Right mouse button
    VK_CANCEL=	4		;//03	Control-break processing
    VK_MBUTTON=	5		;//04	Middle mouse button (three-button mouse)
    VK_XBUTTON1=	6		;//05	X1 Mouse button
    VK_XBUTTON2=	7		;//06	X2 Mouse button
    dans une autre unité, j'aimerai pourvoir combiner les constantes de ma première unité par exemple de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
    var 
    MysetOfMouseButton:=[2,3,5,6,7];
    MysetOfBoolean:=[0,1];
    MySetOfDesConstantesAuHasardDeMaListeEtDeMesBesoins:=[0,5,35,187,226];
    ...
    Ceci afin d'utiliser toutes mes constantes dans des instructions Case..of sans avoir à les réécrire (je sais, c'est de la fainéantise!). le probléme est que je patauge dans ma déclaration de type et je n'ose, par correction ;-), vous répéter toutes les insanités que le compilateur me crache au visage à chaque tentative! Rires
    Bref, je sui planté! Je n'arrive pas à dire au compilateur que mes integer ne sont que les idientifiants de mes constantes déclarées par ailleurs! Quelqu'un a-t-il un bout de code, une idée, un lien qui me permettrait de repartir du bon pied?
    Le but final étant de proposer une Dll (freeware, of course) qui gére les 11 (13) catégories de Hook et qui permettra, je l'espére, à l'utilisateur final de faire un hook avec trés peu d'instruction sur à peu prés tout ce qu'il veut.
    D'avance merci pour votre aide
    Cordialement,
    Hauwke

  2. #2
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    tu veux pas faire ca plutot ?

    type
    MysetOfMouseButton = ( VK_LBUTTON, VK_RBUTTON, ...);


    puis à l'utilisation

    var mb:MysetOfMouseButton;

    begin
    ...
    case mb of
    VK_LBUTTON : ...
    VK_RBUTTON: ...
    ...
    end
    ...
    end

    AINSI, on ne s'occupe meme plus des numéros correspondants...
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  3. #3
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    J'avais oublié,
    tu peux définir les valeurs de tes constantes comme ca:

    MysetOfMouseButton = ( VK_LBUTTON = 3, VK_RBUTTON=9, ...);
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  4. #4
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Points : 187
    Points
    187
    Par défaut
    cette question m'a fait pensé à un autre pb :

    j'utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    type
     MysetOfvalue = ( V_1, V_2, ...); 
     
    ...
     
     var A : MysetOfvalue ;

    et un jour j'ai voulu enregistré la valeur de A dans une base de donnée.

    => erreur de compil, sur fieldbyname('ch1').asinteger :
    un Tmysetofvalue n'est pas un integer !

    Pourtant on peux faire un case.

    J'ai donc été obligé de définir des constantes :

    const
    V_1 = 1;
    v_2 = 2;

  5. #5
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    SI, ce sont des entiers,
    l'entier correspondant est Ord( VK_LBUtton ) qui vaut dans mon exemple 3

    autrement dit
    si
    var INb:Integer;
    mb:=VK_LBUTTON
    INb := Ord( mb )
    --> INb = 3
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

Discussions similaires

  1. [Débutant] Tableau dans un GUI : comment obtenir les données?
    Par _TiPi_ dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 08/03/2015, 22h24
  2. [Débutant] tableau dans un rapport, comment le remplir
    Par Msysteme dans le forum C#
    Réponses: 1
    Dernier message: 17/09/2012, 17h12
  3. [PrestaShop] Template prestashop tableau sur une ligne comment le faire passer sur plusieurs lignes
    Par ptitepo dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 23/12/2010, 02h47
  4. Réponses: 3
    Dernier message: 15/12/2009, 00h58
  5. Réponses: 8
    Dernier message: 22/06/2009, 18h06

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