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

Lazarus Pascal Discussion :

Pointer tous les champs d'un Record


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 123
    Par défaut Pointer tous les champs d'un Record
    Bonjour
    imaginons que j'ai un 'record'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Type
      TpListeDeValeur = Record
        A1   : Integer;
        A2   : Single; 
        A3   : byte;
      end;
     
      TpMinMax = Record
        Min : TpListeDeValeur;
        Max: TpListeDeValeur;
      end;
    puis un tableau regroupant des valeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var 
      TbValeur : array[1..100] of TpListeDeValeur;
      MinMax   : TpMinMax;
    le but est de calculer le minimum et le maximum des valeurs de A1, A2 et A3.
    et si je rajoute un jour A4, que la routine tourne sans modification du code.

    y a t'il un moyen de pointer tous les champs d'un 'record' automatiquement, comme les champs d'un tableau ?

    Merci pour le temps que vous passez à nous lire et à nous corriger.
    c'est très apprécié.
    bonne journée

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    Non...

    Pour rester au niveau de l'enregistrement, on peut passer par un record helper qui fournirait une méthode CompareAuxExtremes qui serait redéfinie à chaque modification des champs.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 123
    Par défaut Changement de Structure ?
    Bonjour,
    merci pour la réponse.
    y aurait t'il alors une autre structure qui me permettrait de résoudre le problème ?

    bonne journée

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    Un tableau de tableau de variants ? La longueur du tableau de variants et le type de ses éléments dépendrait du record à reproduire.
    Mais la procédure devrait sûrement tester beaucoup de cas pour être générique, et surtout, au lieu d'être connue comme un type, la structure des données devrait l'être de la procédure d'affectation des données.
    Voici une belle usine à gaz en perspective.
    D'où vient le besoin ? N'y a-t-il pas moyen de faire autrement ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Salut pour réaliser ce que tu souhaites ta structure est trop rigide et comme le suggères tourlourou, il te faudra implémenter de nouvelles méthodes à chaque fois que tu ajoutes une valeur.

    Comme ça à chaud je passerai par plusieurs enregistrements et des tableaux dynamique (ou flux mémoire) :

    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
    18
    19
    20
    21
    22
    23
    24
    Type
      TVarType = (vtByte, vtWord, vtInteger, vtDWord, vtInt64, vtSingle, vtDouble);
      TValeur = record
        Valeur : Variant;
        ValeurType : TVarType;
      end;
     
      TTableauValeur = Array of TValeur;
     
      TValeurMinMax = record
        mini : TValeur;
        maxi : TValeur;
      end;
     
      TListeValeurMinMax = Array of TValeurMinMax
     
      TListeDeValeur = Record
        nbValeur : Word;
        TableauValeur : TTableauValeur;
      end;
     
    var 
      TbValeur :  Array of TListeDeValeur;
      TbMinMax :  Array of TListeValeurMinMax; // grandeur en fonction de TbValeur.nbValeur
    Il te suffira de coder une méthode en fonction du nombre de valeur présent dans TListeValeur et de transtyper "Valeur" dans TValeur en fonction du type

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 123
    Par défaut paramètres d'un radar
    Mon tableau, c'est en fait les paramètres d'un radar.
    chaque élément de ce tableau représente une impulsion de ce radar.
    chaque impulsion est représenté par ses paramètres:
    - sa fréquence, (que j'avais noté A1)
    - sa durée d'impulsion, (A2)
    - le niveau de cette impulsion, (A3)
    - etc ...

    mon tableau peut représenter des millions d'impulsions, d’où ma réticence à passer les champs en variant qui occuperait beaucoup plus de place en mémoire.

    et comme des paramètres peuvent s'ajouter, le tableau (ses champs) peut évoluer.

  7. #7
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Nos messages et pensées se sont croisé Tourlourou

    Connais tu exactement le nombre de paramètres à prendre en compte suivant le "type" de radar ?

    Pour ma part, dans ce cas, à la place de passer par des enregistrement je passerai pas des "classes"et des listes de classes (dans le genre TList ou TCollection) ce qui permettrai de les étendre plus facilement grâce à l'héritage et le polymorphisme. cf les articles de Gilles Vasseur dans les tutoriels avancés : POO à gogo 1ere partie

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

Discussions similaires

  1. Récupérer tous les champs de même nom
    Par hlr dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/02/2005, 13h26
  2. afficher tous les champs d'une table
    Par julio84 dans le forum ASP
    Réponses: 8
    Dernier message: 19/01/2005, 10h31
  3. selectionner tous les champs sauf un ?
    Par HULK dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/01/2005, 15h51
  4. Retrouver tous les champs d'une table
    Par tripper.dim dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/07/2004, 20h40
  5. Afficher tous les champs d'une table avec dbexpress et MySQL
    Par LHT dans le forum Bases de données
    Réponses: 2
    Dernier message: 25/06/2004, 17h11

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