C# 修复重复阅读组

C# 修复重复阅读组,c#,quickfix,fix-protocol,C#,Quickfix,Fix Protocol,我有一个修复日志文件。我在行上迭代,将每个字符串放入 Message m = new Message(str, false) 因为某种原因,验证在文件上失败(甚至第一行)。现在,我看到它是一个35=X类型,268=4(即NoMDEntries=4,因此消息中应该有4个组) 但是,在调试显示中,我没有看到任何组。m、 基本组。\u组的计数为0 所讨论的字符串是: 1128=9 | 9=363 | 35=X | 49=CME | 34=3151 | 52=20121216223556363 | 7

我有一个修复日志文件。我在行上迭代,将每个字符串放入

Message m = new Message(str, false)
因为某种原因,验证在文件上失败(甚至第一行)。现在,我看到它是一个35=X类型,268=4(即NoMDEntries=4,因此消息中应该有4个组)

但是,在调试显示中,我没有看到任何组。m、 基本组。\u组的计数为0

所讨论的字符串是:

1128=9 | 9=363 | 35=X | 49=CME | 34=3151 | 52=20121216223556363 | 75=20121217 | 268=4 | 279=0 | 22=8 | 48=43585 | 83=902 | 107=6EH3 | 269=4 | 270=13186 | 273=223556000 | 286=5 | 279=0 | 22=8 | 48=43585 | 83=903 | 107=6EH3 | 269=E | 270=13186 | 271=9 | 273=223556000 | 279=0 | 22=8 | 48=43585 | 83=904 | 107=6EH3 | 269=F | 270=13185 | 273=223556000 | 279=1 | 22=8 | 48=43585 | 83=905 | 107=6EH3 | 269=0 | 270=13186 | 271=122 | 273=223556000 | 336=0 | 346=10 | 1023=1 | 10=179 | 
另一件事是我如何阅读小组?本能地,我想做一些像

for (int i = 1; i <= noMDEntries; i++) {
    Group g = m.GetGroup(i);
    int action = Int32.Parse(g.GetField(279));
    ....
}

for(inti=1;i从您的代码片段中,我认为您正在使用本机C#实现,因此我将相应地回答

1) 您的消息构造失败,因为您没有提供DataDictionary

改用
Message::FromString

Message m = new Message();
m.FromString(msg_str, false, data_dic, data_dic, someMsgFactory);
更好的是,使用
MarketDataIncrementalRefresh::FromString
获得正确的返回类型

您可以在此处看到此函数的一些用法:

2) 阅读组。。。好的,QF/n有一个文档页面,我认为这很好地解释了这一点。

您使用的是原始的QuickFIX(C++和C#wrapper)还是QuickFIX/n(本机C#impl)?我使用了组测试中的代码,将FIX44.xml加载到数据字典中,但是FromString抛出“UnsupportedVersion:9”查看日志,没有标记8。可能是这样吗?如果我手动将其添加到每个日志行的前面,会发生什么情况?我不知道您使用的是哪种日志作为输入,但如果您的修复消息不是以“8=”开头,则它们不是有效的修复消息。