Autor Téma: process - vystup  (Přečteno 2042 krát)

Offline jnovacek

  • Nováček
  • *
  • Příspěvků: 12
  • Karma: 1
    • Verze Delphi: Delphi 7
process - vystup
« kdy: 21-01-2014, 13:38:22 »
potrebuji v lazarusu nasledujici:

  Process1.CommandLine:= 'xfreerdp  -u '+jmeno+' -p '+heslo+' -k 0x00000405 --ignore-certificate -f '+ipaddress;
  AProcess.Options := AProcess.Options + [poWaitOnExit];
  Process1.Execute;
  Memo1.Lines.LoadFromStream(Process1.Output);
  Process1.Free;

xfreerdp je program normalne spousteny z prikazoveho radku.
V zavislosti na vystupu pak potrebuji zobrazit informaci o neuspesnem prihlaseni.
xfreerdp z prikazoveho radku ma nasledujici vystup "unable to connect to XX" nebo "connected to XX".
Kdyz to spustim z lazarusu, tak vsak dostanu chybovou hlasku "Access violation".
Problem je prave v radku Memo1...
Jak mam spravne precist vystup z prikazoveho radku?

Pouzivam openSUSE a lazarus

Predem dekuji


Offline mjseven

  • Mladík
  • **
  • Příspěvků: 68
  • Karma: 6
    • Verze Delphi: D7, D2006, XE2, Lazarus
Re:process - vystup
« Odpověď #1 kdy: 21-01-2014, 15:05:18 »
Mám pocit že na linuxu musíš zadat plnou cestu k xfreerdp
Prostuduj si
http://wiki.lazarus.freepascal.org/Executing_External_Programs#Reading_large_output

Offline jnovacek

  • Nováček
  • *
  • Příspěvků: 12
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:process - vystup
« Odpověď #2 kdy: 21-01-2014, 18:56:04 »
po dlouhém hledání zabralo toto:
AProcess.Options := AProcess.Options + [poWaitOnExit, poUsePipes];

přidání poUsePipes pomohlo. Vše ostatní jsem nechal a funguje to.