2013-09-14 3 views
0

У меня есть грамматики 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); 

Это не работает для меня, я делаю правильно?

+0

Что не работает? В верхней части моей головы этот код выглядит разумным. Возможно, вам придется вызвать [ClearRule] (http://msdn.microsoft.com/en-us/library/ms717874 (v = vs.85) .aspx), если вы делаете это более одного раза. –

+0

Привет, Эрик, делаю это только один раз. \t Когда я говорю, что это не работает, это означает, что я не получаю тот же признанный текст, когда загружаю его из файла и загружаю его динамически. Так что я не уверен, правильно ли это делаю. В моей грамматике (статической) я есть элемент , так что я не был уверен, как его реализовать динамически – Dev

+0

Смотрел на него еще немного; вы уверены, что вам нужно 'SPRAF_TopLevel | Флаги SPRAF_Active'? Вы не должны нуждаться в них для правил, которые встроены в другие правила. –

ответ

0

Просмотрел код, который построил динамические грамматики, и я уверен, что вам нужно SPRAF_Dynamic вместе с SPRAF_TopLevel | SPRAF_Active. (По крайней мере, код, который я написал, использовал это.)

+0

Эрик Я работал над этим в течение последних нескольких дней, но я не смог получить решение. Да, я прав, я возможно, придется добавить поле SPRAF_Dynamic. Теперь я могу получить рабочую статическую грамматику, которую я опубликовал в своей грамматике (отредактирован) .Am не удалось реализовать itdynamically :( – Dev