billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 2014
-
9 avril 2004 à 18:00
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 2013
-
9 avril 2004 à 20:48
type dessin_3D=object
numero : integer;
nombre_points : integer;
nombre_faces : integer;
points : array of t_point;
faces : array of t_face;
puis, je definit une variable:
cube : dessin_3D
et je chercher a placer une valeur dans coord_x, j'essaie :
cube.points[0].coord_x := 0.1 ;
Et delphi me sort une erreur d'adressage , (de violation de je c pas quoi !!!)
Alors j'ai peut etre une erreur, ou peut etre que je dois definir de l'espace pour ecrire dedans ( je connais le nombre de points mais je c pas alloué de l'espace pour mes tableaux).
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 9 avril 2004 à 18:57
L'utilisation du mot clé Object est à déconseiller. Elle n'est maintenue que pour des raisons de compatibilité ascendante. A partir de Delphi 8, ce mot clé n'est plus reconnu.
Je pense que, en fait, tu veux utiliser des record. Remplace Object par Record et tout devrait rentrer dans l'ordre.
Pour info, Object avait à peu près le même rôle sous Turbo Pascal que le mot Class sous Delphi.
Tu comprends mieux que, ne créant pas d'objet avant de l'utiliser, Delphi déclenche une exception du type EAccessViolation (zone mémoire non réservée, pointeur non initialisé).
May Delphi be with you
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 9 avril 2004 à 19:39
Merci beaucoup , je v essayer !!!
Je voulais juste savoir vu que tu as répondu a pas mal de mes questions (et je t'en remercie fortement) , quel est la différence entre une structure et un object ???
Et comment on appelle une structure sous delphi et un objet.
Je pense que l'on appelle un objet avec Record vu que tu me l'as fait remplacer, non ???
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 9 avril 2004 à 19:52
Apparement, ca ne marche pas meme qd je remplace les objets par des records !!!
Qd j'execute, Delphi me dit :
" le projet a provoque une classe d'exception. EAccessViolation avec le message 'Violation d'accès à l'adresse 0044F28D dans le module'. Ecriture à l'adresse 0000000C'. Processus stoppé !!!
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 9 avril 2004 à 20:48
Je pensais que tu savais que tu devais dimensionner tes tableaux avant de les utiliser !
Donc, voici le code qui fonctionne :
type
GLfloat = Double;
t_point = record
coord_x: GLfloat;
coord_y: GLfloat;
coord_z: GLfloat;
end;
t_face = record
coord_x: GLfloat;
coord_y: GLfloat;
coord_z: GLfloat;
end;
dessin_3D = record
numero: integer;
nombre_points: integer;
nombre_faces: integer;
points: array of t_point;
faces: array of t_face;
end;
J'ai déclaré un alias de type GLfloat pour pouvoir vérifier que tout se passait bien, autant à la compilation qu'à l'exécution et te donner un code qui marche.
Ensuite, avant d'utiliser tes tableaux, tu dois les dimensionner
Exemple avec des tableaux de dix éléments chacun :