On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 16.06.09 10:56. Заголовок: Вывод в файл


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

Спасибо: 0 
Цитата Ответить
Ответов - 6 [только новые]


Администратор




Пост N: 1165
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 16.06.09 11:41. Заголовок: Функция qout() вывод..


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

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 16.06.09 11:55. Заголовок: Признаться, я не пон..


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

Спасибо: 0 
Цитата Ответить
постоянный участник


Пост N: 691
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 16.06.09 12:07. Заголовок: Название "вывод ..


Название "вывод в файл" не совсем информативное.

Вот классический пример от 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)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 692
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 16.06.09 12:32. Заголовок: fil пишет: Признать..


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

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 16.06.09 13:53. Заголовок: Делаю по всякому, вс..


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

Спасибо: 0 
Цитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 16.06.09 14:14. Заголовок: Все, получилось. Изв..


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

Спасибо: 0 
Цитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 4
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет