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 :

initialisation tableau 3D


Sujet :

Delphi

  1. #1
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut initialisation tableau 3D
    Bonjour,

    J'arrive pas à trouver comment initialiser un tableau à trois dimensions dans mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    const
      k_TYPE1 : array[0..255] of integer = (278,33,72,60,11,etc : pour 255 valeurs);
     
       k_Family = (Famille1, Famille2, Famille3);
       k_Style = (Normal, Faible, Fort);
     
    var
       p_Game: array[Family, Style, 0..255] of integer; 
     
    begin
      p_Game[Famille1, Normal] := k_TYPE1; // erreur type incompatible
      ...
    J'ai une erreur de type incompatible lors de l'affectation p_Game, delphi ne nous permet pas de faire ce genre d'affectation ?
    Merci d'avance

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 92
    Points : 159
    Points
    159
    Par défaut
    bonjour,

    avec la syntaxe suivante, c'est ok

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    const
      k_TYPE1 : array[0..4] of integer = (278,33,72,60,11); // à mettre sur 255 avec les valeurs
    type
       k_Family = (Famille1, Famille2, Famille3);
       k_Style = (Normal, Faible, Fort);
     
    var
      p_Game: array[k_Family, k_Style, 0..255] of integer;
    begin
      p_Game [Famille1, Normal, 0] := k_TYPE1[0]; 
      p_Game [Famille1, Normal, 15] := k_TYPE1[1]; 
      p_Game [Famille1, Normal, 32] := k_TYPE1[2];
    ...
    sauf que je suppose que cela ne corresponds pas à ce que tu voulais.

    le problème de l'erreur est la suivante :
    du définit pour p_game , une famille,un style, un entier, et tu dis que tu veux mettre un entier
    du affecte à pgame, une famille, un style et tu veux lui mettre un tableau d'entier.

    est ce que tu comprends mieux ton erreur ?

  3. #3
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 857
    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 857
    Points : 11 291
    Points
    11 291
    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
    8
    9
    10
    11
    const
      k_TYPE1 : array[0..3] of integer = (278,33,72,60);
    type
       k_Family = (Famille1, Famille2, Famille3);
       k_Style = (Normal, Faible, Fort);
     
    var
       p_Game: array[k_Family, k_Style, 0..3] of integer;
     
    begin
      p_Game[Famille1, Normal] := k_TYPE1;
    fonctionne sous CodeTyphon (Lazarus)

    Nota : k_TYPE1 : array[0..255] of integer = (278,33,72,60,11,etc : pour 256 valeurs); : origine de l'erreur ?
    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 !

  4. #4
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut
    Citation Envoyé par jeromelef2 Voir le message
    bonjour,

    avec la syntaxe suivante, c'est ok

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    const
      k_TYPE1 : array[0..4] of integer = (278,33,72,60,11); // à mettre sur 255 avec les valeurs
    type
       k_Family = (Famille1, Famille2, Famille3);
       k_Style = (Normal, Faible, Fort);
     
    var
      p_Game: array[k_Family, k_Style, 0..255] of integer;
    begin
      p_Game [Famille1, Normal, 0] := k_TYPE1[0]; 
      p_Game [Famille1, Normal, 15] := k_TYPE1[1]; 
      p_Game [Famille1, Normal, 32] := k_TYPE1[2];
    ...
    sauf que je suppose que cela ne corresponds pas à ce que tu voulais.

    le problème de l'erreur est la suivante :
    du définit pour p_game , une famille,un style, un entier, et tu dis que tu veux mettre un entier
    du affecte à pgame, une famille, un style et tu veux lui mettre un tableau d'entier.

    est ce que tu comprends mieux ton erreur ?
    En fait, je définis pour une famille et un style, un tableau d'entier et c'est ce que je cherche à affecter.
    Il faut bien lire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    const
      k_TYPE1 : array[0..255] of integer = (278,33,72,60,11,etc : pour 256 valeurs);



    Citation Envoyé par tourlourou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    const
      k_TYPE1 : array[0..3] of integer = (278,33,72,60);
    type
       k_Family = (Famille1, Famille2, Famille3);
       k_Style = (Normal, Faible, Fort);
     
    var
       p_Game: array[k_Family, k_Style, 0..3] of integer;
     
    begin
      p_Game[Famille1, Normal] := k_TYPE1;
    fonctionne sous CodeTyphon (Lazarus)

    Nota : k_TYPE1 : array[0..255] of integer = (278,33,72,60,11,etc : pour 256 valeurs); : origine de l'erreur ?
    En fait, j'ai fait une erreur de frappe, j'aurais du mettre 256 valeurs, ce n'est malheureusement pas l'origine du problème.

    Merci pour votre aide

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 92
    Points : 159
    Points
    159
    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
     
    type
       k_Type = array[0..3] of integer ;
       k_Family = (Famille1, Famille2, Famille3);
       k_Style = (Normal, Faible, Fort);
    const
      k_TYPE1 : k_type = (278,33,72,60);
     
    var
       p_Game: array[k_Family, k_Style] of k_TYPE;
     
    begin
      p_Game[Famille1, Normal] := k_TYPE1;

  6. #6
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Ce que tu cherches, ne serait pas ça?
    (il faut déclarer un type commun pour les tableaux d'entier que tu veux affecter)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    type
      k_Type=array[0..3] of integer;
    const
      k_TYPE1 : k_Type = (278,33,72,60);
    type
       k_Family = (Famille1, Famille2, Famille3);
       k_Style = (Normal, Faible, Fort);
     
    var
       p_Game: array[k_Family,k_Style] of k_Type;
     
    begin
      p_Game[Famille1, Normal] := k_TYPE1;
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  7. #7
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut
    Désolé mais j'aurais du préciser que je vais avoir plusieurs définitions de contantes comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    const
      k_TYPE1 : array[0..255] of integer = (278,33,72,60,11,etc : pour 256 valeurs);
      k_TYPE2 : array[0..255] of integer = (12,6,27,etc : pour 256 valeurs);
      k_TYPE3 : array[0..255] of integer = (256 valeurs);
      ...
    Je ne peux donc pas faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p_Game: array[k_Family,k_Style] of k_Type;
    puisque je peux avoir aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      p_Game[Famille1, Normal] := k_TYPE2;
    // ou bien
      p_Game[Famille1, Normal] := k_TYPE3;
    // tout comme :
      p_Game[Famille1, Normal] := k_TYPE1;
    Je suis donc obligé de garder la définition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p_Game: array[k_Family, k_Style, 0..255] of integer;
    J'espère que je suis explicite.

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    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 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Je ne comprends pas ta réponse !
    La solution de Linkin est correcte et ta démonstration pour moi le confirme !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    type
      k_Type=array[0..255] of integer;
     
    const
      k_TYPE1 : k_Type = (278,33,72,60,11,etc : pour 256 valeurs);
      k_TYPE2 : k_Type = (12,6,27,etc : pour 256 valeurs);
      k_TYPE3 : k_Type = (256 valeurs);
      ...
    Tu confonds Type et Variable !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  9. #9
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Je ne comprends pas ta réponse !
    La solution de Linkin est correcte et ta démonstration pour moi le confirme !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    type
      k_Type=array[0..255] of integer;
     
    const
      k_TYPE1 : k_Type = (278,33,72,60,11,etc : pour 256 valeurs);
      k_TYPE2 : k_Type = (12,6,27,etc : pour 256 valeurs);
      k_TYPE3 : k_Type = (256 valeurs);
      ...
    Tu confonds Type et Variable !
    Bon sang, je me suis complétement perdu dans les définitions, j'ai effectivement mal suivi la solution de Linkin et de jeromelef2.
    Ok, merci à tous !

  10. #10
    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 : 54
    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 430
    Points
    28 430
    Par défaut
    tu peux sans doute faire plus simple avec une seule constate p_Game

    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
     
    type
      Tk_Type = array[0..4] of Integer;
      Pk_Type = ^Tk_Type;
     
      k_Family = (Famille1, Famille2{, Famille3});
      k_Style = (Normal, Faible, Fort);
      TGame = array[k_Family, k_Style] of Pk_Type;
     
    const
      k_TYPE1 : Tk_Type = (278,33,72,60,11); // à mettre sur 255 avec les valeurs
      k_TYPE2 : Tk_Type = (278,33,72,60,11); // à mettre sur 255 avec les valeurs
     
      p_Game: TGame = (
        ( // Famille1
          { Normal } @k_TYPE1,
          { Faible } @k_TYPE2,
          { Fort   } @k_TYPE1
        ),( // Famille2
          { Normal } @k_TYPE1,
          { Faible } @k_TYPE2,
          { Fort   } @k_TYPE1
        )
      );
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

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

Discussions similaires

  1. initialisation tableau : error C2099
    Par aymeric__ dans le forum MFC
    Réponses: 3
    Dernier message: 16/03/2006, 15h22
  2. Initialisation tableau
    Par reggae dans le forum C++
    Réponses: 9
    Dernier message: 19/02/2006, 22h16
  3. Initialisation tableau
    Par tutcrubo dans le forum C++
    Réponses: 4
    Dernier message: 12/01/2006, 23h00
  4. [Debutant] Initialisation tableau []
    Par Pumpkins dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 15/09/2004, 00h02
  5. Initialisation tableau
    Par poinclin dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 24/06/2004, 15h39

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