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

 Delphi Discussion :

utiliser une string en variable


Sujet :

Delphi

  1. #1
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 207
    Points : 108
    Points
    108
    Par défaut utiliser une string en variable
    bonjour,

    j'ai vraiment du mal à expliquer se que je recherche à faire, alors voici un exemple.

    un objet : hpat avec comme attribut (via property) : IGG

    donc pour affecter une valeur je fais hpat.IGG:='valeur';

    j'ai pas mal d'attribut à mon objet hpat

    serai t'il possible de faire grace à une Tstringlist hliste un truc du genre
    (hpat).hliste.value[txt]:='valeur'

    ou txt serai mes attribut


    je demande ça car je dois faire un if sur chaqu'un de mes attribut, et comme j'ai environ 50 attributs c'est pas type top d'avoir une succession de if ...

    ducoup je voudrais mettre tout mes attribut dans une liste, faire une boucle sur le nombre d’occurrence de cette liste et faire le test l'attribut de mon objet patient via la liste.

    oula :/ par écrit c'est tendu à expliquer

    je suis avec delphi 5

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Mouais.

    Tu pourrais simplement utiliser uniquement une THashedStringList, sans stocker la valeur de tes attributs autrement que dans la liste.

    Si tu veux absolument stocker tes attributs avec des champs/propriétés, rends tes propriétés publiées, et utilise les RTTI.
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    interface
     
    uses
      TypInfo;
     
    type
      TAttributes = class(TObject)
      protected
        function GetAttributes(const Key: string): string; virtual; abstract;
        procedure SetAttributes(const Key, Value: string); virtual; abstract;
      public
        property Attributes[const Key: string]: string
          read GetAttributes write SetAttributes; default;
      end;
     
      TRTTIAttributes = class(TAttributes)
      private
        FContainer: TObject;
      protected
        function GetAttributes(const Key: string): string; override;
        procedure SetAttributes(const Key, Value: string); override;
     
        property Container: TObject read FContainer;
      public
        constructor Create(AContainer: TObject);
      end;
     
    {$M+}
      TPat = class(TObject)
      private
        FAttributes: TAttributes;
     
        FIGG: string;
        // autres champs
      public
        constructor Create;
        destructor Destroy; override;
     
        property Attributes: TAttributes read FAttributes;
      published
        property IGG: string read FIGG write FIGG;
        // autres propriétés
      end;
    {$M-}
     
    implementation
     
    function TRTTIAttributes.GetAttributes(const Key: string): string;
    begin
      Result := GetStrProp(Container, Key);
    end;
     
    procedure TRTTIAttributes.SetAttributes(const Key, Value: string);
    begin
      SetStrProp(Container, Key, Value);
    end;
     
    // l'implémentation des autres méthodes sus-mentionnées est triviale
    Tu peux alors faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hpat.Attributes[txt] := 'valeur';
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #3
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 207
    Points : 108
    Points
    108
    Par défaut
    THashedStringList n'existe pas lorsque je fais F1 en delphi (je suis en version 5)

    je vais tester la méthode que tu me propose.
    merci

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    et pourquoi pas une autre approche

    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
    25
    26
     
    type
      TAttribut =(aIGG, ..);
      TAttributs : array[TAttribut] of string;
     
      Thpat = class
      private
        FAttributs : TAttributs;
        function GetAttribut(Index: TAttribut): string;
      public
        procedure test;
        property IGG index aIGG read GetAttribut;
      end;
     
    function Thpat.GetAttribut(Index: TAttribut): string;
    begin
      Result := FAttributs[Index];
    end;
     
    procedure Thpat.test;
    var
      a: TAttribut;
    begin
      for a := Low(Tattribut) to High(TAttribut) do
       if FAttributs[a] = ...
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/04/2015, 15h56
  2. utiliser une chaine comme variable
    Par Pitrivief dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/11/2009, 21h43
  3. Creer un filtre automatique qui utilise une variable de type string
    Par Esmax666 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/06/2009, 13h53
  4. Utiliser une string avec tag XML comme fichier XML
    Par kaygee dans le forum ASP.NET
    Réponses: 1
    Dernier message: 20/03/2009, 15h52
  5. utiliser une worksheets comme variable d'une procédure E 2003
    Par sincenono dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/01/2009, 23h35

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