Salut

J'ai programmé l'unité ci-après mais je ne n'arrive pas a utiliser celle-ci dans le programme principal.
J'ai le message suivant : "Type mismatch" lorque j'appelle une fonction (ou procédure) de l'unité.
Par ailleurs, les déclarations des variables de l'unité doivent correspondre exactement à ce que l'on prévoit d'utiliser dans le programme principal ?
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
Unit FILOU ;
 
Interface
    Const longmax = 10 ;
             Nmax = 4 ;
    Type Fifo = record
     tab : Array [1..longmax] of string;
sommet : 0..Nmax ;
end;
 
Procedure retirer (var Elt: string;var F : Fifo) ;{renvoie l’élément pointé par tête et diminue tête d’une unité. }
Procedure ajouter (var Elt : string ; var F : Fifo);{{ajoute dans le tableau dans la case pointée par
 fin un élément et tête augmente d’une
      unité. }
Procedure premier (var Elt: string; P : Fifo );{fournit une copie de l’élément pointé par tête (la file reste intacte)}
Function Est_vide (P: Fifo): boolean ;
 
IMPLEMENTATION
    Procedure retirer (var Elt : string ; var F : Fifo); {condition initialiser sommet a Nmax}
 
      Begin
      	If F.sommet = 0  then F.sommet := Nmax;  {reponse a la condition}
      	  ELT := F.Tab[F.sommet] ;    {renvoit element pointe par tete}
      	  F.sommet := F.sommet -1 ;   {diminue tete de 1 unite}
    F.Tab[F.sommet + 1]:=' ';         {retire element pointe }
 
     end;
   Procedure ajouter  (var Elt: string ; var F: Fifo ); {Initialiser sommet a 0 }
    var  Fi: Fifo ;  {tableau de sauvegarde  }
        a , l : integer     ;   {variable d'incrementation }
     begin
     	    If F.sommet = Nmax then F.sommet := 0 ;       {Initialiser sommet a 0 }
     	    {sauvegarder le contenu du tableau f dans Fi (tableau interne)}
     	    For l := F.sommet to Nmax  do  Fi.Tab[l] := F.Tab[l] ;
     	    { decale le contenu du tableau d'une unité}
     	    For a := F.sommet to Nmax do F.tab [a + 1 ]:= Fi.tab[a] ;
 
     	    	F.sommet	:= 1   ; {Pointeur en fin }
     	    F.tab[F.sommet] := elt ; {ajoute element a l'espace pointe }
     end;
 
 	Procedure  premier  (var Elt: string ; P : fifo);
 	 var  Sommeti : 0..20 ;  {variable de sauvegarde de sommet}
 
 	  Begin
 	      sommeti := P.sommet ;
 	      P.sommet := Nmax ;             {pointe tete}
 	      Elt      := P.Tab[P.sommet] ; {renvoit element pointe par tete}
 	      P.sommet := sommeti ;
 	  end;
Function  Est_vide (P : fifo ): boolean ;
  var i: integer ;
      s: string ;{variable de sauvegarde de contenu de tab[i] }
 
   Begin
   	   i := -1 ;  {initialise i à -1 }
   	   s := ' ';  {fait le vide dans s }
   	   Repeat  	          { scanne le file du debut a l fin}
   	    i := i + 1 ;     {incrementer i}
 	    	s := P.Tab[i] ;  { introduit le contenu du tableau dans s  afin de proceder o test }
 	     Until  (s <> ' ') or ( i >= Nmax + 1 ); {sortir si contenu de s n'est pas vide ou
 	     si variable i depasse la longeur de la file }
 
 	    If i >= Nmax + 1  then  Est_vide := true  {si i > longmax d la lfile alors file est vide}
 	     else   Est_vide := false ;                {sinon file non vide }
 	 End ;
 
BEGIN
END.
Comment déclarer les variables du programme principal pour utiliser cette unité, dans le cas où on veut ajouter un élément entré par l'utilisateur dans un tableau ?
Un exemple de programme utilisant cette unité sera le bienvenu.


........................................................................MERCI D'AVANCE.............................................................................