2015-07-23 2 views
0

В моем приложении QuickFix для C++ я записываю все сообщения MarketDataIncrementalRefresh, которые я получаю в файл. Это делается с использованием следующего кода:Не удается обработать быстрые сообщения, записанные в файле

void Application::onMessage(const FIX44::MarketDataIncrementalRefresh& message, const FIX::SessionID&) 
{ 
    ofstream myfile("tapedol.txt", std::ios::app); 
    myfile << message << endl << endl; 
} 

Эта часть работает отлично. Проблема возникает, когда я пытаюсь загрузить сообщение позже.

FIX::Message msg 
ifstream myfile("tapedol.txt"); 
getline(myfile,aux); 
msg = aux; 
msg.getField(55); 

Программа аварийно завершает работу при каждой последней строке. Я подозреваю, что проблема связана с назначением на msg, но я не уверен. Если да, то каков правильный способ выполнения такого задания? Если нет, как я могу обработать данные в tapedol.txt, чтобы сообщение типа MarketDataIncremental refresh было сгенерировано для каждой строки в файле?

+0

Почему вы отредактировали мое сообщение @Jordan? – bsam

ответ

0

Ваш вопрос не является полным достаточно, чтобы обеспечить полный ответ, но я вижу один красный флаг:

msg.getField(55); 

Поле Символ не является полем верхнего уровня MarketDataIncrementalRefresh (это внутри NoMDEntries повторяющейся группы), поэтому эта строка не удастся. Я думаю, что это приведет к исключению FieldNotFound.

Мой C++ ржавый, но вы должны иметь возможность поймать исключение или что-то, что должно точно указать, какая строка является ошибкой. Если это не так, вам нужно открыть отладчик. Просто говоря, «он разбился» означает, что вы перестали смотреть слишком рано.

+0

Это поле верхнего уровня в словаре данных, которое использует мой контрагент. Фактически, я использую getField (55) в моем onMessage для MarketDataIncrementalRefresh. Я тоже пытался получить другие поля, но это тоже не сработало. Я попытался использовать try catch для обработки исключений, но программа потерпела крах, прежде чем он смог распечатать что-либо. – bsam

 Смежные вопросы

  • Нет связанных вопросов^_^