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 :

[Delphi 2005 Perso] In avec tableau dynamic


Sujet :

Delphi

  1. #1
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut [Delphi 2005 Perso] In avec tableau dynamic
    Bonjour
    Voila, je souhaiterais utiliser le mot clef "IN" pour tester la presence d'une chaine dans un tableau de chaine, hors cela ne marche que si je fait reference a un tableau non ouvert.
    Je suis surement pas tres claire donc voila un exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.Button3Click(Sender: TObject);
    Var TmpList: Array Of String;
        i:Integer;
    begin
         SetLength(TmpList,6);
         For i := 0 to 5 Do TmpList[i] := inttostr(i);
     
         If '5' In TmpList Then edit3.Color := clred Else edit3.Color := clwhite;
         If '5' In ['1','2','3','4','5','6'] Then edit3.Color := clred Else edit3.Color := clwhite;
     
     
    end;
    Avec le premier if il se produit l'erreur suivante
    [Erreur] essai.pas(68): E2015 Opérateur non applicable à ce type d'opérande

    Par contre le 2eme If ne pose aucun probleme.

    N'y a t il aucun moyen de contourné ceci ou est ce moi qui fait une erreur tout betement ?
    Sur tout les site ou je suis aller et qui parler de In, celui ci etait utilisé soit dans une boucle For soit avec un tableau fixe, y compris dans l'aide.

    Merci du coup de main
    Qwaz

  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 266
    Points
    3 266
    Par défaut
    Bonjour,

    le 2eme If ne pose aucun probleme.
    C'est normal vu qu'il porte sur la recherche d'un caractère dans un ensemble de caractères.

    Par contre il est normal que le 1er if plante car il cherche à identifier la présence d'un caractère dans un tableau de chaines de caractères.
    Et même dans un tableau non ouvert cela m'étonnerait que ça marche.

    Parade : Pour trouver la présence d'une caractère '5' par exemple dans un tableau de n chaines il faut faire dans une boucle maChaine:=Tableau[i]; puis if pos('5',maChaine)>0 then edit3.Color:=tagada.

    Ce n'est pas parceque in veut dire dans qu'il agit comme une baguette magique pour retouver n'importe quoi dans n'importe qu'elle structure. (dommage!)

  3. #3
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Merci pour la reponse rapide
    Je comprend l'erreur que je fait en recherchant un char dans une liste de string, par contre je ne cherchais pas a realisé cela, je voulais chercher une string dans un tableau de chaine.

    Mais meme comme ca ca ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.Button3Click(Sender: TObject);
    Var TmpList: Array Of String;
        TmpStr: String;
        i:Integer;
    begin
         SetLength(TmpList,6);
         For i := 0 to 5 Do TmpList[i] := inttostr(i)+'5';
         TmpStr := '55';
         If TmpStr In TmpList Then edit3.Color := clred Else edit3.Color := clwhite;
         //If '5' In ['1','2','3','4','5','6'] Then edit3.Color := clred Else edit3.Color := clwhite;
     
     
    end;

  4. #4
    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 266
    Points
    3 266
    Par défaut
    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
    procedure TForm1.Button3Click(Sender: TObject);
    Var TmpList: Array Of String;
        TmpStr: String;
        i:Integer; ok : boolean;
    begin
         SetLength(TmpList,6);
         For i := 0 to 5 Do TmpList[i] := inttostr(i)+'5';
         TmpStr := '55'; ok:=false;     
         for i:=0 to 5 do
         begin //If TmpStr In TmpList Then edit3.Color := clred Else edit3.Color := clwhite;
               if pos(TmpStr,TmpList[i])>0 then ok:=true;     
         end;     
         if ok then edit3.Color := clred Else edit3.Color := clwhite;
    end;
    ... cela devrait marcher.

  5. #5
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    lol ok ... ca je savais faire...
    Je voulais juste mieux comprendre le fonctionnement de IN

    Merci pour le ton temps en tous cas
    Aller bonne journée
    qwaz

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Points : 754
    Points
    754
    Par défaut
    In s'utilise avec les collections

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

Discussions similaires

  1. delphi 2005 perso probleme avec ADO
    Par corvington dans le forum Bases de données
    Réponses: 1
    Dernier message: 16/03/2006, 18h23
  2. (Problème) Utilisation de l'API mySQL [Delphi 2005 Perso]
    Par will-scs dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/08/2005, 18h26
  3. composants de delphi 2005 perso
    Par aem_ dans le forum Composants VCL
    Réponses: 1
    Dernier message: 02/08/2005, 14h26
  4. Réponses: 3
    Dernier message: 31/07/2005, 22h41

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