|
Well, symbols A-F of hexadecimal base system have nothing special. You can use N distinct symbols (as well an ordering criterion) to represent digits in a N -base numeric system. For instance you can use, though it is unpractical, the {ON,OFF} pair as digits for the binary system.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
nice talking to u and Dex
|
|
|
|
|
si_69 wrote: What would be the best way to convert a CString value of say "C-YOu01"
What is your desired output for the above string? Numeric value 1? (because 01 is 1)
Your solution has to be simple, but then that would depend on how the string will look like (no. of digits and the pattern in which they appear in the string). If you are clear on that part, you can easily write a solution.
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
si_69 wrote: What would be the best way to convert a CString value of say "C-YOu01"
to a numerical value ?
Something like:
std::string str = "C-YOu01";
int nVal = 0;
for (int x = 0; x < str.length(); x++)
{
int c = str[x] - 48;
nVal += c;
}
std::cout << nVal << std::endl;
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Got the point. Hence
int nVal;
nVal = strlen("C-YOu01");
printf("%d\n");
is a valid alternative?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Well, since you're just summing up character codes, I assumed you was driven by the broad requirement of returning a number from the string, that way my own piece of code is a valid alternative.
(i.e. I was kidding)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
Hello board,
There is a function that checks if a pointer is in valid memory space in MFC, I have used that before but now I forgot that and MSDN help is so crap and stupid that despite that I've tried many keywords it returns completely unrelated subject. No wonder MSN never can match google.
Can anybody give me the name of that function, please to check validity of a pointer.
Also is there any function that checks validity of a handle. When I use CloseHandle, in debug mode sometimes an exception occurs that says handle value is invalid. while I usually define handle value as INVALID_HANDLE_VALUE in the beginning and my expression is
<br />
if(m_hHandle != INVALID_HANDLE_VALUE)<br />
CloseHandle(m_hHandle);<br />
but exception occurs and the value of handle is other than
INVALID_HANDLE_VALUE
Thanks and have a nice day.
|
|
|
|
|
Why do you need such a function ? A much easier (and cleaner) solution is simply to set the pointer to NULL when you destroyed it. Then you simply check if it is NULL or not. Same with the HANDLE.
|
|
|
|
|
|
And what's the difference with what I suggested (meaning setting your pointer to NULL when you deleted it) ?
|
|
|
|
|
do you mean if I simply set pointer to null it frees memory no memory leak no resource leak ...??? so the what's the need for delete we can simply assign null to a pointer. can you refer me to a document, please?
|
|
|
|
|
No, you need to delete it and then you set it to NULL. What I meant is, once you set it to NULL, there's no need anymore to check if the pointer is valid: simply check it if it is NULL.
|
|
|
|
|
Good point but still before using it, it maybe necessary to check its validity. thanks
|
|
|
|
|
Absolutely not. Why ?
If it is NULL, it is NULL and thus invalid. Of course, you have to initialize it to NULL in your constructor too.
|
|
|
|
|
I think I did not made my point clear, I said before using it. When one defines a pointer surely he wants to use it somewhere it is not null then and it should be checked especially if some naughty functions have played with it before. When one wanted to destroy the pointer then he can assign null to it as you said.
|
|
|
|
|
Electronic75 wrote: When one defines a pointer [...] it is not null then
It should be. Always initialize your variables!
Electronic75 wrote: t should be checked especially if some naughty functions have played with it before
Do not let any naughty functions touch your private parts!
Do not program naughty functions in the first place.
If naughty functions are made by someone else and keep doing horrible things to the objects you gave them pointers to, hand them a copy of the object, and keep the original with yourself.
Let's think the unthinkable, let's do the undoable, let's prepare to grapple with the ineffable itself, and see if we may not eff it after all. Douglas Adams, "Dirk Gently's Holistic Detective Agency"
|
|
|
|
|
jhwurmbach wrote: It should be. Always initialize your variables! Of course I initialize pointers but not to NULL to some values.
jhwurmbach wrote: Do not let any naughty functions touch your private parts!
Well, I have no problem with girls
@ DavidCrow,
I understood what cedric said but my point is when it has been given a value somewhere in the program and there is a possibility that value dose not exist anymore so the value is wrong then still I need to check it. Yes when I didn't need the pointer anymore I'll assign null to it and then compare it to null before using it.
jhwurmbach wrote: Do not program naughty functions in the first place.
If naughty functions are made by someone else and keep doing horrible things to the objects you gave them pointers to, hand them a copy of the object, and keep the original with yourself.
Actually the naughty functions were also written by me but about 2-3 years ago and it is part of a scary and big project. Now I do not have enough time(as ever) and I have to add some additional functionalities before having time to inspect all the codes. I will check all the codes whenever I had time but now there is a big crowd who are ready to kill me if I do not give this software to them until the deadline(and the deadline already has been passed ) but happily as I said in another post problem solved it was a silly mistake of mine
|
|
|
|
|
Electronic75 wrote: my point is when it has been given a value somewhere in the program and there is a possibility that value dose not exist anymore so the value is wrong then still I need to check it.
Where does this possibility come from?
THAT is the task you need to solve!
Wherever you delete an object, you need to change the pointer value to NULL.
Thats all, folks
Let's think the unthinkable, let's do the undoable, let's prepare to grapple with the ineffable itself, and see if we may not eff it after all. Douglas Adams, "Dirk Gently's Holistic Detective Agency"
|
|
|
|
|
Electronic75 wrote: ...it maybe necessary to check its validity.
Which is what Cedric has been trying to tell you (by comparing the pointer to NULL ).
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
INVALID_HANDLE_VALUE equals to (-1 ).
General approach goes as below.
HANDLE h = NULL;
h = CreateFile(...);
if(INVALID_HANDLE_VALUE != h) {
}
if(!h) {
h = CreateFile(...);
if(INVALID_HANDLE_VALUE == h) {
}
}
if(h) {
CloseHandle(h);
h = NULL;
}
Maxwell Chen
|
|
|
|
|
The problem is this handle has to be accessed from different threads. I checked its value before executing CloseHandle() it has some value which is not what I assigned at the beginning and also it is not INVALID_HANDLE_VALUE but still after execution of CloseHandle an exception occurs.
|
|
|
|
|
Did you set up some synchronization mechanism to assure that
CloseHandle(handle);
handle = INVALID_HANDLE_VALUE;
is atomic?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
Before running CloseHandle() I terminate those threads.
Still I'm sure most of you guys know about the function that checks validity of a pointer to be in valid memory space. I've used it so many times and I now I just forgot that and I can't find it in MSDN crap.
|
|
|
|
|
Electronic75 wrote: Still I'm sure most of you guys know about the function that checks validity of a pointer to be in valid memory space.
Never used it myself and I don't think I'll ever need it. If you follow the simple rule I gave you, it's totally unnecessary to use it. I would even say it is bad practice because you don't have a "clean" code.
|
|
|
|