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 :
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 var Dalles:array [1..PLATEAU_COLONNES,1..PLATEAU_LIGNES]of TDalle;
En fait si j'enlève la ligne
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;
Ç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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dalles[i,j]:=ProxyDalle;
A la compilation, pas de souci.
Mais à l'exécution, il me fait une 'Erreur abstraite' sur la création de l'objet GLScene
Hors cette partie de code fonctionne parfaitement quand j'assigne pas la variable ProxyDalle au tableau.
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;
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 :
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Dalles[i,j]:=TDalle.create(DummyReference,LibraryDalles);
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...
Partager