Форум » [x]Harbour » Вывод в файл » Ответить

Вывод в файл

fil: Есть системная утилита. Результаты своей работы выдает на экран (в CMD). Из командной строки можно перенаправить в файл > c:\my.txt Как можно из проги сделать такое перенаправление ?

Ответов - 6

Pasha: Функция qout() выводит на stdout При перенаправлении вывода stdout перенаправляется в файл Т.е, надо использовать qout()

fil: Признаться, я не понял каким образом использовать Qout() и OutStd(). Нельзя ли пример ?

Петр: Название "вывод в файл" не совсем информативное. Вот классический пример от Przemekа (конечно Harbour), разбирайтесь request HB_GT_CGI_DEFAULT proc main(x) local hOut, hProc, cData, nLen if x == nil hProc := hb_ProcessOpen( hb_progname() + " X",, @hOut, @hOut, .T. ) if hProc != -1 ? "process open" cData := Space( 1000 ) while ( nLen := Fread( hOut, @cData, Len( cData ) ) ) > 0 ? "read[" + left( cData, nLen ) + "]" enddo ? "nLen = 0 -> process finished with exit code:", ; HB_ProcessValue( hProc ) ? endif else for nLen := 1 to 5 outstd( "line " + hb_ntos( nLen ) ) hb_idleSleep( 0.3 ) next outstd( "EOF" ) errorlevel( 57 ) endif return Если xHb такого не поддерживает, см. примеры и сырцы MiniGUI (pipe)


Петр: fil пишет: Признаться, я не понял каким образом использовать Qout() и OutStd(). Нельзя ли пример ? Может не в тему, но пример test2.prg PROCEDURE main( s1, s2 ) fErase( "test.log" ) hb_run( "test.exe " + s1 + " " + s2 + " >test.log" ) test.prg PROCEDURE main( s1, s2 ) if ! Empty( s1 ) OutStd( s1 ) endif if ! Empty( s2 ) QOut( s2 ) endif Использовать test2.exe par1 par2

fil: Делаю по всякому, все одно файл результата нулевой длины

fil: Все, получилось. Извини, Петр. Я бестолковый - забывал параметр



полная версия страницы