|
I think you cannot keep a pointer to an item in a collection ( are you talking about a std::set ? )
|
|
|
|
|
Maximilien wrote: are you talking about a std::set ?
No, the set class mentioned above is a class of my own creation, not a collection.
cSet is the base class for six derived types. When I say set, think of a combination of playing cards arranged into groups.
|
|
|
|
|
When you add cards, you store the cards in a collection of some sort?
Does this collection rearrange its memory to grow?
Though I speak with the tongues of men and of angels, and have not money, I am become as a sounding brass, or a tinkling cymbal. George Orwell, "Keep the Aspidistra Flying", Opening words
|
|
|
|
|
Each instance of a derived class is dynamically allocated and added to a vector of cSet pointers. After all the cards have been processed, I run through this vector deleting any empty sets. So no, the memory is not rearranged. Another point to note, the problem occurs before deleting any empty sets.
|
|
|
|
|
WalderMort wrote: Each instance of a derived class is dynamically allocated and added to a vector of cSet pointers.
And the set holds a pointer into that vector?
You realize that std::vector holds copies of the data you insert?
And you realize that when std::vector needs to grow to accomodate more items, it copies the elements it holds? Thereby, all memory-pointers (e.g. this-pointers) might get invalidated.
But maybe I simply don't understand your data model completly.
Though I speak with the tongues of men and of angels, and have not money, I am become as a sounding brass, or a tinkling cymbal. George Orwell, "Keep the Aspidistra Flying", Opening words
|
|
|
|
|
jhwurmbach wrote: You realize that std::vector holds copies of the data you insert?
Yes I realize that, that is why the vector holds only pointers to those classes. Only the address of memory location is copied and not the memory itself.
|
|
|
|
|
Ok, and the structures whose pointers are held in the vector do contain a reference to the vector itself?
Though I speak with the tongues of men and of angels, and have not money, I am become as a sounding brass, or a tinkling cymbal. George Orwell, "Keep the Aspidistra Flying", Opening words
|
|
|
|
|
Somebody please kick me up the &^%
The problem, as annoying as it was, was my own stupid mistake. During the restructuring and rewriting of my project, I left a header file which contained an old definition of the structure, without that void pointer.
I just can't understand why the compiler didn't warn me about it.
|
|
|
|
|
can anyone tell me how to load a resource in vc++ in vs2003.net
I mean the steps.....
from creating the resource with IDE to adding it to the project
is there any diffrence between adding with vs6.0 with vs.net2003?
|
|
|
|
|
From the Project menu, the solution explorer (right click on project), or the Resource view (right click on project or resource folder)...
Choose Add/Resource...
In the Add resource dialog, select the resource type and click the New button or
In the Add resource dialog, click the Import... button to import an existing resource from a file.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
I'm trying to parse values from a text file. I read the lines and stored them in a std::string, then I maked a
<br />
std::string stTemp;<br />
string::size_type loc = stTemp.find( " ", 0 );<br />
Now this works fine if the values inside the text file are delimited with " " spaces. but they are separated with "tabs". Damnit How do I read them?.. I went mad and tried
:
<br />
string::size_type loc = stTemp.find( "\t", 0 ); X| <br />
I guess I'm missing some basics here. Light please.
|
|
|
|
|
look at the string in the watch window, and you should see the TAB is equal to char 9 (pretty sure, just not 100%).
Then you can do:
string::size_type loc = stTemp.find( (char)9, 0 );
There you go!
Iain.
|
|
|
|
|
Thanks, But please check my reply to David.
|
|
|
|
|
This works fine for me:
void main( void )
{
std::string strTemp = "Now\tis\tthe\ttime\tfor";
int nPos = strTemp.find("\t");
nPos = strTemp.find("\t", nPos + 1);
}
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Both, yours and Ian's didn't work. I see it actually works for the string when you hardcode it but doesn't when you fill the string with the buffer that you read from the file. If you can check this is for me with the file I'm linking here , it will be really great. The Sample File[^] Thanks!
|
|
|
|
|
Is there a particular reason that you cannot copy the data to an allocated buffer (which is basically what std::string does), and then use strtok(...) to skip through it?
Peace!
-=- James Please rate this message - let me know if I helped or not!<HR> 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! See DeleteFXPFiles
|
|
|
|
|
Yeah I'm having two versions for the same. One is using strtok, but my colleagues here are not using it. So at the last moment if they say I cannot use it , I'd immediately replace it with the substring-find thing
|
|
|
|
|
This (again) works fine:
void main( void )
{
ifstream in("c:\\MapSample.txt");
string sLine = "";
getline(in, sLine);
int nPos = sLine.find("\t");
nPos = sLine.find("\t", nPos + 1);
}
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
|
Hi all,
I have an application which uses MS Access, SQL Server and MYSQL as back ends
Only one connection is opened at a time
My problem is,
when i tried to open the my sql connection after closing an MS Access connection it shows the following error message, but no problem with the SQL Server
Cannot start your application. The workgroup information file is missing or opened exclusively by another user
I am using Connection15::Open to open the connection
I used same connection object to open all connection
Thanks
Sivan
www.ktsinfotech.com
|
|
|
|
|
Sivan Manimala wrote: Cannot start your application. The workgroup information file is missing or opened exclusively by another user
Where is the .mdw file located?
Also, have you seen this?
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
I am not trying to connect to ms access again
instead i am trying to connect to MySQL.
the system flow is like this
when the app starts it will connect to a MS Access 2000 database which is in the installation folder of the application
according to the requirements of the user he is allowed to change the database to MS SQL Server/MySQL. changing the connection to SQL Server is ok but when trying to connect to My SQL, this prblem occurs
what is the use of the .mdw file
if my sql is using this file then why
the system.mdw file is located in C:\Program Files\Microsoft Office\Office folder.
www.ktsinfotech.com
|
|
|
|
|
Hello gurus,
I have some compilation issues when using the following calls in an x64 environment in Visual Studio 2005:
- SetWindowLong : error C2065: 'GWL_WNDPROC' : undeclared identifier
- GetWindowLong : error C2065: 'GWL_HINSTANCE' : undeclared identifier
- SetClassLong : error C2065: 'GCL_HBRBACKGROUND' : undeclared identifier
When digging in WinUser.h in the platform sdk installed from "en_platformsdk_windowsR2_march2006.iso" I can see the following lines:
...<br />
<br />
#define GWL_WNDPROC (-4)<br />
#define GWL_HINSTANCE (-6)<br />
#define GWL_HWNDPARENT (-8)<br />
#define GWL_STYLE (-16)<br />
#define GWL_EXSTYLE (-20)<br />
#define GWL_USERDATA (-21)<br />
#define GWL_ID (-12)<br />
<br />
#ifdef _WIN64<br />
<br />
#undef GWL_WNDPROC<br />
#undef GWL_HINSTANCE<br />
#undef GWL_HWNDPARENT<br />
#undef GWL_USERDATA<br />
<br />
#endif /* _WIN64 */<br />
...
It seems that when compiling for x64 platforms, the constants are undefined. So I logically get the compilation issue "undeclared identifier".
Does anybody already have had this issues?
If so, how can I solve these issues?
May day!!
Best regards.
Fred.
There is no spoon.
|
|
|
|
|
32-bit const - 64-bit const
GWL_WNDPROC - GWLP_WNDPROC
GWL_HINSTANCE - GWLP_HINSTANCE
GCL_HBRBACKGROUND - GCLP_HBRBACKGROUND
Please refer here[^] for more information.
Regards,
Paresh.
|
|
|
|
|