|
|
I have been trying to create a tokeninzer/scanner for my school project. But I have a hard time dealing with spaces between words. rather than it would separates the words after spaces, it will keep on adding the characters to one big word. If I inputed "print codes", it will make the variables as one 'printcodes' rather than "print" as one keyword and "codes" as identifier.
Could anyone help me solve this problem?
Here is the c++ codes I created:
while(!read.eof()) //(read>>letter)
{
//catching symbols
if(letter == '*'||'/'||'+'||'-'||'='||'('||')') {
checkid.checktokenop(letter); }
char gotit2 = letter;
//catching letters
if(gotit2 != '*')
if(gotit2 != '/')
if(gotit2 != '+')
if(gotit2 != '-')
if(gotit2 != '=')
if(gotit2 != '(')
if(gotit2 != ')')
{
int result = 1;
codes+= gotit2;
if(gotit2 == ' ')
{
result = checkid.checktokenword(codes);
codes.erase();
}
if(result == 0)//if Reserved word and,or,print,not
{
codes.erase();
}
}//end of catching letter
}
Please help!!!
|
|
|
|
|
|
Hello,
How does one do about disabling/enabling a menu and toolbar item that share the same ID?
Thanks a million,
David
|
|
|
|
|
Hi,
You can to obtain it adds an event to UPDATE_COMMAND_UI message, associated to this ID, with ClassWizard.
<br />
void CMainFrame::OnYourEvent(CCmdUI* pCmdUI) <br />
{<br />
pCmdUI->Enable(m_bFlag);<br />
}<br />
the m_bFlag is a bool variable to manage the enabing/disabling.
Ivan Cachicatari
www.latindevelopers.com
|
|
|
|
|
Hi, thanks for the reply!
Can you tell me how to enable/disable an item without having to wait for the event to fire?
I mean, what is the way to do it manually?
|
|
|
|
|
dNimrod#X wrote:
without having to wait for the event to fire?
The event is sent during the app's idle processing. You don't have to do anything special - just set the appropriate bool variable to false and query it in the UI update handler. Try it - you'll like it!
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Hi there,
I have this application which opens different modeless dialog boxes and has some accelerators defined.
My question is assuming a window/control/... has the focus at the time, how can the C[...]App know the user pressed a key? Basically, what I am trying to do is make the app process certain accelerators, independently of the window that has the focus.
|
|
|
|
|
The easiest way is to use a "hot key". See RegisterHotKey .
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" mYkel - 21 Jun '04
Within you lies the power for good - Use it!
|
|
|
|
|
My purpose is to pass an icon to the resource of a file or dll. If you have any sugestions..
for that I have to use UpdateResource
so I did that
hUpdateRes = BeginUpdateResource("D:\\Bureau\\ressource\\test resource\\test resource.exe", FALSE); <br />
if (hUpdateRes == NULL) <br />
{ <br />
MessageBox(0,"Could not open file for writing.",0,0); <br />
} <br />
<br />
result = UpdateResource(hUpdateRes,RT_ICON,szTitre,MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),ico,1384);
if (result == FALSE) <br />
{ <br />
MessageBox(0,"Could not add resource.",0,0); <br />
} <br />
<br />
<br />
if (!EndUpdateResource(hUpdateRes, FALSE)) <br />
{ <br />
MessageBox(0,"Could not write changes to file.",0,0); <br />
}
1384 reprsente the exact size of the ico, I will chage it with sizeof or somethingelse
my problem is ico
acording to msdn ico, so the LPVOID lpData must be in "raw binary data" and the "text must be in Unicode format"
so I try that
char* ico;<br />
wchar_t *wchar=(wchar_t *)malloc( sizeof( wchar_t ) );<br />
<br />
_setmode( _fileno( stdin ), _O_BINARY ); <br />
FILE* file=fopen(szFile,"rb");<br />
FILE* filedest=fopen("dest.ico","w");<br />
fpos_t pos;<br />
if(fseek(file, 0,SEEK_END)!=0)MessageBox(0,"fseek erreur",0,0);<br />
else<br />
{<br />
if( fgetpos( file, &pos ) == 0 )<br />
{<br />
<br />
ico=(char*) malloc((size_t)pos);<br />
fseek(file, 0,SEEK_SET);<br />
fread(ico, sizeof( char ), (int)pos, file );<br />
mbtowc( wchar ,ico,MB_CUR_MAX );<br />
}<br />
}<br />
fclose(file);<br />
fclose(filedest);
I'm not sure about the mbtowc, ...
If have no clue to pass ico in "raw binary data and in Unicode format"
Pleazeeeeeeee help me!!
|
|
|
|
|
If the "lpType" parameter is a string resource, it must be in UNICODE format. That is what MSDN says.
But since your "lpType" is RT_ICON, you do not need to do anything, since a icon contains no text, just binary data.
But if you wanted to update a resource type of RT_STRING for example, *that* string(pointed to by lpData) would need to be made into UNICODE.
Bikram Singh
|
|
|
|
|
Dear All,
I am trying to reterieve all the table names of a data bases selected through ODBC Data Source. The Language is MS Visual C++ 6.0 and OS is Windows 2000.
Still i am unable to do it.
I have written a code for it which is given below and is not working
Please help me in this regard.
Anxiosuly Waiting for some Help
//Code
/*******************************
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLRETURN retcode;
char * szdatabase = "a";
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
SQLDriverConnect(hdbc, NULL, (SQLCHAR*)szdatabase, (short)(strlen(szdatabase)+1),
NULL, 0, NULL, SQL_DRIVER_NOPROMPT);
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
retcode = SQLTables(hstmt, (SQLCHAR*) "%", SQL_NTS, NULL, 0, NULL, 0, NULL,0);
omair
|
|
|
|
|
Does CDaoDatabase::GetTableDefCount() help?
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
Somebody know how to get the Handle window of the child window created with the Instruction CreateProcess, to relocate, resize, etc. this new window..
Thanks for your help.
|
|
|
|
|
This probably a hack, and someone else will come along and say "Don't do that, use function so-and-so". But I don't know of any function that does this directly. So what I came up with is to use EnumWindows() to enumerate all the top level windows. In the EnumWindowsProc() use GetWindowThreadProcessId() to compare the window process ID with the one you got from CreateProcess() . Just be sure to leave enough time between the CreateProcess call and the EnumWindows call for the window to be actually created.
Works like a charm.
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" mYkel - 21 Jun '04
Within you lies the power for good - Use it!
|
|
|
|
|
hello,
I have always asked myself, how a program as flashget knows download speed? is there any library that those that job? anyone can give me some info about? thanks a lot!
Paolo
|
|
|
|
|
Is there a way to jump of out a heavily-nested loop not by using goto statement? Since most people would agree that goto statement is evil, and it will easily destory a program's structure, so, I want to stay away from it. However, to my surprise, there is really no easy and effective way to jump out of a heavily-nested loop not by using it.
Well, I thought I should consult those experts on codeproject.com, so I could learn from them -- you.
Thanks
-----------------------------
C++ without virtual functions is not OO. Programming with classes but without dynamic binding is called "object based", but not "object oriented".
|
|
|
|
|
Alex Ngai wrote:
goto statement is evil,
It is not evil to use a goto statement when it transfers control to the end of the containing block. The C language even supplies you a couple of built-in constructs to make this easy to do - continue and break , the latter being nothing more than a continue followed by a loop terminator.
If you can't get yourself to use a goto for fear that someone will throw things at you in a code review (because they "learned in school that a goto is bad, bad, very bad"), you could instead throw an exception when you want to break out of a nested block, and take appropriate action in the catch .
Whatever you do, be sure to write a nice comment explaining what you've done. The person who ends up maintaining your code (usually yourself) will thank you for this while debugging at 3am on a winter's night.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
I recently saw a horrible code structure (thankfully that I didn't have to maintain) that looked like:
while ( TRUE )
{
if ( condition1 )
{
break;
}
if ( condition2 )
{
break;
}
break;
} Note the break at the bottom of the while block.
That's right: the while block isn't actually a loop at all - it's simply a device to get break to skip to the bottom of the block.
I'M NOT RECOMMENDING THIS. I think it's a horrible practice. It took me a good two hours to actually realise that it was, in fact, a goto.
When Dijkstra originally wrote his 'goto considered harmful' paper, he was pointing out the benefits of block control structures for those programmers using languages without them, or die-hard programmers not using those structures in the new languages. Uncontrolled, poorly-designed use of gotos is simply confusing - it's hard for a maintainer to know what's going on - but so is the misuse of any control structure. I don't recommend misusing exceptions in the way you suggest, either.
For more, see Gotos Considered Harmful and Other Programmers' Taboos[^].
Stability. What an interesting concept. -- Chris Maunder
|
|
|
|
|
|
Mike Dimmick wrote:
horrible code structure
Yikes! Three nested if-else s would have sufficed, since that it in fact the programmer's intent.
Mike Dimmick wrote:
I don't recommend misusing exceptions in the way you suggest, either.
Neither do I, as I'm sure you'd surmise if you re-read the "if" preceding the "suggestion".
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Just use a goto. You could use a meaningless throw with a catch at the point you want to jump to, but why do that? The end result is the same, and even less clear because there's not really an exception happening. If someone bitches at you for the goto, ask them for better suggestions.
--Mike--
Personal stuff:: Ericahist | Homepage
Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt
CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ
----
Come quietly or there will be... trouble.
|
|
|
|
|
I would advice against using exceptions for application flow, I've seen this mismanaged far too many times. 'goto's are not evil, programmers are , but in addition to different ways of breaking, you might want to revise your heavily nested loop and see if you can simplify it.
|
|
|
|
|
Alex Ngai wrote:
heavily-nested loop
You should attempt to restructure your code. Heavily nested statements (more than 3 levels deep), are not good programming practice!
So, I suggest, that while "goto" is fine to use in your case (remember, everything has its value), but I strongly suggest your restructure your loops!
cheers!
Bikram Singh
|
|
|
|
|
bikram singh wrote:
Heavily nested statements (more than 3 levels deep), are not good programming practice!
I agree. But they're also (unfortunately) very common.
Kevin
|
|
|
|
|