CEdit Text Retrieval в MFC - PullRequest
       19

CEdit Text Retrieval в MFC

1 голос
/ 02 июня 2011

Я использую CEdit со свойством Multiline. Моя цель - получить отдельную строку и поместить ее в мой CStringArray.

При получении строки с помощью GetLine мне нужно знать длину строки этогоline.

Как это получить?

Я пробовал функцию 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);
}

1 Ответ

1 голос
/ 02 июня 2011

Но вам нужно знать длину всей строки, не так ли?
Я бы не определил буфер как массив 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()?

...