Problem with CString! CXX0017
-
Use the callstack to see in which of YOUR function the code crashes. Then put a breakpoint at the begining of this function and step by step to see which instruction makes your program crash.
Cédric Moonen Software developer
Charting controlCedric Moonen wrote:
Use the callstack to see in which of YOUR function the code crashes. Then put a breakpoint at the begining of this function and step by step to see which instruction makes your program crash.
The line that makes my program crash: if (str2=="FFFF00000000028C") m_pSet->m_Nume="Gigi"; else m_pSet->m_Nume="Ionica"; Because that's a line on which I have str2 the variable that is defined and initiated with a value, but which I can't see. -- modified at 8:53 Wednesday 26th July, 2006
-
Christian Graus wrote:
We need the line number and file as well, if we're to see it in context.
File wincore.cpp Line 883.
tanarnelinistit wrote:
File wincore.cpp Line 883.
This is apparently not with VC++ v6. Correct?
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
-
Cedric Moonen wrote:
Use the callstack to see in which of YOUR function the code crashes. Then put a breakpoint at the begining of this function and step by step to see which instruction makes your program crash.
The line that makes my program crash: if (str2=="FFFF00000000028C") m_pSet->m_Nume="Gigi"; else m_pSet->m_Nume="Ionica"; Because that's a line on which I have str2 the variable that is defined and initiated with a value, but which I can't see. -- modified at 8:53 Wednesday 26th July, 2006
tanarnelinistit wrote:
if (str2=="FFFF00000000028C") m_pSet->m_Nume="Gigi";
Put a breakpoint on the
if
statement and single-step (F10) from there.
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
-
I use the folowing code to listen the com:
void CMina_sView::OnListenCom1() { running = TRUE; AfxBeginThread(run,this); }
void CMina_sView::ascultarea() { CSerial serial; LONG lLastError = ERROR_SUCCESS; DWORD dwBytesRead = 0 ; char szBuffer[21]; CString str2="jjk"; char of[5]= "Addd"; int i=10; const int nBuflen = sizeof(szBuffer)-1; lLastError = serial.Open(_T("COM1"),0,0,false); lLastError = serial.Setup(CSerial::EBaud9600,CSerial::EData8,CSerial::EParNone,CSerial::EStop1); lLastError = serial.SetMask(CSerial::EEventBreak | CSerial::EEventCTS | CSerial::EEventDSR | CSerial::EEventError | CSerial::EEventRing | CSerial::EEventRLSD | CSerial::EEventRecv); lLastError = serial.SetupReadTimeouts(CSerial::EReadTimeoutNonblocking); lLastError = serial.WaitEvent(); const CSerial::EEvent eEvent = serial.GetEventType(); if (eEvent & CSerial::EEventRecv) { while (running) {Sleep(300); dwBytesRead = 0; serial.Read(szBuffer,nBuflen,&dwBytesRead); szBuffer[dwBytesRead] = '\0'; str2.TrimLeft(); str2.TrimRight(); str2.TrimLeft(); str2.TrimRight(); // do smth with str2 } } //Sleep(0); running = FALSE; serial.Close(); } UINT CMina_sView::run(LPVOID p) { CMina_sView * me = (CMina_sView *)p; me->ascultarea(); return 0; }
If I run the program I get an error. If I run it in debug mode I when try to watch str2 i get the error: "symbol "str2" not found" What's wrong? I can watch any other variable.IME, symbol "str2" not found errors in the debugger are due to one of four things:
1
: You typed the identifier incorrectly2
: You are in the wrong context3
: You are trying to view astatic
variable (VC++ 6.0)4
: You have overrun/underrun a buffer Given that you are also getting additional errors, I would research #4
. Peace!-=- James
If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong!
Avoid driving a vehicle taller than you and remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road!
DeleteFXPFiles & CheckFavorites (Please rate this post!) -
tanarnelinistit wrote:
File wincore.cpp Line 883.
This is apparently not with VC++ v6. Correct?
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
DavidCrow wrote:
This is apparently not with VC++ v6. Correct?
No, it is with VC++ v6.0. The error is comming from using the str2 CString variable. If I dont use any reference to it there is no problem.
-
IME, symbol "str2" not found errors in the debugger are due to one of four things:
1
: You typed the identifier incorrectly2
: You are in the wrong context3
: You are trying to view astatic
variable (VC++ 6.0)4
: You have overrun/underrun a buffer Given that you are also getting additional errors, I would research #4
. Peace!-=- James
If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong!
Avoid driving a vehicle taller than you and remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road!
DeleteFXPFiles & CheckFavorites (Please rate this post!)James R. Twine wrote:
You have overrun/underrun a buffer
What do you mean by that? If I don't use multithreads I don't get an error.
-
Cedric Moonen wrote:
Use the callstack to see in which of YOUR function the code crashes. Then put a breakpoint at the begining of this function and step by step to see which instruction makes your program crash.
The line that makes my program crash: if (str2=="FFFF00000000028C") m_pSet->m_Nume="Gigi"; else m_pSet->m_Nume="Ionica"; Because that's a line on which I have str2 the variable that is defined and initiated with a value, but which I can't see. -- modified at 8:53 Wednesday 26th July, 2006
Where does this code come from ?? :confused: Please, when you post something give the complete information. This has absolutely nothing to do with the first code snippet you posted. So how can we guess what the problem is :| ? What is this m_pSet and what is its value ? Is it a valid address ?
Cédric Moonen Software developer
Charting control -
James R. Twine wrote:
You have overrun/underrun a buffer
What do you mean by that? If I don't use multithreads I don't get an error.
tanarnelinistit wrote:
If I don't use multithreads I don't get an error.
Most likely the problem is still present and is simply being masked by some other operation.
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
-
DavidCrow wrote:
This is apparently not with VC++ v6. Correct?
No, it is with VC++ v6.0. The error is comming from using the str2 CString variable. If I dont use any reference to it there is no problem.
tanarnelinistit wrote:
No, it is with VC++ v6.0.
Line 883 of wincore.cpp does not have any
ASSERT()
statements. Here are the first few lines of code in theAssertValid()
method:#ifdef _DEBUG
void CWnd::AssertValid() const
{
if (m_hWnd == NULL)
return; // null (unattached) windows are valid// check for special wnd??? values ASSERT(HWND\_TOP == NULL); // same as desktop if (m\_hWnd == HWND\_BOTTOM) ASSERT(this == &CWnd::wndBottom); else if (m\_hWnd == HWND\_TOPMOST) ASSERT(this == &CWnd::wndTopMost); else if (m\_hWnd == HWND\_NOTOPMOST) ASSERT(this == &CWnd::wndNoTopMost); else // line 883
...
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
-
tanarnelinistit wrote:
If I don't use multithreads I don't get an error.
Most likely the problem is still present and is simply being masked by some other operation.
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
DavidCrow wrote:
Most likely the problem is still present and is simply being masked by some other operation.
With all respect it can not be posible to have the problem when I don't use multithreads because i use str2 to edit a field in the database and that works fine. I run the program just fine.