Frank Heckenbach wrote:
(As was said so often, sending reproducible examples will really help us.)
Okay, I now reproduced the error in a short simple unit. (Attached.) The respective line therein reads:
if getFoo^ .getBar^ .getBaz = gBar^ .getBaz then writeln ( ':-)' );
The error condition breaks down to this: - getFoo is a (global) function returning a pointer to an object. - getBar is a method function returning a pointer to an object. - getBaz is an arbitrary method function.
Then the parser seemingly isn't able anymore (it was back in version 20041218) to resolve this line, and compiling terminates with the error message
test.pas: In procedure `foobarbaz': test.pas:51: Fehler: invalid type of argument of `^'
If you insert brackets like this, the error disappears:
if ( getFoo^ .getBar )^ .getBaz = gBar^ .getBaz then writeln ( ':-)' );
Yours,
Markus