|
|
I'm very agrivated right now. I've created a worker thread that reads a file.. thats working perfectly. It parses and places all the data into an struct CArray. After that it checks for incomplete data. This is where things get screwy. It downloads a file perfectly (the function) in the thread with out crashing.
BUT
when I try to send the string that contains the missing data's URL it crashes. (See code)
CString CBookmarks::GetAllKeywords(LPVOID pParam)
{
//Declare Varables
//Date: 4 8 03
CBookmarks* pMain = static_cast<cbookmarks*>(pParam);
CCriticalSection m_cSection;
CString m_strAllKeywords;
int nSize=pMain->m_structBookmarks.GetUpperBound();
//
//DisplayItems
for (int i=0; i<=nSize;i++)
{
m_cSection.Lock();
m_strAllKeywords+=DownloadFile(pMain->m_structBookmarks[i].m_strURL);
m_cSection.Unlock();
m_strAllKeywords+=", "+pMain->m_structBookmarks.GetAt(i).m_strKeyword;
}
return m_strAllKeywords;
}
This crashes even when the debugger is running.
It reads the keywords from the first entry and then craps out when it repeats. The data in the next string is fine.
Even a TRY, CATCH_ALL doesn't catch it.
HELP!
-Steven
By reading this message you are held fully responsible for any of the mispelln's or grammer, issues, found on, codeproject.com.
For those who were wondering, actual (Linux) Penguins were harmed in creating this message.
|
|
|
|
|
Your locking looks odd. You have a lock declared as a local variable. This means that you aren't really locking anything since that routine has its own private lock. Also, if m_structBookmakrs is what you are trying to lock, then the GetUpperBound call isn't protected and could cause problems. That access should be locked too.
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
I did that and it still gives me a "runtime error" when I do that. Also when I try and debug it it doesn't give any information. When I don't use the loop varible i as the array number in the DownloadFiles function it returns the information perfecty, no matter how many times it runs in the loop.
-Steven
CPACodeProjectAddict
By reading this message you are held fully responsible for any of the mispelln's or grammer, issues, found on, codeproject.com.
For those who were wondering, actual (Linux) Penguins were harmed in creating this message.
|
|
|
|
|
Move m_cSection.Lock() and m_cSection.Unlock() outside the loop.
Kuphryn
|
|
|
|
|
That didn't help. It still returned a Runtime Error.
-Steven
CPACodeProjectAddict
By reading this message you are held fully responsible for any of the mispelln's or grammer, issues, found on, codeproject.com.
For those who were wondering, actual (Linux) Penguins were harmed in creating this message.
|
|
|
|
|
Hi everyone,
I feel stupid, can anyone tell me the code for putting the check mark on a menu?
~ Selevercin
If you have a problem with my spelling, just remember that's not my fault. I (as well as everyone else who learned to spell after 1976) blame it on Robert A. Kolpek for U.S. Patent 4,136,395.
|
|
|
|
|
CWnd::CheckMenu or ::CheckMenu sound like they could be useful...
There are 10 kinds of people - those that get binary and those that don't.
|
|
|
|
|
Hmmm...
Well, I just found the UpdateUI function, but it doesn't seem to do what it claims. I said pCmdUI->SetCheck(), but with no success. Didn't remove a check, or make one.
I tried something using the info that you gave me, but also with no success: GetDlgItem(IDM_SEND)->CheckMenu()... The compiler also didn't like this. Apparently, CheckMenu isn't a member of CWnd, which sounds ridiculus (due to the info you gave me).
Any other ideas?
If you have a problem with my spelling, just remember that's not my fault. I (as well as everyone else who learned to spell after 1976) blame it on Robert A. Kolpek for U.S. Patent 4,136,395.
|
|
|
|
|
Selevercin wrote:
CheckMenu isn't a member of CWnd
CMenu::CheckMenu is probably what I meant to say...
Are you sure your UpdateUI handler is actually being called? If you have a splitter window or something similar, it won't get called if the window is not focused.
You might also need to do something like this:
CMenu *pMenu = GetMenu();<br />
CMenu *pSubMenu = pMenu->GetSubMenu( ... );<br />
pSubMenu->CheckMenuItem( ... );
Look at the help for GetMenu, GetSubMenu and CheckMenuItem
There are 10 kinds of people - those that get binary and those that don't.
|
|
|
|
|
Ok, that does it. Thanks!
If you have a problem with my spelling, just remember that's not my fault. I (as well as everyone else who learned to spell after 1976) blame it on Robert A. Kolpek for U.S. Patent 4,136,395.
|
|
|
|
|
How do I create an CArray of CArrays if I wanted to use a structure with some variables and a CArray embedded in it?
I have something like this:
struct STest
{
int IndexNumber;
CArray Data;
};
And then I made a CArray of this struct:
CArray <stest,stest&> FinalArray;
STest TempData;
Then I tried to Add with the FinalArray after loading the TempData with some data Ie:
FinalArray.Add(TempData);
When I compile I get a "operator =' function is unavailable" message.
What have I done wrong and what can I do to fix this?
|
|
|
|
|
STest needs to have an overloaded equals operator.
I recommend you make FinalArray an array of pointers to STest. Then you won't have to worry about it and you'll prevent a potential performance problem.
|
|
|
|
|
Since you are storing an array of objects, rather than an array of pointers, the objects will be copied into the array. This means that C++ uses the autogenerated assignment operator for STest. However, the CArray template class disables both the copy constructor and the assignment operator, therefore disabling simple copies of the array.
There are a number of solutions for this. Here's a few:
1) Store STest pointers in the outer array instead of objects. This means that only the pointers are copied rather than the entire object (and hence the inner CArray is not copied). This means that the objects must be allocated and deallocated manually on the heap.
2) Use std::vector instead of CArray. This is much better implementation overall, and does not have the copying limitation either.
BTW, when posting on codeproject, use < and > instead of < and >, otherwise they look like HTML tags and so are not displayed.
Dave
http://www.cloudsofheaven.org
|
|
|
|
|
This is how you create a CArray that holds structures.
typedef struct {
int IndexNumber;
CArray Data;
} structName;
CArray<structname,structname&> m_caFinalArray;
Then to add data you must add it like this:
structName m_tempStruct;
m_tempStruct.IndexNumber=1000000000000000000; //whatever number you need
m_tempStruct.Data=blah; //more data
m_caFinalArray.Add(m_tempStruct);
-Steven
CPACodeProjectAddict
By reading this message you are held fully responsible for any of the mispelln's or grammer, issues, found on, codeproject.com.
For those who were wondering, actual (Linux) Penguins were harmed in creating this message.
|
|
|
|
|
So far i've set up a timer for 1000ms and each WM_TIMER event I capture the screen and save it to a BMP. If I wanted to record at 12 FPS how would I do this...?
Would I basically setup a counter and stop recording when it reaches 12?
How do I ensure I get 12 frames per second?
Also when playing the images back, how would I allow some frames to have differ delays?
p.s-If you know of any code on CP or wherever than would convert 24bit images to 8bit RLE encoded, please let me know...
Thanks.
"Two wrongs don't make a right, but three lefts do!" - Alex Barylski
|
|
|
|
|
You could set your timer to 83ms which would happen roughly 12 times per second.
-Jack
There are 10 types of people in this world, those that understand binary and those who don't.
|
|
|
|
|
Cool idea, I didn't even think of that...
Thanks
"Two wrongs don't make a right, but three lefts do!" - Alex Barylski
|
|
|
|
|
Remember the WM_TIMER timer is not high-res - i.e. it is not guaranteed to fire exactly when it is set to fire.
"Do unto others as you would have them do unto you." - Jesus
"An eye for an eye only makes the whole world blind." - Mahatma Gandhi
|
|
|
|
|
Hi,
I have an ActiveX control and its dependend DLLs within a CAB file that we use within our web application. I also use this same control in a fat VC client. We currently deploy the control for our fat client by an install shield script. I'd like to get away from having to deploy this control, since I know it's sitting on a local web server in a cab file.
Is there an API set that allows me to reference the CAB file rather than bundling the control in my setup script? In other words, I'd like my fat client to instantiate the object via an http call to my web server and pull down the control rather than me having to wrap it in my install script. Any ideas appreciated.
Ron Ward
|
|
|
|
|
Hi all
I want to buy a Sony 17'' LCD monitor and I need some help .
First I haven't found much ratings/reviews about this monitor . If anybody has used this type maily for programming please write me .
I have found a sigle review but this is in french . Can somebody translate it?
I would greatly appreciate
"....
le + beau ( vaux mieux pour le prix )
17" 500/1 16ms décoiffant
si vous en avez les moyens achetez-le.
....."
The URL is:
http://www.ldlc.fr/critiques/PB00016180_1.html
Thanks a lot
Jancsi
|
|
|
|
|
jancsi wrote:
vaux mieux pour le prix
Best value for the price
jancsi wrote:
si vous en avez les moyens achetez-le
If you have the means, buy it
--Mike--
THERE IS NO THERE IS NO BUT THERE IS
MAGIC PIXIE DUST BUSINESS GENIE CODE PROJECT
Homepage | RightClick-Encrypt | 1ClickPicGrabber
"You have Erica on the brain" - Jon Sagara to me
|
|
|
|
|
jancsi wrote:
le + beau ( vaux mieux pour le prix )
Most beautifull (fortunately at this price)
|
|
|
|
|
I don't know how to delete a file in mfc.
|
|
|
|
|