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 :

Assigner un objet à un tableau


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Juin 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2004
    Messages : 21
    Par défaut Assigner un objet à un tableau
    Bonjour,

    Je programme depuis peu en Delphi avec GLScene pour faire un peu joujou avec la 3D.
    Bref, j'ai créé une classe qui fait des "dalles".
    J'en ai 8 à gérer, je voudrais en faire un tableau.
    Bref je déclare un bête tableau bien fixe, bien simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var
       Dalles:array
    [1..PLATEAU_COLONNES,1..PLATEAU_LIGNES]of TDalle;
    Ensuite je l'utilise pour le remplir via une bète procédure :
    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
    25
    26
    27
    28
    29
    30
    //Procédure qui charge les dalles du plateau
    procedure TDataModule1.creerPlateau;
    var
       i,j:Integer;
       ProxyDalle:TDalle;
    begin
       //On crée la dalle principale
       DallePrincipale:=TDalle.create(DummyReference,LibraryDalles);
       DallePrincipale.setTextureName(TEXTURE_DALLE_PRINCIPALE_LIBELLE);
       DallePrincipale.setPosition(DALLE_PRINCIPALE_POSITION_X,
                                     DALLE_PRINCIPALE_POSITION_Y,
                                     DALLE_PRINCIPALE_POSITION_Z);
       DallePrincipale.setSize(DALLE_PRINCIPALE_WIDTH,DALLE_PRINCIPALE_HEIGHT,DALLE_PRINCIPALE_DEPTH);
       DallePrincipale.texturerCube();
    
       //On crée les huit dalles
       for i:=0 to PLATEAU_COLONNES-1 do
       begin
          for j:=0 to PLATEAU_LIGNES-1 do
          begin
             ProxyDalle:=TDalle.create(DummyReference,LibraryDalles);
             ProxyDalle.setTextureName(TEXTURE_VERSO_DALLE_LIBELLE);
             ProxyDalle.setPosition(DALLE_TAILLE*j,0.1,DALLE_TAILLE*i);
             ProxyDalle.setSize(DALLE_TAILLE,0.1,DALLE_TAILLE);
             ProxyDalle.texturerCube();
             Dalles[i,j]:=ProxyDalle;
          end;
       end;
    end;
    En fait si j'enlève la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dalles[i,j]:=ProxyDalle;
    Ça fonctionne très bien, je vois dans mon environnement 3D les huit dalles bien rangées et tout. Seulement, il ne me sera pas possible de les retrouver, donc le but est de stocker le pointeur ProxyDalle dans un tableau via cette ligne.
    A la compilation, pas de souci.
    Mais à l'exécution, il me fait une 'Erreur abstraite' sur la création de l'objet GLScene
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    constructor TGLCustomSceneObject.Create(AOwner: TComponent);
    begin
       inherited Create(AOwner);
       FMaterial:=TGLMaterial.Create(Self);
    end;
    Hors cette partie de code fonctionne parfaitement quand j'assigne pas la variable ProxyDalle au tableau.
    Je note que j'ai utilisé une variable ProxyDalle car j'ai eu exactement le même problème en assignant directement la création de la Dalle au tableau avec un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dalles[i,j]:=TDalle.create(DummyReference,LibraryDalles);
    Bref, pourquoi il veut pas mettre mon pointeur dans mon tableau, pourtant le type est le même, le tableau est bien vide. Pourquoi plante-t-il sur la création

    Je pense que c'est un truc tout bête mais j'ai eu beau chercher dans des tutos d'utilisation de tableaux, la plus part des gens assignent la variable au tableau directement...

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 964
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i:=1 to PLATEAU_COLONNES do
       begin
          for j:=1 to PLATEAU_LIGNES do
          begin

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Juin 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2004
    Messages : 21
    Par défaut
    Je vais me pendre et je reviens...
    Merci en tout cas pour la réponse, claire, net, précise...
    Je suis pas encore habitué aux erreurs Delphi...trop l'habitude du Java...
    Merci encore.

  4. #4
    Membre Expert
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Par défaut
    attention aux index :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    const
      PlaneCols = 8;
      PlaneRows = 8;
     
    var
      Dalles: packed record
        Main : TDalle;
        Childs : array [0..PlaneCols-1, 0..PlaneRows-1] of TDalle;
      end;
     
    procedure CreateDalles;
    var
       C, R : Integer;
    begin
       //On crée la dalle principale
       Dalles.Main:= TDalle.create(DummyReference, LibraryDalles);
       Dalles.Main.setTextureName(TEXTURE_DALLE_PRINCIPALE_LIBELLE);
       Dalles.Main.setPosition(DALLE_PRINCIPALE_POSITION_X,
                                     DALLE_PRINCIPALE_POSITION_Y,
                                     DALLE_PRINCIPALE_POSITION_Z);
       Dalles.Main.setSize(DALLE_PRINCIPALE_WIDTH, DALLE_PRINCIPALE_HEIGHT, DALLE_PRINCIPALE_DEPTH);
       Dalles.Main.texturerCube;
     
       //On crée les huit dalles
       for C := 0 to PlaneCols-1 do
       begin
          for R := 0 to PlaneRows-1 do
          begin
             Dalles.Childs[C, R] := TDalle.create(Dalles.Main, LibraryDalles);
     
             Dalles.Childs[C, R].setTextureName(TEXTURE_VERSO_DALLE_LIBELLE);
             Dalles.Childs[C, R].setPosition(DALLE_TAILLE*R, 0.1, DALLE_TAILLE*C);
             Dalles.Childs[C, R].setSize(DALLE_TAILLE, 0.1, DALLE_TAILLE);
             Dalles.Childs[C, R].texturerCube;
          end;
       end;
    end;
     
    procedure FreeDalles;
    var C, R: integer;
    begin
      Dalles.Parent.Free;
      for C := 0 to PlaneCols-1 do
        for R := 0 to PlaneCols-1 do
          Dalles.Childs[C,R].Free;
    end;
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

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

Discussions similaires

  1. Conversion d'un objet en tableau de Byte
    Par BassBeat dans le forum VB.NET
    Réponses: 5
    Dernier message: 26/02/2007, 21h01
  2. convertir un objet en tableau de byte
    Par hammag dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 12/10/2006, 14h12
  3. [POO] Assignation d'objet en php5
    Par jeff_! dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2006, 18h22
  4. [POO] Convertir un objet en tableau
    Par jbaudin dans le forum Langage
    Réponses: 3
    Dernier message: 22/03/2006, 17h50
  5. Declaration d objets en tableau
    Par Spin dans le forum Composants VCL
    Réponses: 6
    Dernier message: 16/03/2003, 23h18

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