[SE] err 72 procedure must be bound to a record of the same

Forum van 1ste Bachelor Informatica.

Moderator: Praesidium

Glenn
Posts: 280

[SE] err 72 procedure must be bound to a record of the same

Post#1 » Tue Feb 24, 2009 5:36 pm

Hoi allen,

Om te zien of al mijn gegevens bij de ParseInfoConsumer wel goed opgeslagen worden in mijn stationlijst en tramlijst, heb ik een testprocedure geschreven in mijn module XMLInlezen.Mod.

Om een vreemde reden kan ik de node niet uitprinten via polymorfisme. Het lukt wel als ik gebruik maak van TypeTest/TypeGuard en het volgende schrijf:

Code: Select all

IF (node IS MetroParseInfoConsumer.Station) THEN									(* voorlopig maar even uitgeprint via TypeTest/TypeGuard *)
OutExt.String(node(MetroParseInfoConsumer.Station)^.naam);
END;


Wanneer ik het wil doen via polymorfisme (zie onderaan) krijg ik steeds volgende error "err 72 procedure must be bound to a record of the same scope" en zegt de de error zit bij de (node : MetroParseInfoConsumer.Station).

Code: Select all

PROCEDURE Test*;

VAR
file : StringTypes.SimpleTypeString;
node : OOLijst.ElementNode;

BEGIN
file := "GoodFile.txt";
LeesIn(file);
OutExt.String("Hij gaat nu de eerste Node halen uit de stationlijst en het veld naam van deze node uitprinten");
OutExt.Ln;
OutExt.String("De naam van het eerste station is dus : ");
node := MetroParseInfoConsumer.stationlijst^.GetNode(1);
node^.Print;
END Test;

PROCEDURE (node : MetroParseInfoConsumer.Station) Print*();

BEGIN
OutExt.String(node^.naam);
END Print;
Kan er iemand verklaren hoe die komt? Ik zou graag gebruik maken van dat polymorfisme want dat lijkt me wel handiger dan telkens die typetest/typeguard te moeten schrijven :P.

Groet,
Glenn

User avatar
Scheder
Posts: 212

Post#2 » Tue Feb 24, 2009 5:49 pm

Methodes horen bij een klasse, dus die behoren ook in de module van die klasse. Een methode kan nooit gedefinieerd worden buiten de module van de klasse zelf

Dus ik neem aan dat ge die print in Station.Mod zult moeten typen, dan zou het normaal wel moeten werken.

Glenn
Posts: 280

Post#3 » Wed Feb 25, 2009 4:28 pm

Scheder wrote:Methodes horen bij een klasse, dus die behoren ook in de module van die klasse. Een methode kan nooit gedefinieerd worden buiten de module van de klasse zelf

Dus ik neem aan dat ge die print in Station.Mod zult moeten typen, dan zou het normaal wel moeten werken.
k, ik ga het zo eens uitproberen :)

Glenn
Posts: 280

Post#4 » Wed Feb 25, 2009 5:04 pm

Het werkt, bedankt :D

User avatar
Scheder
Posts: 212

Post#5 » Thu Feb 26, 2009 12:23 am

Glenn wrote:Het werkt, bedankt :D
Dat is heel het principe van Object Georienteerd programmeren.
Een Object is iets op zichzelf, daar moet nix meer bij en daar zit ook nix anders bij int algemeen. Zodat ge uw object met AL zijn functionaliteiten overal kunt gebruiken, door alleen maar het object/de module waarin uw object staat te importeren.

Glenn
Posts: 280

Post#6 » Thu Feb 26, 2009 10:39 pm

Scheder wrote:
Glenn wrote:Het werkt, bedankt :D
Dat is heel het principe van Object Georienteerd programmeren.
Een Object is iets op zichzelf, daar moet nix meer bij en daar zit ook nix anders bij int algemeen. Zodat ge uw object met AL zijn functionaliteiten overal kunt gebruiken, door alleen maar het object/de module waarin uw object staat te importeren.
Uhu, en ook merci voor uwen uitleg tussen de middag :). We hebben nu aparte modules gemaakt voor onze objecten en die methodes derbij gestoken. Das nu wel een pak overzichtelijker :).

Return to “1ste Bachelor”

Who is online

Users browsing this forum: No registered users and 75 guests