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 :

[D5]Tableau dynamique -> Types incompatibles?


Sujet :

Langage Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 31
    Points : 27
    Points
    27
    Par défaut [D5]Tableau dynamique -> Types incompatibles?
    Bonjour,

    J'ai ce code là qui ne veut pas compiler et je ne sais pas pourquoi il me fait un:

    Types Incompatibles

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TBDD.remplir_tableau_avancement(p_tableau: array of string);
    begin
      SetLength(p_tableau,4);
    end;
    Par contre le code suivant compile

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TBDD.remplir_tableau_avancement;
    var
    p_tableau: array of string;
    begin
      SetLength(p_tableau,4);
    end;
    Quel est le problème dans le premier cas? J'y perds mon latin.

    Merci pour vos réponses

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 875
    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 875
    Points : 11 365
    Points
    11 365
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    type 
      Tp_tableau: array of string;
     
    procedure TBDD.remplir_tableau_avancement(p_tableau: Tp_tableau);
    begin
      SetLength(p_tableau,4);
    end;
    devrait résoudre le problème.

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    dans le premier cas c'est un tableau "ouvert", dans le second cas un tableau "dynamique"...oui je sais ils sont déclarés de la même façon, mais dans le premier cas c'est un type de paramètre alors que dans le second c'est un type de variable, là est toute la nuance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    type
      TArrayOfString = array of string; // tableau dynamique
     
    procedure TBDD.remplir_tableau_avancement(var p_tableau: TArrayOfString);
    begin
      SetLength(p_tableau,4);
    end;
    j'ai ajouté également "var" car je suppose que tu veux un paramètre par adresse et non par valeur.

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 764
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 764
    Points : 13 386
    Points
    13 386
    Par défaut
    Le premier code n'est pas un tableau dynamique, mais un tableau ouvert

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 31
    Points : 27
    Points
    27
    Par défaut
    Je vous remercie, tourlourou, Paul Toth, et Andnotor, je comprends maintenant que j'ai confondu les tableaux ouverts et dynamiques!

    Merci à tous

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    C'est un piège classique !

    Paramètres (Delphi) - Paramètres tableau, tu as un article similaire dans le HLP

    A Vérifier dans ton D5, si tu as l'unité types, tu as quelques types de tableaux prédéfinis dont TStringDynArray

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/11/2011, 20h53
  2. tableau dynamique de type void *
    Par Pirion dans le forum C
    Réponses: 7
    Dernier message: 18/11/2006, 12h34
  3. Tableau dynamique - 2 types
    Par _ChToM_ dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 03/10/2006, 18h51
  4. [VBA Excel] Un tableau dynamique dans un type utilisateur?
    Par cyber_N dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/07/2006, 19h51
  5. Problème de "Type incompatible" avec tableau et Vector
    Par pat-trix dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 07/07/2006, 23h42

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