Bonjour

Je viens de m'inscrire sur votre forum, je ne sais pas si c'est bien ici que je dois poster ma question ou non. Quoi qu'il en soit, j'ai un problème concernant mon projet que je dois rédiger en Pascal.
En effet, on doit manipuler des listes chaînées à-travers un document "voitures.dat", où les données sont de type "t_voiture".
J'arrive à compiler (si j'enlève question 4) sans erreur ; par contre, au moment d'exécuter je n'ai rien, pas la moindre trace de données qui doivent (normalement) s'afficher à l'ecran.
Dans "sous-programme question 4" j'ai
test.pas(104,13) Error: Incompatible types: got "Liste" expected "ShortString"
Pourriez-vous m'aider svp, c'est un coef assez important. x)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
PROGRAM principal; 		
 
//-----------------------------------------------STRUCTURE VOITURE-------------------------------------------------------------------------------------//
TYPE t_voiture = record			
		marque	: string[30];
		modele	: string[20];
		carb	: char;
		annee	: integer;
		prix	: integer;
end;
 
 
//----------------------------------------------------------------LISTE CHAINEE POUR MANIPULER LES INFOS DU FICHIER VOITURES.DAT-------------------------------------------//
type  
    Liste = ^Cellule;
    Cellule = record
        contenu: t_voiture; 
        suivant: Liste;   
end;
//---------------------------------------------------------------VARIABLES PROGRAMME PRINCIPAL----------------------------------------------------------------------//
VAR
	liste_voit	: Liste;
 
 
 
//----------------------------------------------------------------PROCEDURE QUI CHARGE EN MEMOIRE LES VOITURES (DANS LA LISTE CHAINEE)-------------------------------------//
 
PROCEDURE charge_infos (VAR liste_voit: Liste);     			 {sous programme de la question 1}
VAR
	fichVoit	: file of t_voiture;
	infos		: t_voiture;
 
BEGIN
	Assign (fichVoit, 'voitures.dat');
	Reset (fichVoit);
	while not Eof(fichVoit) do
		begin
			Read(fichVoit,infos);
			new(liste_voit);
 
			liste_voit^.contenu.marque 	:= infos.marque;
			liste_voit^.contenu.modele 	:= infos.modele;
			liste_voit^.contenu.carb   	:= infos.carb;
			liste_voit^.contenu.annee  	:= infos.annee;
			liste_voit^.contenu.prix   	:= infos.prix;
 
			liste_voit     		  	:= liste_voit^.suivant;
 
		end;
END;			
 
 
//----------------------------------------------------------------PROCEDURE AFFICHANT A L'ECRAN LES VOITURES DISPO A LA VENTE-----------------------------------------------//
											{sous programme de la question 2}
PROCEDURE affiche_voitures (VAR liste_voit: Liste);						
 
BEGIN			
 
		while (liste_voit <> nil) do
	   begin	
		writeln(liste_voit^.contenu.marque);
		writeln(liste_voit^.contenu.modele);
		writeln(liste_voit^.contenu.carb);   
		writeln(liste_voit^.contenu.annee);  
		writeln(liste_voit^.contenu.prix); 
 
		liste_voit := liste_voit^.suivant;
	   end
 
 
 
END;
 
//--------------------------------------------------------PROCEDURE AFFICHANT LE NOMBRE DE VOITURES EN FONCTION DU CARBURANT---------------------------------------------//
											{sous programme de la question 3}
 
FUNCTION  nombre_carb_recur (carb: char; liste_voit: Liste): integer;
 
BEGIN
	if (liste_voit = nil) then
		nombre_carb_recur:=0
	else
	if (liste_voit^.contenu.carb = carb) then
		nombre_carb_recur := 1 + nombre_carb_recur(carb, liste_voit^.suivant)
	else
		nombre_carb_recur := nombre_carb_recur(carb, liste_voit^.suivant);	
END;
 
//----------------------------------------------------------FONCTION AFFICHANT L'ANNEE ET RENVOIT L'ADRESSE MEMOIRE D'UN VEHICULE-----------------------------------------// 
											{sous programme de la question 4}
FUNCTION annee_adresse(liste_voit: Liste): string;									
 
VAR
	adr	: string;
  	annee	: integer;
BEGIN
	annee:=liste_voit^.contenu.annee;
 
	while(liste_voit <> nil) do
	begin
		if(liste_voit^.contenu.annee < (liste_voit^.suivant)^.contenu.annee) then
			begin
			annee := (liste_voit^.suivant)^.contenu.annee;
			adr   := liste_voit;
			end
		else	
			liste_voit := liste_voit^.suivant;
	end;
	annee_adresse:= adr;
	writeln('L''année de fabrication du vehicule le plus recent : ', annee);
END;	
 
 
 
 
//----------------------------------------------------------PROCEDURE QUI SUPRIMME L'ADRESSE DONNEE EN PARAMETRES -------------------------------------------------------// 
											{sous programme de la question 5}
PROCEDURE supprime_case_recur(adr: Liste; VAR liste_voit: Liste);	
VAR 
	ptr: Liste;
BEGIN	
	if (liste_voit <> nil) then
		if (liste_voit^.suivant = adr) then
			begin
			ptr := liste_voit;
			liste_voit   := liste_voit^.suivant;
			dispose(ptr)
			end
		else
			supprime_case_recur(adr, liste_voit^.suivant);
END;			
 
 
 
 
 
 
 
 
//-------------------------------------------------------------------PROGRAMME PRINCIPAL----------------------------------------------------------------------------------//			
 
 
 
 
BEGIN
 
	charge_infos (liste_voit);  
	affiche_voitures (liste_voit);
 
END.