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 :

Récupérer les bonnes valeurs


Sujet :

Delphi

  1. #1
    AT
    AT est déconnecté
    Membre régulier Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Points : 85
    Points
    85
    Par défaut Récupérer les bonnes valeurs
    Bonsoir
    Voici mon code qui ajoute dans une lixtBox des éléments de 3 tableaux de record

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    const t:array[0..106]of record
            ref   : String;
            value : String;...........
    const t2:array[0..93]of record
            ref2   : String;
            value2 : String;...........
    const t3:array[0..93]of record
            ref2   : String;
            value2 : String;..............
    Ajout dans la ListBox
    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
     
    s:=edit1.Text;
      for i:=Low(t1) to High(t1) do
        begin
         r:=t1[i].ref;
         if pos(s,r)<>0  then
          begin
          ListBox5.Items.Add(r);
          end;
        end;
       for i:=Low(t2) to High(t2) do
        begin
         r2:=t2[i].ref2;
         if pos(s,r2)<>0  then
          begin
          ListBox5.Items.Add(r2);
          end;
        end;
       for i:=Low(t3) to High(t3) do
        begin
         r3:=t3[i].ref3;
         if pos(s,r3)<>0  then
          begin
          ListBox5.Items.Add(r3);
           end;
        end;
    Je recupere dans une autre listBox dans l'événement OnClick de la listBox

    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
     
    procedure TForm1.ListBox5Click(Sender: TObject);
    begin
    if sender is TListBox Then
      begin
      with t3[(sender as TListBox).ItemIndex] do
        begin
        StatusBar5.SimpleText:='E° = '+ value3+'V';
        end;
      with t2[(sender as TListBox).ItemIndex] do
        begin
        StatusBar5.SimpleText:='E° = '+ value2+'V';
        end;
      with t[(sender as TListBox).ItemIndex] do
        begin
        StatusBar5.SimpleText:='E° = '+ value+'V';
         end;
      end;
    end;
    Le problème: Les valeurs que je recupere(value,value2 et value3) dans la ListBox5 ne correspondent pas aux valeurs dans mes 3 tableaux de constantes

    merci
    AT

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Salut,

    Les valeurs que je recupere(value,value2 et value3) dans la ListBox5 ne correspondent pas aux valeurs dans mes 3 tableaux de constantes
    ... c'est normal, car lorsque après avoir fait ListBox5.Items.Add(r); tu ajoutes les suivants avec ListBox5.Items.Add(r2); les valeurs en question se trouvent dans des ItemIndex d'indice décalé par rapport à l'indice correspondant du tableau t2 ce qui fait que les lignes du type with t2[(sender as TListBox).ItemIndex] do tu récupères de fausses valeurs, ... et idem pour t3.

    Dans ta listBox les Items d'indice :
    - [0..106] correspondent à t1[0..106]
    - [107..200] correspondent à t2[0..93]
    - [201..294] correspondent à t3[0..93]

    ... faut donc de tenir compte du décalage :
    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
     
    var    ItemDuClick : integer;
    begin
       ...
       ItemDuClick:=(sender as TListBox).ItemIndex;  
       ...
       if ItemDuClick <= 106 alors les indices correspondent à ceux de t1
       ...
       if (ItemDuClick > 106) and (ItemDuClick <=  200) then //les indices correspondent à ceux de t2
       with t2[(sender as TListBox).ItemIndex - 107] //< -107 : prise en compte du décalage
          do StatusBar5.SimpleText:='E° = '+ value2+'V';
     
        if (ItemDuClick > 200) and (ItemDuClick <=  294) then //les indices correspondent à ceux de t3
       with t3[(sender as TListBox).ItemIndex - 201] //< -201: prise en compte du décalage
         do StatusBar5.SimpleText:='E° = '+ value3+'V';
    A+
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  3. #3
    AT
    AT est déconnecté
    Membre régulier Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Points : 85
    Points
    85
    Par défaut
    En effet j'avais vu le decalage et je cherchais la solution la + adaptée



    Je vais tester ta reponse

    AT

Discussions similaires

  1. Récupérer les bonnes valeurs d'un submit
    Par khamett dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 12/07/2011, 16h53
  2. Requete qui n'affiche pas les bonnes valeurs
    Par snips67 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 29/01/2010, 10h54
  3. [MySQL] Récupérer les bonnes réponses d'un formulaire
    Par ghyosmik dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/07/2008, 11h58
  4. [lsqcurvefit] Comment calculer les bonnes valeurs ?
    Par DOC doc doc dans le forum MATLAB
    Réponses: 0
    Dernier message: 13/05/2008, 10h59
  5. [SQL] Pb Mysql n'insert pas les bonnes valeur dans la bdd
    Par potao dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 11/02/2007, 03h12

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