Что нового

[Данные, строки] [Окна, Диалоги] Работа с данными вывода из консоли

ArgoNaft

Новичок
Сообщения
129
Репутация
0
В общем то запускаю приложение консольное оно постоянно печатает данные, но мне надо считывать эти данные и вылавливать в них слово 'game-over' я вроде бы все написал верно а он не работает :smile::
Он не находит слово хотя оно есть я его вижу на экране, пробовал ConsoleWrite делать он печатает все строки которые меняются все отлично. Но почему он не ловит ключевое слово у меня!

Код:
#include <Constants.au3>
$sOut = ''
$iPID = Run('процесс', '', @SW_MAXIMIZE,$STDIN_CHILD + $STDOUT_CHILD)
Sleep(5000)
While 1
   $sOut &= StdoutRead($iPID, False, False)
If @error Then
	  ExitLoop
   Else
   $sSearch_symbol = StringInStr($sOut, "game-over")
   
   If $sSearch_symbol <> 0 Then
		 debag_box ($triger_debag,'Попался')
   EndIf
	  
   
	  ConsoleWrite($sOut&@CRLF)
   EndIf
   sleep(1000)
Wend

Func debag_box ($triger_debag,$message)
   If ($triger_debag > 0) Then
	  MsgBox(4096, "Заголовок", $message, 10)
   EndIf
EndFunc
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
test.au3
Код:
#include <Constants.au3>

Local $iPID = Run("game.exe", @ScriptDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)

Local $sData
While True
    $sData &= StdoutRead($iPID)
    If @error Then ExitLoop
    Sleep(25)
WEnd

If StringInStr($sData, "game-over") Then
	MsgBox(0, "Debug", 'Попался')
EndIf


game.au3
Код:
; Файл нужно скомпилировать в exe и положить рядом с test.au3
If Not @Compiled Then
	MsgBox(16, @ScriptName, 'Compile the first!')
	Exit
EndIf
ConsoleWrite("Message game-over" & @CRLF)
 
Автор
A

ArgoNaft

Новичок
Сообщения
129
Репутация
0
Вы не в цикле ловите а мне надо в цикле делать, но не суть важна ... вашим кодом тоже не ловиться. Где в моем коде то ошибка?
 

winstan

Эксплотатор)
Сообщения
406
Репутация
79
$triger_debag
откуда у вас берёться?
 
Автор
A

ArgoNaft

Новичок
Сообщения
129
Репутация
0
да это я забыл убрать, это моя функция, ставлю 1 показывает комментарии, ставлю 0... не чего не показывает.
 
Верх