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 :

Regrouper l'exclusion d'un type


Sujet :

Langage Delphi

  1. #1
    Membre expérimenté
    Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 417
    Par défaut Regrouper l'exclusion d'un type
    Bonjour à tous,

    Est-ce qu'on peut regrouper un type au lieu de le déclarer à chaque fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not(Table.Fields[I].DataType in [ftAutoInc, ftMemo, ftFmtMemo, ftGraphic, ftBlob, ftGuid]) then
    Avec quelque chose de style :
    Exclusion = ftAutoInc, ftMemo, ftFmtMemo, ftGraphic, ftBlob, ftGuid
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not(Table.Fields[I].DataType in [Exclusion]) then
    Merci
    Vous ne pouvez pas faire confiance à un code que vous n'avez pas totalement rédigé vous-même. :aie:
    Ce n’est pas un bogue - c’est une fonctionnalité non documentée. :lahola:

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 049
    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 049
    Par défaut
    Tu veux définir une constante ?
    Je suppose que tu as déjà trouvé mais voici ce que cela donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const
      FIELD_TYPE_EXCLUSIONS = [ftAutoInc, ftMemo, ftFmtMemo, ftGraphic, ftBlob, ftGuid];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not (Table.Fields[I].DataType in FIELD_TYPE_EXCLUSIONS) then


    Et si tu les Exclusions peuvent évoluer en runtime, une variable globale (ou membre d'une classe) sinon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var
      VolatileFieldTypeExclusions: TFieldTypes = [ftAutoInc, ftMemo, ftFmtMemo, ftGraphic, ftBlob, ftGuid];

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Include(VolatileFieldTypeExclusions, ftUnknown);
    if not (Table.Fields[I].DataType in VolatileFieldTypeExclusions) then


    Tu peux aussi te faire une fonction (voir même un TFieldHelper si c'est très répandu dans ton projet)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function IsFieldTypeExclusion(AField: TField): Boolean;
    const
      FIELD_TYPE_EXCLUSIONS = [ftAutoInc, ftMemo, ftFmtMemo, ftGraphic, ftBlob, ftGuid];
    begin
      Result := Assigned(AField) and AField.DataType in FIELD_TYPE_EXCLUSIONS;
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not IsFieldTypeExclusion(Table.Fields[I]) then

    ou l'inverse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function IsFieldTypeAccepted(AField: TField): Boolean;
    const
      FIELD_TYPE_EXCLUSIONS = [ftAutoInc, ftMemo, ftFmtMemo, ftGraphic, ftBlob, ftGuid];
    begin
      Result := Assigned(AField) and not (AField.DataType in FIELD_TYPE_EXCLUSIONS);
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if IsFieldTypeAccepted(Table.Fields[I]) then
    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

  3. #3
    Membre expérimenté
    Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 417
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Tu veux définir une constante ?
    Je suppose que tu as déjà trouvé mais voici ce que cela donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const
      FIELD_TYPE_EXCLUSIONS = [ftAutoInc, ftMemo, ftFmtMemo, ftGraphic, ftBlob, ftGuid];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not (Table.Fields[I].DataType in FIELD_TYPE_EXCLUSIONS) then
    Je suppose que tu as déjà trouvé mais voici ce que cela donne
    Non, je ne l'avais pas trouvé. En réalité, je ne savais pas qu'il était possible de déclarer de cette manière.

    Merci ShaiLeTroll
    Vous ne pouvez pas faire confiance à un code que vous n'avez pas totalement rédigé vous-même. :aie:
    Ce n’est pas un bogue - c’est une fonctionnalité non documentée. :lahola:

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 049
    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 049
    Par défaut
    C'est surement à cause de cela que l'on déclare une constante set via [] mais une constante array via ()
    Parfois, j'ai l'erreur genre Type incompatible set of ... et array of quand je veux déclarer un tableau un peu vite en oubliant que c'est () et non [], je me fais encore avoir parfois.
    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

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

Discussions similaires

  1. Regroupement avec exclusion de certaines lignes
    Par souhail72 dans le forum Développement
    Réponses: 7
    Dernier message: 03/04/2024, 19h51
  2. Regroupement avec exclusion de certaines lignes
    Par souhail72 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 29/03/2024, 20h19
  3. Réponses: 5
    Dernier message: 03/01/2012, 13h19
  4. Regrouper des champs de même type dans la même table
    Par Marsupilami23 dans le forum Développement
    Réponses: 9
    Dernier message: 15/06/2011, 13h53
  5. Regroupement en un type
    Par Julgood dans le forum C++
    Réponses: 5
    Dernier message: 23/04/2008, 17h37

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