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...