Не может работать на 2-й итерации из-за задержки записи - PullRequest
0 голосов
/ 05 мая 2010

Мой код IF-THEN не работает для второй итерации.Это связано с тем, что обработка jar требует некоторого времени для записи результата в output.txt.

Поскольку запись немного запаздывает, вторая итерация моего кода всегда будет читать предыдущее записанное значение в файле output.txt, чтобы передать его в IF-THEN.

Например, в 1-й итерации: output.txt -> 0.9888 twrite.txt -> msg: ok

2-я итерация: output.txt -> 0.5555 twrite.txt -> msg: ok
// IF-THEN все еще дает этот результат, который основан на предыдущей итерации.это должно быть сообщение: не в порядке.Как это <0,7 </p>

Мне нужна помощь, как решить эту проблему «задержки»?

HRESULT CButtonDemoBHO::onDocumentComplete(IDispatch *pDisp, VARIANT *vUrl){
ATLTRACE("CButtonDemoBHO::onDocumentComplete %S\n", vUrl->bstrVal);

   WinHttpClient client(vUrl->bstrVal);
   client.SendHttpRequest();
   wstring httpResponseHeader = client.GetHttpResponseHeader();
   wstring httpResponse = client.GetHttpResponse();
   writeToLog(httpResponse.c_str());

   if (isMainFrame(pDisp)){
     m_normalPageLoad=false;  

     FILE  *child = _popen("javaw -jar c:\\simmetrics.jar c:\\chtml.txt c:\\thtml.txt  > c:\\output.txt", "r");
fclose(child);

   char readnumber[10];
   float f = 0;

   FILE *file11 = fopen("c:\\output.txt","r");

   char* p = fgets(readnumber,10,file11);
   std::istringstream iss(p);

   iss >> f;


   if (f > 0.7)

    {
        wfstream file12 ("c:\\twrite.txt", ios_base::out);
        file12 << "Msg: ok";
        file12.close();
    }
   else
    {
        wfstream file12 ("c:\\twrite.txt", ios_base::out);
        file12 << "Msg: not ok";
        file12.close();
    }


  iss.clear();
  fclose(file11);

  return S_OK;
  }

  return S_OK;
}

1 Ответ

1 голос
/ 05 мая 2010

Вам действительно нужно записать вывод JAR в results.txt? Вы можете использовать _popen для прямой передачи потока напрямую вместо записи в файл и чтения его в переменную.

Ознакомьтесь с документацией MSDN на _popen, у них есть пример на этом.

Кроме того, это решило бы вашу проблему «задержки записи», поскольку вы непосредственно читаете информацию из приложения javaw вместо чтения из output.txt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...