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 :

probleme ansiindexstr (hors limite (-1))


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 30
    Points : 16
    Points
    16
    Par défaut probleme ansiindexstr (hors limite (-1))
    Salut !

    J'utilisé cette fonction bien pratique selon les conseils trouvés dans la FAQ delphi, mais voila a chaque fois que ma listbox est vide ou que rien n'est selectionné, j'ai une erreur "indice de liste hors limite (-1)" Pourtant je lui ai bien spécifié ce que je voulais (pour le reste ca fonctionne parfaitement)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    case ansiindexstr(listbox2.items[selec], [La ya mes chaines...]
    // puis toutes les réponses jusqu'a la fin
       ...
     
       19: begin
           diff := minutespan(timefab, now);
           totalfab := inttostr(trunc(diff));
           end;
       -1: showmessage('Selectionnez un nom !');
       end;
    end;
    Alors la vraiment je seche! je ne vois vraiment pas ce que j'ai fait de mauvais... Merci d'éclairer ma lanterne!

  2. #2
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Simplement, lorsque tu fais listbox2.items[selec] c'est déjà trop tard si selec = -1.

    Il te faut faire un test avant de faire ton case of :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if selec>-1 then
      case [..........]
    else
      begin
        // Rien n'est selectionné dans la listBox
      end

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 30
    Points : 16
    Points
    16
    Par défaut
    Bon ca marche comme ca je te remercie
    Ceci dit je ne comprend toujours pas pourquoi ca ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    uses StrUtils;
    ...
    case AnsiIndexStr(Str, ['Chaîne1', 'Chaîne2', 'Chaîne3']) of
      0 : // Str = 'Chaîne1'
      1 : // Str = 'Chaîne2'
      2 : // Str = 'Chaîne3'
      -1 : // Str ne vaut aucune de ces trois chaînes
    end;
    C'est l'exemple de la FAQ, et d'apres ce que j'en avait compris la derniere ligne servait justement a indiquer quoi faire lorsque str (donc mon listbox2.items[selec]) est vide... Alors pourquoi dans mon cas c pas bon?

  4. #4
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Citation Envoyé par quarkz
    C'est l'exemple de la FAQ, et d'apres ce que j'en avait compris la derniere ligne servait justement a indiquer quoi faire lorsque str (donc mon listbox2.items[selec]) est vide... Alors pourquoi dans mon cas c pas bon?
    Car il faut distinguer deux cas (pour l'ex AnsiIndexStr(Str, ['Chaîne1', 'Chaîne2', 'Chaîne3'])):
    1. Si Str n'est pas dans la liste, AnsiIndexStr te renvoie bien -1
    2. Si Str de le récupère d'un item de ta listBox et que tu lui donne comme indice -1, c'est trop tard !
      Lors du GetItem(-1), l'indice -1 est hors de porté donc exception
      S'il y a exception, Str ne sera pas rempli et on arrete tout: on sort de la procédure


    Et toi, c'est bien le cas 2.

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 30
    Points : 16
    Points
    16
    Par défaut
    Okiiii! je vois tout a fait ^^

    Je te remercie beaucoup!

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

Discussions similaires

  1. [débutant] erreur "indice de liste hors limites(1)"
    Par lidouka dans le forum Langage
    Réponses: 2
    Dernier message: 13/12/2005, 14h31
  2. [TListBox] Problème "Indice hors limite (-1)"
    Par renorx dans le forum Composants VCL
    Réponses: 16
    Dernier message: 08/12/2005, 17h47
  3. Indice de liste hors limite !!! Report
    Par EssaiEncore dans le forum Langage
    Réponses: 1
    Dernier message: 29/11/2005, 10h00
  4. indice de grille hors limite....
    Par steph_1 dans le forum Langage
    Réponses: 12
    Dernier message: 02/08/2005, 11h18
  5. Erreur "indice hors limite(0)" non comprise
    Par Bruno1905 dans le forum Bases de données
    Réponses: 9
    Dernier message: 10/06/2005, 12h02

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