Some bug reports_(re)
Wed, 26 Feb 1997 15:52:39 GMT
Peter Gerwinski wrote:
1.
> > The output of a compiler program is not redirectable (neither as stdout,
> > nor stderr).
>
> Hmmm ... I am redirecting stderr all the time ... what OS are you using?
> With DJGPP and the BPcompat package, redirection is turned off when
> DirectVideo is `true'.
Yes, I'm using DJGPP - sorry I forgot to mention. It seems redirection is
turned off by default even without the BPcompat package. This was confusing
me. I don't use Crt in my program, so I didn't think of DirectVideo. Now when
I copy the declaration of DirectVideo from Crt (I don't want to use the
whole unit in this program), it works.
I guess redirection is turned off by default because the usual output via
Dos is quite slow!?
> (And redirection is not easy with DJGPP anyway.)
Why? The only problem I know of is that Command.Com can't redirect stdout.
But that's merely a problem of Dos' shell, and is solved by the REDIR
utility. Otherwise it works fine for me. Or are there any other problems?
3.
> Okay. I am adding it to my bug list. Thanks. :-)
>
> Workaround: GPC has no problems to deal with structures above 65520 bytes.
> [...]
Yes, I know. Actually I'm using now:
CONST MaxVar=$FFF0;
TYPE XArray=ARRAY[1..MaxVar {$IFDEF TP} DIV SizeOf(X) {$ENDIF}] OF X;
I'm just hoping to reduce the number of IFDEFs required to get the program
working on both TP and gpc.
6.
> > Is there anything like TP's Exit (return from current procedure/function)?
> > I couldn't find it in the docs.
>
> Return.
Thanks! I really could have guessed that myself...
4.
Berend de Boer wrote:
> > PROCEDURE p(CONST c:t)
>
> This is BP, try the EP standard
>
> PROCEDURE p(protected c:t)
>
> as a workaround.
Yes, that works. Thanks!
With the help of the preprocessor (luckily it's case-sensitve!), I can even
write the following code that compiles with TP and gpc:
{$DEFINE Const PROTECTED}
CONST a=1;
PROCEDURE p(Const c:t);
7.
...but this led me to another problem. It seems more involved (perhaps
something about GPI files?). I couldn't simplify the example more than
the following, especially there has to be a unit, r must be a record
(at least with r=Integer the bug doesn't show), and p has to be
protected:
UNIT u;
INTERFACE
TYPE
r=RECORD
a:Integer
END;
PROCEDURE f(PROTECTED p:r);
IMPLEMENTATION
PROCEDURE f(PROTECTED p:r);
BEGIN
END;
END.
PROGRAM x;
USES u;
VAR p:r;
BEGIN
f(p) {}
END.
gpc complains about
line {}: incompatible type for argument 1 of `F'
Frank
Frank Heckenbach (heckenb@mi.uni-erlangen.de)
HTML conversion by Lluís de Yzaguirre i Maura
Institut de Lingüística Aplicada -
Universitat "Pompeu Fabra"
e-mail: de_yza@upf.es