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 :)) :
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 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 {...}
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
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.
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
Partager