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

Langage Pascal Discussion :

Affectation d'un enregistrement contenu dans un enregistrement


Sujet :

Langage Pascal

  1. #1
    Membre du Club
    Profil pro
    Developpeur
    Inscrit en
    Septembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Septembre 2004
    Messages : 114
    Points : 43
    Points
    43
    Par défaut Affectation d'un enregistrement contenu dans un enregistrement
    Bonsoir,

    Je suis débutant au niveau de Pascal et je rencontre quelques difficultés pour affecter directement un enregistrement passé dans une fonction.

    Je vous mets mon code pour que vous puisiez mieux visualiser mon problème, j'ai une unité d'arbre comme ceci (inspiré des exos du site :)) :

    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
     
    unit arbres;
     
    interface
     
    	type
    	  PNoeud = ^Noeud;
     
    	  Point = record
    		x:Integer;
    		y:Integer;
    	  end;
     
    	  Noeud = record
    		GH, DB: PNoeud;
    		coord: Point;
    		decoupage:string;
    	  end;
     
    	procedure ajouter(var liste: PNoeud; p: Point; decoupage:string);
    	procedure afficher(liste: PNoeud);
     
    implementation
    {...}
    Je l'utilise dans une autre unité :

    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
     
    unit decoupUni;
    interface
    uses arbres;
    var xInit,yInit:Integer;
     
    	procedure init(x:Integer;y:Integer);
    	procedure ajouter_point(var arbre:PNoeud;var p:Point);
     
    implementation
     
    	procedure init(x:Integer;y:Integer);
    	begin
    		xInit:=x;
    		yInit:=y
    	end;
     
    	procedure ajouter_point(var arbre:PNoeud;var p:Point);
    	var 
    	np : Noeud;
    	begin
    		{if arbre^.coord.x=Integer('0') and arbre^.coord.y=Integer('0') then}   
    		  np.coord = p;		  
    		  np.decoupage = 'axeY';		
        //else    
          //np.coord = p;
    		  //np.decoupage = 'axeX';
    	end;
     
    end.
    1°/ En compilant avec Free pascal, j'ai Error: operator is not overloaded (ligne : np.coord = p;). Je ne peux donc pas affecter un enregistrement à un autre enregistrement ? J'imagine que ca doit se faire plus rigoureusement que cela mais je ne vois pas

    2°/ Il y a des lignes en commentaire tout simplement car cela relevait aussi des erreurs, je souhaitais simplement vérifier si l'attribut x et y de l'enregistrement Point etait egal à 0 mais j'ai des erreurs : Error incompatibles types : got Boolean excepted LongInt !
    Pourtant je les convertis bien :-\


    Merci d'avance à ceux qui auront pris le temps de lire le post en entier et à ceux qui pourront m'aider .

    Louis

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Bonjour !
    Citation Envoyé par allserv Voir le message
    1°/ [B]En compilant avec Free pascal, j'ai Error: operator is not overloaded (ligne : np.coord = p. Je ne peux donc pas affecter un enregsitrement à un autre enregistrement ?
    L'instruction d'affectation est := et non =
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Membre du Club
    Profil pro
    Developpeur
    Inscrit en
    Septembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Septembre 2004
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    1°/ Je savais bien que c'était subtile comme erreur

    2°/ Je comprends pas pourquoi il comprends mes valeurs comme des booleans alors que dans mon record le x et le y c'est des integer et dans la comparaison je caste en integer le 0 !?!?

    Tu aurais pas une idée ?

    Merci de ton aide encore une fois

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Il faut parenthéser, ca simplifie les choses et évite les erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((arbre^.coord.x = Integer('0')) and (arbre^.coord.y=Integer('0'))) then
    Et pourquoi Integer('0') ?? Ca ne devrait pas compiler ça...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((arbre^.coord.x = 0) and (arbre^.coord.y = 0)) then
    Tout simplement non ?
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Gio,

    Je n'ai pas trop regardé en détails, mais ceci :
    n'est pas égal à 0 (zéro), comme tu sembles vouloir le faire d'après
    Citation Envoyé par allserv
    2°/ Il y a des lignes en commentaire tout simplement car cela relevait aussi des erreurs, je souhaitais simplement vérifier si l'attribut x et y de l'enregistrement Point etait egal à 0 mais j'ai des erreurs : Error incompatibles types : got Boolean excepted LongInt !
    Pourtant je les convertis bien :-\
    mais vaut le code du caractère '0', soit 48.
    Si les cons volaient, il ferait nuit à midi.

  6. #6
    Membre du Club
    Profil pro
    Developpeur
    Inscrit en
    Septembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Septembre 2004
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    Bon ben je vous remercie ca venait donc du parenthesage, le début c'est galère de se faire à une nouvelle syntaxe, je vous remercie en tout cas pour votre efficacité et à bientot.

    Louis

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

Discussions similaires

  1. [RegEx] Pb enregistrement contenu d'1 variable dans un fichier
    Par Stardust69 dans le forum Langage
    Réponses: 9
    Dernier message: 20/05/2008, 11h15
  2. Réponses: 1
    Dernier message: 27/04/2008, 16h53
  3. Réponses: 3
    Dernier message: 18/09/2007, 12h13
  4. Réponses: 7
    Dernier message: 29/06/2007, 07h45
  5. Réponses: 1
    Dernier message: 14/04/2006, 16h51

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