1
votes

I am using CEdit with the property of Multiline.My objective is to retrieve the individual line and place it in my CStringArray.

While retrieving the line using GetLine , I have to know the string length of that line.

How to get this?

I tried the function GetLineLength() but that will return the size of the entire line rather than the specified text.

I pasted the code that i have implemented so far:

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 Answers

1
votes

But you need to know the length of the whole line, don't you?
I would not define the buffer as an array of TCHARs, but as a CString, then do GetBuffer() on it.

Check the example in CEdit::GetLineCount

It seems to do more or less what you need.

Edit
I've just written the following test, and it works perfectly for me:

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);
}

Maybe you are forgetting to add the buffer length to ReleaseBuffer()?