On 2013-10-23 21:46, Sven Barth wrote:
"Writeln" is a complex functionality. So you should better trust us (hint: I'm a compiler developer) when we say this is more difficult than you imagine.

I know you're a compiler developer; and, I have no intention of challenging you on that front --actually, I don't want to challenge anyone on any front at all, I have enough challenges as it is.

And, I am not trying to replace all of WriteLn functionality with my own code.

I am guessing, just guessing, FPC uses WriteLn to communicate with other modules (perhaps Lazarus too), but I also need its output directly in my app.

How about this:

Instead of redirecting all of its output through the callback, I only use callback to redirect a copy of its output --leaving the rest of its functionality intact?


As I wrote in my post: See the CRT unit.

It does exactly that. You need maybe 20 lines of code to do as you want.

Will do, thanks.

But, let me ask this:

If I used the CRT unit, would I need to add it to every single unit in
the project that uses WriteLn?

Michael did not say that you should use the CRT unit, but that the unit implements something similar and that you should take a look at it to implement your own variant of it. And then you need to include your own unit only once (e.g. either you put the "hooking" into the initialization section or you do it at the start of your program)

I took a look at crt.pas and AFAIC it is not significantly less complex than finding the place of WriteLn in compiler code and altering it to use a callback ;)

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to