|
Ok, these lines of code are directly from the MSDN.
char line[25];
cout << " Type a line terminated by carriage return\n>";
cin.get( line, 25 );
cout << line << endl;
This will run fine when placed in my main, (first lines). However when placed in a method of a class and called, via the user selecting from a menu, the screen continuously scrolls. Do I need to clear the buffer?
Is it always this difficult to code in C++? I have been spending a couple hours just to code to take a line of text from the user.
Also what is the "compile with: /EHsc" that the MSDN shows?
If only I had more time!
|
|
|
|
|
maybe u could post more code. ur code is too cryptic for any form of debugging. esp post in detail how u called the code in the class and how the user select from a menu.
normally, a scrolling screen is due to a improper looping. in this case, it might be because u've tried to use a while loop to get the user input from the menu, until the user decides to terminate the program with a special character, right? try removing the loop first if this is the case, and debug again.
it's not difficult to code in c++ at all, just that you're not used to it. i've coded genetic algoritms, ant colony system and dijkstra's algorithm all in c++, with each algorithm averaging 1.5 weeks. i can't even begin to think of how to start my coding in VB..
"Learning does not make one learned: there are those who have knowledge and those who have understanding. The first requires memory, the second philosophy." - Abbe Faria, The Count on Monte Cristo
|
|
|
|
|
I found the fix. I needed to remove the newline character since cin.get(name, length) leaves it(the newline char) in the buffer. The line to add is a simple "cin.get(discard);" where discard is declared as a char variable. I am using a while loop for the menu. This menu was seeing the newline char constantly. Thanks for your help, I'm still trying to learn all the little things of C++ like this one.
Randy
If only I had more time!
|
|
|
|
|
ng kok chuan wrote:
...the english name wastes a lot of memory.
The word "lot" is a very subjective term. If the machine has but a few MB of physical RAM, then the unnecessary allocation of a few more bytes might matter, but given everything else that Windows' memory manager is doing, the extra bytes will definitely go unnoticed.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
yup, i guess u're right. i've been too well-trained to think lean and mean :p.. however, using strings still have their advantages, as it dynamically allocates memory. this can help to prevent some wise user from entering longer than allocated mem space.
"Learning does not make one learned: there are those who have knowledge and those who have understanding. The first requires memory, the second philosophy." - Abbe Faria, The Count on Monte Cristo
|
|
|
|
|
I'm not sure if this is the best place for this question but here it goes:
Does anyone here use MKS Source Integrity for source control? If so, does anyone know how to use their command line interface to add project members?
|
|
|
|
|
Solution to add project members:
Usage: si add options... nonmember...; options are:
--[no]retainWorkingFile Retain the non-member file (as-is) in the sandbox
-l Lock member revision
--lock Lock member revision
--onExistingArchive=[confirm|cancel|sharearchive|newarchive] The behaviour to follow if an existing archive is found
--[no]saveTimestamp Save the timestamp of the working file
--archive=value Associated archive (must exist) for the new member.
--author=value The author of the newly added member revision
--binaryFormat Format of the member's revision data/files
--changePackageId=value The associated change package ID (see documentation)
--[no|confirm]closeCP Close the associated change package(s)
--cpid=value The associated change package ID (see documentation)
--[no]createSubprojects Create one subproject per directory, as required.
-d value Description for newly created archives
--[no]defer Defer the add from taking place in the project until submitted
--deployType=value The name of the deploy type
--description=value Description for newly created archives
--descriptionFile=value The file containing the Description for newly created archives
--issueId=value The issue ID to use to find the associated change package ID (see documentation)
-r value Revision at which the non-member is to be added
--revision=value Revision at which the non-member is to be added
--textFormat Format of the member's revision data/files
--[no]unexpand Remove keywords from newly created revision
-R Select the non-members recursively
--exclude=file:pattern,dir:pattern... where "pattern" is a glob pattern
--include=file:pattern,dir:pattern... where "pattern" is a glob pattern
--[no|confirm]includeFormers Include former members
--[no|confirm]recurse Select the non-members recursively
-S value The name of the sandbox
--[no]failOnAmbiguousProject Whether to abort when multiple projects correspond to a flat project string.
--sandbox=value The name of the sandbox
-? Shows the usage for a command
-F value Read the selection from a specified file
-N Responds to all confirmations with "no"
-Y Responds to all confirmations with "yes"
--[no]batch Control batch mode (no user interaction in batch mode)
--cwd=value Act as if command executed in specified directory
--forceConfirm=[yes|no] Specify an answer to all confirmation questions
-g User interaction should happen via the GUI
--gui User interaction should happen via the GUI
--hostname=value Hostname of server
--no Responds to all confirmations with "no"
--password=value Credentials (e.g., password) to login with
--port=value TCP/IP port number of server
--quiet Control status display
--selectionFile=value Read the selection from a specified file
--settingsUI=[gui|default] Control UI for command options
--status=[none|gui|default] Control status display
--usage Shows the usage for a command
--user=value Username to login to server with
--yes Responds to all confirmations with "yes"
|
|
|
|
|
Can anyone point me to a good source/article on how to change the MFC combo box color. By changing the color I mean the background, the drop button and the scroll bar color has to be changed. I know , that it will be owner drown control,and honestly I could create by myself, but it will definitely take few days to create. So please, can anyone help me out?
|
|
|
|
|
Per MSDN:
"To change the color of the drop-down list box, create a CComboBox with an override of OnCtlColor that checks for CTLCOLOR_LISTBOX in the nCtlColor parameter. In this handler, the SetBkColor member function must be used to set the background color for the text."
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
Thanks for the reply, unfortunally this will only change the color for the listbox. The drop down button color will remain unchanged. Basically, changing the color of this button is the major problem.
|
|
|
|
|
See if MSDN articles Q81707 and Q174667 are of any help.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
Does anyone know where to find an implementation in C of the BDD? Or an algorithm not so criptical. Or maybe someone has something like that.
|
|
|
|
|
Take a look at Fabio Somenzi's website http://vlsi.colorado.edu/~fabio/CUDD/. His Cudd Package is quite famous in the VLSI research cycles. I have used it for about 5 years now.
There is no simple algorithm when it comes to BDDs. People spend years of research on BDD algorithms. I worked with BDDs for five years and unless you are involved strictly with BDDs it is nearly impossible to implement your own algorithms. Just take a look at the source code of Somenzi's package and you will understand.
Time is the fire in which we burn.
|
|
|
|
|
I know about CUDD. As for understanding enough about BDD to make your own algorithm...it's been almost six months since I've started to learn about BDD and still I'm not able to do it.
I guess I'll just try to reduce my expresions by "hand".
Thanks.
|
|
|
|
|
I have a text file where the contents are written all in 2 very long lines. My C++ program looks through it searching for an occurance of a certain string. However, my program says that it never finds that string, even though I know that there are several occurances of it (I checked the file), I know the file is in unicode, and my program is set to work with unicode with a _T() macro used to declare the string. I also told my program to look for another string, which it finds one occurance of (even though there are also several of them). Now, I suspect this might have something to do with how the CString::Find works. I read the file by lines into a buffer using CStdioFile::ReadString, then I have several if statements, the first asking if file.Find(string2) != -1 && file.Find(string1) == -1 , the second if file.Find(string1) != -1 && file.Find(string2) == -1 , the third if file.Find(string2) < file.Find(string1) and last if file.Find(string1) < file.Find(string2) . The only thing I can think of that could be preventing my program from finding all instances of these strings is if CString::Find keeps track of where it left off. So for example if the string is _T("dog, cat, mouse") and I used string.Find(_T("cat")), then the pointer is set after the car and I can no longer search for string.Find(_T("dog"))? Can someone tell me if this is indeed the case, and if not suggest something else that could be causing this. Thanks.
|
|
|
|
|
woooow, is your "Return" keyboard key broken ?
thanks to you dare putting some punctuation...
TOXCCT >>> GEII power [toxcct][VisualCalc]
|
|
|
|
|
|
Anonymous wrote:
it finds one occurance of (even though there are also several of them).
Be aware that CString::Find only searches for the _first_ occurence of the substring, so you need to shrink the searched string (file in your example) after having found the first occurence. Could you post some more code ?
Anonymous wrote:
even though I know that there are several occurances of it (I checked the file),
And did you check the string you have read in with the debugger ?
~RaGE();
|
|
|
|
|
Anonymous wrote:
...my program is set to work with unicode with a _T() macro used to declare the string.
Which means nothing if you have not defined UNICODE and _UNICODE .
Anonymous wrote:
Can someone tell me if this is indeed the case...
No, that is not the case, unless you explicitly supply a second parameter.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
Hello,
In the InitInstance of my CWinApp, I simply create an CPropertyPage by
just simply
CPropertyPage p(SOME_RESOURCE_ID);
just after finished creation, I make a call on SetWindowTile by
p.SetWindowTitle(_T("Opps"))
Whenever the SetWindowTitle code being executed, an illegal operation
will be thrown. I can avoid this problem if I place the SetWindowTitle
in InitDialog of the property page. But that is not I want.
May I know why calling the SetWindowTitle just after the creation of
dialog/ property page will cause illegal operation. How I can solve
this?
Thanks.
|
|
|
|
|
Property pages do not exist until that are "activated" for the first time. The documentation for CPropertySheet::AddPage() states:
"AddPage adds the CPropertyPage object to the CPropertySheet object’s list of pages but does not actually create the window for the page. The framework postpones creation of the window for the page until the user selects that page."
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
p.m_psp.dwFlags|=PSP_USETITLE;
strcpy(p.m_psp.pszTitle,"Opps");
or even
p.m_psp.dwFlags|=PSP_USETITLE;
p.m_psp.pszTitle="Opps";
Could this solve the problem ? I think it crashes only because the window does not exists, and SetWindowTitle asserts the window handle somewhere.
~RaGE();
|
|
|
|
|
The property page has to be created first... the constructor just initializes the class, but not the window itself -> without window, no window title change!
Don't try it, just do it!
|
|
|
|
|
Hi all,
I have this tiny dll which exports a single function (as extern "C")
looking like this:
<br />
void test123(int *t)<br />
{<br />
*t = _open("c:\\feedback.xml", _O_RDONLY | _O_TEXT);<br />
}<br />
Now the problem is: if I use this in a test program like this:
<br />
test123(&fd);<br />
FILE* fp = _fdopen(fd, "rt");<br />
I get a pretty weird crash in _fdopen(). I also tried to use the fopen call in the test123 function and let it return the FILE*. Now it won't crash but I can't read from it either. Any body got an idea what's going on?
(what I'm actually trying is to read from a buffer through a FILE*. I'm creating a pipe, write the contents of the file to it, pass on the filedescriptor of the read end and transform it to a FILE* with _fdopen. So if anybody can provide me with another way to do this, plz let me know. But it is very important that I can use a FILE* to read from the buffer. Has to do with a porting job...)
I used to have a life ... now I have a computer
|
|
|
|
|
Shouldn't you be checking the value of fd to make sure it is not -1? This would indicate that _open() failed.
To eliminate the DLL as part of the problem, put the calls to _open() and _fdopen() in the same spot. Does it work then?
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|