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 :

Comment détecter si un tableau est vide ?


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 22
    Points : 23
    Points
    23
    Par défaut Comment détecter si un tableau est vide ?
    Bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function MaFonction(const KeyValues: array of const):boolean;
    var i:integer;
    begin
       for i:=0 to High(keyValue) do begin
     
    //etc..

    Je n'arrive pas à déceler que le tableau (keyValues) est vide!!!

    L'appel de MaFonction(['']) fait planter l'application car
    High(keyValues) me retrourne 0



    merci

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 299
    Points
    11 299
    Billets dans le blog
    6
    Par défaut
    utilise Length(KeyValues)
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    L'appel de MaFonction(['']) fait planter l'application car

    length(keyValues) me retrourne 1;

    j'aimerais mieux 0

  4. #4
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    normal [''] est un tableau de constante contenant un element : une chaine vide.

    Pour detecter les tableaux vides, ecrit plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If KeyValues = [] Then ...;
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If KeyValues = [] Then ...;
    Erreur à la compilation
    "Incompatible types"

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 299
    Points
    11 299
    Billets dans le blog
    6
    Par défaut
    pour lui passer un tableau vide, tu dois le faire par variable, pê :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure test;
    function bidon(const t : array of const) : boolean;
    begin
     Result := False;
    end;
    var
     vide : array of TVarRec;
    begin
     bidon(['']);
     bidon(vide);
    end;
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    pour lui passer un tableau vide, tu dois le faire par variable, pê :
    Je ne veux pas passer un tableau vide. C'est que je ne sais pas si c'est vide ou pas; je peux avoir par exemple
    Je me rend compte que la fonction plante lorsque je veux lire la contenue
    KeyValue[i]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for i:=0 to High(keyValue) do begin
     
                case KeyValue[i].VType of
     
                    vtInteger    : ValeurParam:=inttostr(keyValue[i].vinteger);
     
                    vtAnsiString :  ValeurParam:=keyValue[i].vPchar;

    Si je rajoute ce code, c'est ok
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        vtAnsiString : if keyValue[i].vPchar<>nil then 
                                ValeurParam := keyValue[i].vPchar 
                            else 
                                ValeurParam:='';

    Ca va aller pour moi!

    merci de vos réponses

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

Discussions similaires

  1. comment tester si un tableau est vide
    Par huître dans le forum Débuter
    Réponses: 5
    Dernier message: 11/05/2015, 22h15
  2. Comment savoir si un tableau est vide ?
    Par ram-0000 dans le forum Langage
    Réponses: 2
    Dernier message: 14/02/2014, 09h14
  3. [XL-2010] comment demander si le tableau est vide?
    Par awa123 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/12/2013, 23h49
  4. [PHP 5.0] Comment faire quand un tableau est vide
    Par pierrot10 dans le forum Langage
    Réponses: 2
    Dernier message: 29/08/2010, 01h17
  5. Comment verifier si un tableau est vide
    Par Ceubex dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/01/2010, 16h12

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