Bonjour à tous !

Je suis étudiant en L2 de maths et j'ai un problème assez insoluble (pour moi) en Pascal.

Voila mon problème :

J'utilise ces types :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
type
   TListeRec		 = ^T_listeDefAux;
   T_listeDefAux	 = record
			      e	: pointer;
			      s	: TListeRec
			   end;	
 
type TMCreuse=record
         largeur:integer;
         hauteur:integer;
         Val_maj:pointer;
         cases:TListeRec
Jusque là ça va !

Mais ça se complique sur un code comme celui ci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
var
 aux:T_listeDefAux;
 abscisse:integer;
 MC:TMcreuse;
 
begin
 aux:=MC.cases^;
 abscisse>aux.e^.abscisse
end;
(en supposant que MC.cases<>NIL évidemment ! )

En effet, le problème vient du fait que aux.e est défini comme un pointeur générique et lorsqu'on cherche à utiliser aux.e^.abscisse, le compilateur provoque une erreur même si on a effectivement assigné à aux.e^ un enregistrement avec abscisse.

Comment régler ce problème ?

En gros, pour faire simple. J'ai un pointeur générique auquel j'assigne un enregistrement avec comme "sous valeur" abscisse (et d'autres choses). Comment faire pour utiliser e^.abscisse ? Le compilateur ne "voit" pas que dans le e^, il y a bien un enregistrement avec abscisse.

Je ne suis pas sûr d'être clair... Mais si vous comprennez, , je veux bien de l'aide, parce que là...

Merci !

PS : c'est pour un projet dans le module "Structures de données" de L2 Maths Fondamentales. L'idée est de créer un tableur en utilisant les matrices creuses. (matrices avec une valeur majoritaire et quelques valeurs modifiées)