2

FIXログファイルがあります。私は行を繰り返し、各文字列を

Message m = new Message(str, false)

何らかの理由で、ファイルの検証が失敗するためです(最初の行でも)。これで、35 = Xタイプであり、268 = 4であることがわかります(つまり、NoMDEntries = 4なので、メッセージに4つのグループが含まれている必要があります)

しかし、デバッグ表示にはグループが表示されません。m.base._groupsのカウントは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 | 

もう1つは、グループをどのように読むかです。本能的に、私は次のようなことをしたい

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

しかし、それはそれがどのように機能するかではなく、私はより良い説明のあるドキュメントを見つけていません。

助けてくれてありがとう、ヨナタン。

4

1 に答える 1

6

コード スニペットから、ネイティブの C# 実装であるQuickFIX/nを使用していると思われるので、それに応じて回答します。

1) DataDictionary を提供しなかったため、メッセージの作成に失敗しています。

Message::FromString代わりに使用してください:

Message m = new Message();
m.FromString(msg_str, false, data_dic, data_dic, someMsgFactory);

さらに良いMarketDataIncrementalRefresh::FromStringことに、正しい戻り値の型を取得するために使用します。

この関数の使用例は、
https ://github.com/connamara/quickfixn/blob/master/UnitTests/MessageTests.cs で確認できます。

2) グループを読むには...まあ、QF/n にはそれに関するドキュメントページがあり、かなりよく説明されていると思います。
http://quickfixn.org/tutorial/repeating-groups

于 2013-03-11T15:37:40.873 に答える