1

MultilineのプロパティでCEditを使用しています。私の目的は、個々の行を取得してCStringArrayに配置することです。

GetLineを使用して行を取得するとき、その行の文字列の長さを知る必要があります。

これを取得する方法は?

GetLineLength()関数を試しましたが、指定されたテキストではなく、行全体のサイズが返されます。

これまでに実装したコードを貼り付けました。

CEdit m_strMnemonicCode;
CStringArray strMnemonicArray;
LPTSTR temp =  new TCHAR[50];;
int nLineCount = m_strMnemonicCode.GetLineCount();
for(int ni = 0 ; ni < nLineCount ; ni++)
{
    int len = m_strMnemonicCode.LineLength(m_strMnemonicCode.LineIndex(ni));
            //m_strMnemonicCode.GetLine(ni, strText.GetBuffer(len), len);
    m_strMnemonicCode.GetLine( ni , temp );
    strMnemonicArray.Add(strText);
}
4

1 に答える 1

1

でも、線全体の長さを知る必要がありますね。
バッファをTCHARの配列としてではなく、CStringとして定義し、それを実行GetBuffer()します。

CEdit::GetLineCountの例を確認してください

それはあなたが必要とすることを多かれ少なかれ行うようです。

編集
私はちょうど次のテストを書きました、そしてそれは私にとって完全に機能します:

int lc = m_Edit.GetLineCount();    

CString strLine;
CStringArray arr;

for (int i = 0; i < lc ; i++)
{
    int len = m_Edit.LineLength(m_Edit.LineIndex(i));
    m_Edit.GetLine(i, strLine.GetBuffer(len), len);
    strLine.ReleaseBuffer(len);

    arr.Add(strLine);
}

たぶんあなたはバッファ長をに追加するのを忘れていReleaseBuffer()ますか?

于 2011-06-02T06:00:39.920 に答える