[Lazarus] Startup environment: to Gui, or not to GUI?
Mark Morgan Lloyd
markMLl.lazarus at telemetry.co.uk
Tue Apr 11 15:34:35 CEST 2017
On 11/04/17 10:30, Mark Morgan Lloyd via Lazarus wrote:
> On 11/04/17 10:00, Henry Vermaak via Lazarus wrote:> On Tue, Apr 11,
> 2017 at 09:15:16AM +0000, Mark Morgan Lloyd via Lazarus wrote:>
> Apologies if this is an FAQ.> > Is there an orthodox way that a Lazarus
> program can very early on look at> how it's been started and decide
> whether it can usefully fall back to a text> mode, e.g. to display help
> info on stdout rather than a messagebox?> isatty() is traditionally used
> for this on POSIX operating systems.It's in unit termio.
> Thanks Henry, I'll check. I know I've used it in the past when deciding
> whether a program was actually being fed piped input etc.
Something like this does appear to work, tested on Linux only.
function notGui(): boolean;
var i: integer;
begin
i := IsaTty(Input);
{$ifdef ISGUI }
exit false;
{$endif ISGUI }
{$ifdef NOGUI }
exit true;
{$endif NOGUI }
result := i <> 0
end { notGui } ;
The explicit overrides might be needed during debugging, since the
involvement of gdb forces the program to think it's being run from a
shell session.
Looking back through older sources, I've had to jump through hoops-
reopening the input and using GetFileType() under Windows- to find out
whether stdin was piped. Fortunately I don't need that here.
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
More information about the Lazarus
mailing list