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 :

utilisé une chaine comme un nom de variable sous delphi ?


Sujet :

Langage Delphi

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut utilisé une chaine comme un nom de variable sous delphi ?
    Comment utilisé une chaine comme un nom de variable sous delphi.

    Exp (pour d'autre lang)
    (#"abc"):=2 // Affecte le variable abc:=2

  2. #2
    Membre expérimenté
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Points : 1 339
    Points
    1 339
    Par défaut
    Non ça n'est pas possible, le nom des variables ne survit pas à la compilation. Il faut gérer ça toi même, avec un TStringList par exemple ou faire autrement, car à l'exception des composants qu'il peut être intéressant de retrouver par leur nom (voir méthode findComponent), ça n'est pas terrible de programmer comme ça.

    Bloon
    A lire : Les règles du club
    Delphi : La FAQ - Articles

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci Bloon pour ta réponse. Mais je crois qu'il ya un mal entendu.
    un exemple:
    Supposon que dans mon programme je travaille avec une table (DB)
    où il y'à plusieurs champs de même type (Varchar)

    Champ1: Fourn_id_1
    Champ2: Fourn_id_2
    .
    .
    mon objectif est de traiter l'évenement onchange de ces champs dans une seule procedure (au lieu d'une proc pour chaque champ).

    {illustration}

    procedure TF_prod_tab.detailFOURN_ID1Change(Sender: TField);
    Var
    Champ1,champ2,champ3,champ4 :String;
    Index : String;
    begin
    index:=Rightstr(TFIBBCDField(Tfield).FieldName,1);
    Champ1:='detailFOURN_ID'+index+'.AsInt64';
    Champ2:='detailCOND'+index+'.AsInt64';
    Champ3:='detailART_LIB'+index+'.AsString';
    Champ4:='detailCOEF'+index+'.AsFloat';
    if (#Champ1)<>0 then begin
    (#Champ2) :=DetailUNITE_GEST.AsInt64;
    (#Champ3):=detailART_LIB.AsString;
    (#Champ4):=1;
    end
    else begin
    (#Champ2) :=0;
    (#Champ3):='';
    (#Champ3):=0;
    end;
    end;

    ce n'est pas plus simple comme ca ?

    Merci

  4. #4
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Dans un sens, tu as la propriété Name pour tous les composants et controles dérivés de TControl.

    Dans l'autre sens, tu as, à partir du parent du controle auquel tu souhaite acceder, la méthode :

    FindChildControl(const ControlName:string):TControl;

    Ca devrait marcher avec des et des .

    Sinon,pour les Tables et les Query, tu as :
    TTable.FieldByName(NomDuChamp:string).asString (AsBoolean,AsInteger,...)

    Dans ton cas, on aurait :
    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
     
    procedure TF_prod_tab.detailFOURN_ID1Change(Sender: TField);
    Var
    Champ1,champ2,champ3,champ4 :String;
    Index : String;
    begin
    index:=Rightstr(TFIBBCDField(Tfield).FieldName,1);
    Champ1:='detailFOURN_ID'+index;
    Champ2:='detailCOND'+index;
    Champ3:='detailART_LIB'+index;
    Champ4:='detailCOEF'+index;
    with TF_prod_tab do
    begin
      Edit;
      if FielByName (Champ1).AsInt64r<>0 then 
      begin    
        FieldByName (Champ2).AsInt64 :=DetailUNITE_GEST.AsInt64;
        FieldByName (Champ3).AsString:=detailART_LIB.AsString;
        FieldByName (Champ4).AsFloat:=1;    
      end
      else begin
        FieldByName (Champ2).AsInt64  :=0;
        FieldByName (Champ3).AsString:='';
        FieldByName (Champ4).AsFloat:=0;
      end;
      Post;
    end;
    end;
    Enfin moi, je fais comme ça...
    Bidouilleuse Delphi

Discussions similaires

  1. utiliser une chaine comme variable
    Par Pitrivief dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/11/2009, 21h43
  2. Comment faire un explode sur une chaine comme suit ?
    Par sebnutt dans le forum Langage
    Réponses: 3
    Dernier message: 07/06/2006, 11h59
  3. [Tableaux] Chaine contenant des noms de variables
    Par novices dans le forum Langage
    Réponses: 6
    Dernier message: 06/04/2006, 23h33
  4. [debutant]fonction "split" avec une chaine comme m
    Par EpOnYmE187 dans le forum Débuter
    Réponses: 2
    Dernier message: 07/11/2005, 22h46
  5. [Utilier une table comme un tampon]
    Par Straahd dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 01/09/2005, 20h27

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