Hej,
Jeg sider og leger med et konsol system, og jeg har en kommando type som hedder CTYPE_FUNCTION. Når en kommando er at denne type, kalder jeg en pointer som referere til funktionen. Funktionen er altid:
procedure(Params: String);
Dette ligger i en type:
TConFunction = procedure(Params: String);
Når jeg så kalder jeg pointerens adresse sådan her:
TConFunction(fCommands[I].P)(ToPass);
fCommands[I].P indeholder pointeren og ToPass indeholder argumenterne.
Hvis vi antager at fCommands[I].P referere til flg. funktion:
procedure TEngineModule.Exit(Params: String);
begin
EngineModule.Viewer.Active := False;
end;
Så virker det fint. Hvis jeg istedet bruger
procedure TEngineModule.Exit(Params: String);
begin
Viewer.Active := False;
end;
Så fejler den ! Noget siger mig, at det er fordi jeg kalder fra en anden klasse(TGLConsole, som nedarver fra TConsole, som nedarver TObject), og at Exit så tror at den er en del af denne klasse, og kan derfor ikke finde viewer, medmindre den for at vide at den skal kigge i en anden klasse(TEngineModule). Nogen der kan bekræfte dette. Eller bare hjælpe mig med at få det til at virke ?
MH.
The-Freak
Livet er for kort til at kede sig.