Click here to Skip to main content
15,120,326 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
hi everybody
this is code of backspace button (just delete last character) in calculator , in MFC(C++)
it hase error...I will be happy if you guide me
thank you

int n=strlen(m_strNumber);   // n is length of editbox
for(int i=0;i<n-1;i++)
    m_strNumber[i+1]=m_strNumber[i]; // error : expression must be modifiable lvalue

Updated 10-Nov-13 10:45am
CHill60 10-Nov-13 14:18pm
And what is the error?
CHill60 10-Nov-13 14:31pm
And having looked at it again, this will not delete the last character
Diba.S 10-Nov-13 15:11pm
erroe: expression must be modifiable
I'm not sure about this code but I think it's true and because don't understand what is problem I asked you guide me . and why you say it doesn't delete last character?,could you please tell more?
CHill60 10-Nov-13 15:22pm
All you are doing is resetting the characters following the one at index i ... e.g. if m_strNumber is "123" then when i = 0 you are trying to set m_strNumber to "113", when i = 1 m_strNumber becomes "111". I would have thought that you would just want to remove the last character in the string (or move the null back 1 position).
As to the error ... how have you declared m_strNumber?
Diba.S 10-Nov-13 15:30pm
emmm...yes,as you explain I did wrong... :/ now could you tell me how should I change the code?
CPallini 11-Nov-13 4:30am
Richard already shown how correctly do it. However, shouldn't the UpadateData call already make the trick?
Diba.S 11-Nov-13 12:33pm
yes,it should call before
Diba.S 11-Nov-13 12:26pm
thanks for your attention to my question

1 solution

Assuming that m_strNumber is a character array then:
m_strNumber[n - 1] = '\0';

If it is a CString then
m_strNumber = m_strNumber.Left(n - 1);
CPallini 11-Nov-13 4:30am
Diba.S 26-Nov-13 13:48pm
thank u Richard

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900