WideString wstrOutput, wstrWord, wstrPinYin;
wstrOutput = WideString(pmorrslt->pwchOutput);
wstrOutput = wstrOutput.SubString(1, pmorrslt->cchOutput);
// 將句子分隔成詞語并單獨加配拼音
for(int i = 0; i<pmorrslt->cWDD; i++)
{
// 讀取每段的詞語或字
wstrWord = wstrInput.SubString(
pmorrslt->pWDD[i].wReadPos + 1,
pmorrslt->pWDD[i].cchRead);
// 讀取每段的拼音
wstrPinYin = wstrOutput.SubString(
pmorrslt->pWDD[i].wDispPos + 1,
pmorrslt->pWDD[i].cchDisp);
//
if(wstrPinYin.Length() > 0)
wstrWord = wstrWord + "(" + wstrPinYin + ")";
// 輸出結果
Memo1->Lines->Add(wstrWord);
}
網上看到有人說這個是你修改的,但是我用的時候測驗pmorrslt->cWDD是空的,沒有值,那下面的for回圈就執行不到了,另外我單獨測驗pmorrslt->pWDD[i].wReadPos等值,都提示訪問記憶體出錯,是怎么回事呢?
uj5u.com熱心網友回復:
沒人知道嗎?uj5u.com熱心網友回復:
pmorrslt是個拼音類把,幫頂,等老妖
uj5u.com熱心網友回復:
這個就是老妖的源代碼,我猜想他當時可能沒測驗過,我拿來用了下,出問題了,相當于幫他測驗了,哈哈。后來我把for回圈的陳述句全注釋了,加上自己的陳述句,就可以了,Memo1->Lines->Add(wstrOutput);但是這樣的話,出來的結果是所有漢字的拼音都連在一起,不好看,最好是以空格分隔。我知道老妖的for回圈作用就是分隔,但是沒執行到,因為pmorrslt->cWDD=0uj5u.com熱心網友回復:
pmorrslt是個什么東東,你肯定是某個物件都沒有創建!不要質疑妖哥的代碼,要認真檢查自己的。
uj5u.com熱心網友回復:
這個前面都已經有定義了,我有老妖的完整原始碼,上面是我截取的一部分,已經能說明問題了,老妖知道的,變數是前面定義的,這里就不顯示了,而且你誤解了,不是我寫的代碼,只是老妖的for回圈根本執行不到,所以我才提問的,我剛才也說了,用我自己那條陳述句已經可以顯示結果了,只是沒分開而已,都連在一起,老妖的for回圈就是為了分開,但是執行不到,可惜了。uj5u.com熱心網友回復:
看了,解決不了。uj5u.com熱心網友回復:
哦,那怎么辦?連你都解決不了,那麻煩了。我以為是你的代碼,你應該能輕松解決,哎。那只能暫時連成一片將就下了,居然無法分隔。uj5u.com熱心網友回復:
路過,幫頂下。能用try catch()控制下不?
uj5u.com熱心網友回復:
謝謝你關注,現在不是捕捉例外問題,我除錯過,但是弄不明白,怎么pmorrslt->cWDD=0uj5u.com熱心網友回復:
用friso分了詞,再配合這個可以起到分詞加聲音的作用了。uj5u.com熱心網友回復:
發我份妖哥的代碼,我幫你看下![email protected].轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/140605.html
