Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2008-07

how to catch fpopen() output

5 messages · 4 people ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Graeme Geldenhuys

Hi,

I have a function called fpgOpenURL(...) which contains the following ....

    if fpsystem('which xdg-open') = 0 then
      Helper := 'xdg-open'
    else if fpsystem('which firefox') = 0 then
      Helper := 'firefox';
    else if fpsystem('which konqueror') = 0 then
      Helper := 'konqueror';
    else if fpsystem('which opera') = 0 then
      Helper := 'opera';
    else if fpsystem('which mozilla') = 0 then
       Helper := 'mozilla';

It tries to dected the preferred or installed web browser. If Helper '' at the end, I know I found a web browser. But how do I catch the output of fpopen('which xxx') so that I can set the full path of the application in the 'Helper' variable.

eg:
instead of using 'xdg-open' I would prefer to set the full path returned by 'which xdg-open' which is '/usr/bin/xdg-open'

Regards,
- Graeme -

_______________________________________________
fpGUI - a cross-platform Free Pascal GUI toolkit
http://opensoft.homeip.net/fpgui/

Graeme Geldenhuys
to Graeme Geldenhuys

Sorry, I meant catching fpSystem() output...

Graeme Geldenhuys wrote 23 lines
Hi, I have a function called fpgOpenURL(...) which contains the following .... if fpsystem('which xdg-open') = 0 then Helper := 'xdg-open' else if fpsystem('which firefox') = 0 then Helper := 'firefox'; else if fpsystem('which konqueror') = 0 then Helper := 'konqueror'; else if fpsystem('which opera') = 0 then Helper := 'opera'; else if fpsystem('which mozilla') = 0 then Helper := 'mozilla'; It tries to dected the preferred or installed web browser. If Helper '' at the end, I know I found a web browser. But how do I catch the output of fpopen('which xxx') so that I can set the full path of the application in the 'Helper' variable. eg: instead of using 'xdg-open' I would prefer to set the full path returned by 'which xdg-open' which is '/usr/bin/xdg-open'

Regards,
- Graeme -

_______________________________________________
fpGUI - a cross-platform Free Pascal GUI toolkit
http://opensoft.homeip.net/fpgui/

ik
to Graeme Geldenhuys

You should use pipes rather then fpSystem for that.

Ido

Graeme Geldenhuys wrote 44 lines
Sorry, I meant catching fpSystem() output... On Wed, Jul 23, 2008 at 2:40 PM, Graeme Geldenhuys wrote: > Hi, > > I have a function called fpgOpenURL(...) which contains the following .... > > if fpsystem('which xdg-open') = 0 then > Helper := 'xdg-open' > else if fpsystem('which firefox') = 0 then > Helper := 'firefox'; > else if fpsystem('which konqueror') = 0 then > Helper := 'konqueror'; > else if fpsystem('which opera') = 0 then > Helper := 'opera'; > else if fpsystem('which mozilla') = 0 then > Helper := 'mozilla'; > > It tries to dected the preferred or installed web browser. If Helper > '' at the end, I know I found a web browser. But how do I catch > the output of fpopen('which xxx') so that I can set the full path of > the application in the 'Helper' variable. > > eg: > instead of using 'xdg-open' I would prefer to set the full path > returned by 'which xdg-open' which is '/usr/bin/xdg-open' Regards, - Graeme - _______________________________________________ fpGUI - a cross-platform Free Pascal GUI toolkit http://opensoft.homeip.net/fpgui/ _______________________________________________ fpc-pascal maillist - http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Marc Santhoff
to Graeme Geldenhuys: I have a function called fpgOpenURL(...) which contains the following .... if…
Graeme Geldenhuys wrote 23 lines
Hi, I have a function called fpgOpenURL(...) which contains the following .... if fpsystem('which xdg-open') = 0 then Helper := 'xdg-open' else if fpsystem('which firefox') = 0 then Helper := 'firefox'; else if fpsystem('which konqueror') = 0 then Helper := 'konqueror'; else if fpsystem('which opera') = 0 then Helper := 'opera'; else if fpsystem('which mozilla') = 0 then Helper := 'mozilla'; It tries to dected the preferred or installed web browser. If Helper '' at the end, I know I found a web browser. But how do I catch the output of fpopen('which xxx') so that I can set the full path of the application in the 'Helper' variable. eg: instead of using 'xdg-open' I would prefer to set the full path returned by 'which xdg-open' which is '/usr/bin/xdg-open'

I haven't done it myself, but I'm somewhat sure the standard answer for this case is:

Use TProcess. There is a wiki page about it.

;)
Marc

Anthony Henry
to Marc Santhoff

Could also use popen.

Sent from my iPhone

Marc Santhoff wrote 39 lines
Am Mittwoch, den 23.07.2008, 14:40 +0200 schrieb Graeme Geldenhuys: > Hi, > > I have a function called fpgOpenURL(...) which contains the > following .... > > if fpsystem('which xdg-open') = 0 then > Helper := 'xdg-open' > else if fpsystem('which firefox') = 0 then > Helper := 'firefox'; > else if fpsystem('which konqueror') = 0 then > Helper := 'konqueror'; > else if fpsystem('which opera') = 0 then > Helper := 'opera'; > else if fpsystem('which mozilla') = 0 then > Helper := 'mozilla'; > > It tries to dected the preferred or installed web browser. If Helper > '' at the end, I know I found a web browser. But how do I catch > the output of fpopen('which xxx') so that I can set the full path of > the application in the 'Helper' variable. > > eg: > instead of using 'xdg-open' I would prefer to set the full path > returned by 'which xdg-open' which is '/usr/bin/xdg-open' I haven't done it myself, but I'm somewhat sure the standard answer for this case is: Use TProcess. There is a wiki page about it. ;) Marc _______________________________________________ fpc-pascal maillist - http://lists.freepascal.org/mailman/listinfo/fpc-pascal