У меня есть грамматики SAPI какSapi Динамическая Grammar загрузка
<rule id="root">
<item repeat="0-">
<ruleref uri="#digit"></ruleref>
</item>
</rule>
<rule id="digit">
<one-of>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
<item>0</item>
</one-of>
</rule>
Я хочу эквивалент динамической загрузки грамматики кто может HelpMe по этому поводу?
Я попытался
SPSTATEHANDLE hRule;
hr = cpGrammar->GetRule(L"digit", NULL, SPRAF_TopLevel | SPRAF_Active, TRUE,&hRule);
hr = cpGrammar->AddWordTransition(hRule, NULL, L"1", NULL, SPWT_LEXICAL, 1, NULL);
hr = cpGrammar->AddWordTransition(hRule, NULL, L"2", NULL, SPWT_LEXICAL, 1, NULL);
hr = cpGrammar->AddWordTransition(hRule, NULL, L"3", NULL, SPWT_LEXICAL, 1, NULL);
hr = cpGrammar->AddWordTransition(hRule, NULL, L"4", NULL, SPWT_LEXICAL, 1, NULL);
hr = cpGrammar->AddWordTransition(hRule, NULL, L"5", NULL, SPWT_LEXICAL, 1, NULL);
hr = cpGrammar->AddWordTransition(hRule, NULL, L"6", NULL, SPWT_LEXICAL, 1, NULL);
hr = cpGrammar->AddWordTransition(hRule, NULL, L"7", NULL, SPWT_LEXICAL, 1, NULL);
hr = cpGrammar->AddWordTransition(hRule, NULL, L"8", NULL, SPWT_LEXICAL, 1, NULL);
hr = cpGrammar->AddWordTransition(hRule, NULL, L"9", NULL, SPWT_LEXICAL, 1, NULL);
hr = cpGrammar->AddWordTransition(hRule, NULL, L"0", NULL, SPWT_LEXICAL, 1, NULL);
hr = cpGrammar->Commit(NULL);
hr = cpGrammar->SetGrammarState(SPGS_ENABLED);
Это не работает для меня, я делаю правильно?
Что не работает? В верхней части моей головы этот код выглядит разумным. Возможно, вам придется вызвать [ClearRule] (http://msdn.microsoft.com/en-us/library/ms717874 (v = vs.85) .aspx), если вы делаете это более одного раза. –
Привет, Эрик, делаю это только один раз. \t Когда я говорю, что это не работает, это означает, что я не получаю тот же признанный текст, когда загружаю его из файла и загружаю его динамически. Так что я не уверен, правильно ли это делаю. В моей грамматике (статической) я есть элемент, так что я не был уверен, как его реализовать динамически –
Dev
Смотрел на него еще немного; вы уверены, что вам нужно 'SPRAF_TopLevel | Флаги SPRAF_Active'? Вы не должны нуждаться в них для правил, которые встроены в другие правила. –