|
Answer is apart. Why you want to do it Like that?
|
|
|
|
|
C/C++ has no built-in mechanism to do that.
you will have to come up with some kind of data structure which maps a string to a variable. maybe put the variable name in the structure itself, then search your collection of structs to find the one you want. or, create a std::map which uses a string (var name) as the key and a struct as the value. or... there are lots of options - none of them are great.
|
|
|
|
|
If you want to use c++ make a class instead of struct:
class CStudentInfo
{
public:
enum EVal
{
erollnumEVal,
emark1EVal,
emark2EVal
};
int GetValue( EVal eVal )
{
int iRetVal = 0;
switch( eVal )
{
case erollnumEVal:
iRetVal = rollnum;
break;
case emark1EVal:
iRetVal = mark1;
break;
case emark2EVal:
iRetVal = mark2;
break;
default:
ASSERT( FALSE );
break;
}
return iRetVal;
}
private:
int rollnum;
int mark1;
int mark2;
}
But why do you need something like this?
couldn't it be just simple:
class CStudentInfo
{
public:
int Getrollnum()
{
return rollnum;
}
int Getmark1()
{
return mark1;
}
int Getmark2()
{
return mark2;
}
private:
int rollnum;
int mark1;
int mark2;
}
|
|
|
|
|
Use a hash map. The name of the variable in the name of the entry. The value of the variable is the value of the entry.
|
|
|
|
|
Please do not cross-post! It just makes it harder for everyone to gather the sparse information that is already there[^], and makes people waste time repeating the same queastions and suggestions in two different places!
Instead, please answer the questions, especially what you need this for. The answers to these questions are really necessary for us to make a meaningful response that actually helps you with your problem. As long as you're silent about your real intent, we can only guess! And, judging by the little information you gave us, you don't know what you're doing. Much less do we.
Also, please respond to the suggestions already made, whether or not they fulfill your purpose. If you ask a question, you expect a response. Likewise, the people responding expect that you indicate when that wasn't helpful, and why.
P.S.: Just to make a point and explain why I think you do not know what you'r doing or asking:
The name of a variable in a program only really makes sense to the programmer who wrote it. The same object stored under that variable name may be stored under a different name in another part of the program. Likewise, a different part of the program may store a different object under the same name.
As a result, the user of the program can never tell with certainty what the name of a specific object in the source code of the program at any given time is. the only way to tell this, is if you are looking at the source code that is currently executed, i. e. if you are debugging the code. Is that your purpose? If so, the task you're on is likely a whole lot more complex than you can imagine. If not, you're probably asking the wrong question, and you need something different than what you're asking for.
|
|
|
|
|
I have an MDI application ... somewhere, I had open an CDialog derived dialog, where I have only two buttons ... but in this dialog I can not catch any OnKeyDown event ... why ?
I had tried in follow way:
void CMyDialog::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
MessageBox("A");
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}
void CMyDialog::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
MessageBox("B");
CDialog::OnChar(nChar, nRepCnt, nFlags);
}
on any key pressed, I see no MessageBox ... why ?
I even had overridden ON_WM_GETDLGCODE:
UINT CMyDialog::OnGetDlgCode()
{
return DLGC_WANTALLKEYS;
}
nothing worked ... what should I do to know when the user press a key, when CMyDialog has the focus ?
Thank you.
modified 30-Apr-13 5:59am.
|
|
|
|
|
|
Great, now does function ! Thanks !
|
|
|
|
|
Hi
I have a child process a win32 program
The parent is a console program
In the child process I would like
To read the console buffer only in certain
Situations
Can I have a ReadFile with the handle
Of the parents stdout and signal
The read from the parent process
By signaling the hEvent of the overlapped
Structure
Thanks
|
|
|
|
|
|
Hi
Thanks but I want the child windows
Program to read the parents (console program)
Stdout
|
|
|
|
|
This is no joke, so please no “update” suggestions, OK.
I have regretfully downloaded both VS 2010 and VS2008 to do some testing with Cmake.
Now my VC 6.0 is building DSW and SLN and some other crap files – but no DSP!
The most visible result is – no more access to “workspace”, my VC IDE is toast!
I am about to delete all the new crap I downloaded and start over.
I recall that when MS came up with VB4 the developers had similar problems working with older VB.
Any other suggestions to fix this? I really need to finish the project in VC 6.0 than MAYBE switch to VS2008, but this is nuts.
Only serious replies will be appreciated, not in the mood.
Cheers Vaclav
|
|
|
|
|
Vaclav_Sal wrote: Now my VC 6.0 is building DSW and SLN and some other crap files – but no DSP! Building DSW and SLN files? Do you mean it is building a (DLL/EXE) project from those files?
Vaclav_Sal wrote: The most visible result is – no more access to “workspace”, my VC IDE is toast! So if you try and open a DSW file from within the IDE, you get this message?
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
No, I load workspace using DSP project file.
When I compile it my "workspace" window freezes.
I cannot move aroudn the files , no scroll, and or when I click on any file I get something I assume is pointer failure and the IDE closes. I am not smart enough to troubleshoot the compiler problem like this one.
When I check where the original project DSP file was I got SLN and DSW and some other junk there. When I got rid of the SLN file it partially worked again.
I did get rid of all VS downloads and have no more of this problem. It sure looked like when you are using VS on VC programs and you get the "it was compiled with... do you want to convert to ..." , but it does the conversion half baked and automatically.
I did have some partial 2012 files which never completed the download.
It seem that some of the new stuff will work only in Win7 but it is not advertized as such.
I did not try to run the sln file. It would be interesting what would happen.
Vaclav
|
|
|
|
|
Vaclav_Sal wrote: No, I load workspace using DSP project file. With which version VC or VS2010?
Vaclav_Sal wrote: When I check where the original project DSP file was I got SLN and DSW and some other junk there. So you tried to update the project to a newer version of the IDE; again which one?
Vaclav_Sal wrote: it does the conversion half baked and automatically. That has never happened in my experience. Did you keep backups of your original files?
Vaclav_Sal wrote: I did not try to run the sln file. .SLN files are merely text files containing XML which describes the names and locations of the projects witihn a solution. It is used by Visual Studio to access the project files, and hence the source files and build rules.
Understanding the structiure of Solution and Project files is important when using any version of Visual C++ or Visual Studio. MSDN contains information about them, and Microsoft has a forum dedicated to the subject.
Use the best guess
|
|
|
|
|
Richard,
Fortunately I archive my project after each major task is completed. As far as I know only VS / VC6.0 has DSP project files, but I may be wrong. I guess my the main question remains - why does my VC IDE bombs out when I have ANY VS 20xx installed and I am not using them.
Thanks for all you comments.
Vaclav
|
|
|
|
|
Vaclav_Sal wrote: why does my VC IDE bombs out when I have ANY VS 20xx installed and I am not using them. Sorry, no idea. As I said above, I have done this myself without problems in the past. I can only assume that you tried opening one of the VC6 solutions in a later Visual Studio which converted or somehow corrupted one of the project files.
Use the best guess
|
|
|
|
|
The problem is obviously that you converted the old workspace into a new one (.dsw to .sln). After that you can't use it anymore with VS 6. Your best option is to revert to the files you had before conversion. If you don't have a backup you can either try to open the .dsw file (that contains the old workspace information for VS 6) or you may try to recreate all the projects, add the source files and hope that you get the project settings correctly.
I have installed VS 6 and some newer ones (up to VS 2010) in parallel on my machine. Usually this gives no problem. The key rule is: Always keep the projects separate, never open a project in anover VS version than it is intended for.
|
|
|
|
|
If the problem was so obvious I would not post it here.
Please read my OP and follow-up response.
Vaclav
|
|
|
|
|
In the C++ world, VS6 used different project and workspace files from subsequent VS versions. Here is a summary:
Project Workspace/Solution
File File
VS6 x.dsp x.dsw
VS.Net 2002 x.vcproj(?) x.sln
VS.Net 2003 x.vcproj x.sln
VS 2005 x.vcproj x.sln
VS2008 x.vcxproj(?) x.sln
VS2010 x.vcxproj x.sln
This is from memory - there may be errors.
VS6 also used x.sln files but they were for web projects (and maybe something else?). If you end up with a x.dsp and x.sln file with VS6 then something is confused. I am doubtful that it will work. You probably want to delete the x.sln file, go to VS6 and select "Start a new project" and add your existing x.dsp to it. This should create an x.dsw file for you. If it creates or tries to use the x.sln file then something is wrong...
--
Harvey
|
|
|
|
|
Thanks,
unfortunately I just deleted the sln and it did not help.
I have no VS greater that 6 on my box, so everything works in VS 6.I may try adding VS 2008 again to test the CMAke.
Many thanks for your input, appreciate it.
This also partialy explains why I can start a new project from dsw file but I cannot add DSW into existing project - IDE complains.
Vaclav
|
|
|
|
|
Hi
I need help with the following knowledge base article
http://support.microsoft.com/kb/147578[^]
In a method of my main window I have the following code
CMainframe::Process()
{
HWND main_handle = (HWND) this;
In my worker thread
CWnd* windowptr = new CWnd;
windowptr->attach(main_handle);
windowptr->SendMessage(...
My question is this coding correct as the article says
When working between threads not to pass object pointers
Rather handles and attach the handles to the MFC object
Thanks
As I am s getting exceptions on the SendMessage in my worker thread
|
|
|
|
|
ForNow wrote: As I am s getting exceptions on the SendMessage in my worker thread What exception is being thrown? Are you trying to send a UI-related message to the main thread from a worker thread?
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
The worker thread is communicating with Hercules
dos C program when I get information
From Hercules I do a readfile (named pipes)
And send the buffer ptr as a wparam
The buffer is allocated on the heap via new
So any thread can access it
|
|
|
|
|
Hello everyone.
I was wondering what advice can you give on how to create a data/business model in C++. I mean, when working with C# I usually have no problems, simply follow .NET's guidelines, but it seems there aren't guidelines in C++ on this regard. Is there any example you'd like to share?
I'm thinking common scenarios like a sales system (product, warehouse, pricing, purchase order) or a search inverted index (term, documents, posting, posting lists, dictionaries).
What are your thoughts?
|
|
|
|