IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Turbo Pascal Discussion :

[TP] Problème d'utilisation d'une unité


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Par défaut [TP] Problème d'utilisation d'une unité
    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.............................................................................

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut Re: Unite en PASCAL
    Citation Envoyé par altruist
    j'ai le message suivant " Type mismatch" lorque j'appelle une fonction (ou procedure) de l'unite.
    A quelle ligne ? Ca veut dire que tu n'utilises pas le bon type de données.

    Citation Envoyé par altruist
    Par ailleurs les declarations des variables de l'unité doit correspondre exactement a ce que l'on prevoit d'utiliser dans le programme principale ?
    Oui c'est le principe de la programmation en général...

    Citation Envoyé par altruist
    comment declarer les variables du programme principale pour utiliser cette unité,dans le cas ou on veut ajouter un element entrer par l'utilisateur dans un tableau ?
    Il faut mettre le mot clé uses avant toute chose, puis tu déclares tes variables normalement : var f: fifo.... Pour ajouter un élément, ajouter("salut", f).

    D'ailleurs c'est assez bizarre comme implémentation, pourquoi ne pas utiliser les objets ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Par défaut
    D'ailleurs c'est assez bizarre comme implémentation, pourquoi ne pas utiliser les objets ?
    C'est tout simplement parceque je n'ai pas de connaissance la-dessus..

    Merci pour votre d'aide j'ai enfin compris l'erreur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant(e)] JSP utilisation static....une autre
    Par tcgenrecom dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 01/03/2004, 15h27
  2. utilisation d'une variable globale
    Par ZZ dans le forum ASP
    Réponses: 3
    Dernier message: 03/12/2003, 19h11
  3. Utilisation d'une variable sur plusieurs unités
    Par Yamaneko dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2003, 11h23
  4. Utilisation d'une dll écrite en delphi 5 dans VB6
    Par Jean-Louis dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2002, 09h19
  5. Réponses: 4
    Dernier message: 05/06/2002, 14h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo