|
ZeroMemory(JoeWoodbury,sizeof(JoeWoodbury));
Get Zeroed out!
He never answers anyone who replies to him. I've taken to calling him a retard, which is not fair to retards everywhere.-Christian Graus
|
|
|
|
|
Perhaps you meant delete JoeWoodbury; since zeroing me out means there's still a shell of me around.
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
If there's a delete , there would always be a new round the corner. No risk taken. Let's just "neutralize" the enemy. Zero-out and get frozen.
He never answers anyone who replies to him. I've taken to calling him a retard, which is not fair to retards everywhere.-Christian Graus
|
|
|
|
|
Joe Woodbury wrote: ...it accomplishes nothing.
Actually it does -- it correctly sets the first byte of that string to nul. The fact that it also initializes the rest of the string (which may or may not be a requirement) does not negate that.
Code that "accomplishes nothing" would resemble:
char *p = NULL;
p = new char[100]; Joe Woodbury wrote: And again, the problem was that you didn't phrase this as "this is a pointless habit of mine", but as something he "should" do.
One word does this to you? The word "should" is not one of those absolute words like "always" and "must" and "never." To say to someone, "You should put your coat on" is not the same as "You must put your coat on." While the latter might be the optimal suggestion, the former suggestion is simply one that is better than what's currently being done. Since the OP was doing no initialization at all, any suggestion could be qualified with "should" and be correct.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"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
|
|
|
|
|
p[0] = 0 sets the first character to NULL. The rest is just wasteful fluff. It's bad form because it shows coding out of habit, not by deliberate thought.
DavidCrow wrote: One word does this to you
Yes.
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
|
You heard very few thing in you life, I suppose. I guess you're very young.
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.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
"one of"
"one of"
"one of"
sigh
Yeah, I'm young. Compared to my father. (Been around too long, actually, and have long run out of patience for weird code habits that do nothing but chew up CPU cycles and which require more typing than that which is necessary.)
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
There's nothing bad in initializing a buffer. At least it's useless. But it is also harmless.
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.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
zakkas2483 wrote: _tcscat( lptMessage, L"TEMP::" );
Try changing that to
_tcscpy( lptMessage, L"TEMP::" );
so you initialise lptMessage properly without relying on its previous content.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
To be pedantic, this should be wcscpy(lptMessage, L"TEMP::"); (else use the _T() macro)
(Of course to be even more pedantic, why he's allocating local buffers 25 characters long instead of just using a simple array such as wchar_t message[25]; is senseless. Unless he's controlling the lengths of the strings elsewhere, he should also be using the wcscpy_s and wcscat_s .)
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
You're quite right - I did mean to point that out (honest!).
Joe Woodbury wrote: (Of course to be even more pedantic, why he's allocating local buffers 25 characters long instead of just using a simple array such as wchar_t message[25]; is senseless. Unless he's controlling the lengths of the strings elsewhere, he should also be using the wcscpy_s and wcscat_s.)
I'm always tempted to say "why don't you just use a string class?!?!". CString or std::string, they both make simple string manipulation a hell of a lot easier.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Stuart Dootson wrote: I'm always tempted to say "why don't you just use a string class?!?!". CString or std::string, they both make simple string manipulation a hell of a lot easier.
I agree, but I assume he was doing some assignment which prohibited such.
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
No.
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.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Are you using C or C++ ? If you are using C++, I suggest you use new instead of malloc.
For instance:
LPTSTR lptSub = new TCHAR[25];
LPTSTR lptMessage = new TCHAR[256];
_tcscat( lptMessage, lptSub );
Be carefull that when you call _tcscat, your strings should contain something (and not garbage). OTherwise the result will be a big mess .
|
|
|
|
|
Thanks but ...
I am having strange problem.
PTSTR lptSub = new TCHAR[25];
LPTSTR lptMessage = new TCHAR[256];
somefun(lptSub);
MessageBox(NULL,lptSub,L"ABC",1);
///Above line display result perfectly
// Do something with the strings
_tcscat( lptMessage, L"TEMP::" );
_tcscat( lptMessage, lptSub );
MessageBox(NULL,lptMessage,L"ABC",1);
///Above line display only TEMP::
I am getting why???
|
|
|
|
|
zakkas2483 wrote: // Do something with the strings
_tcscat( lptMessage, L"TEMP::" );
_tcscat( lptMessage, lptSub )
I suppose you should pass explicitely the lenght of the buffer, since you've allocated dinamically it.
Side note, you should always check the return value of the new operator.
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.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Thanks but ...
I am having strange problem.
PTSTR lptSub = NULL;
lptSub = new TCHAR[25];
if( lptSub == NULL )
return;
LPTSTR lptMessage =NULL;
lptMessage= new TCHAR[256];
if( !lptMessage )
return;
somefun(lptSub);
MessageBox(NULL,lptSub,L"ABC",1);
///Above line display result perfectly
// Do something with the strings
_tcscat( lptMessage, L"TEMP::" );
_tcscat( lptMessage, lptSub );
MessageBox(NULL,lptMessage,L"ABC",1);
///Above line display only TEMP::
still having problem with above code.
|
|
|
|
|
zakkas2483 wrote: somefun(lptSub);
MessageBox(NULL,lptSub,L"ABC",1);
Is it displaying the right string? Can you show me the "somefun" code?
He never answers anyone who replies to him. I've taken to calling him a retard, which is not fair to retards everywhere.-Christian Graus
|
|
|
|
|
Thank you everybody. i did one mistake in my code while copying the in to lptMessage.
And sorry for taking your valuable time.
|
|
|
|
|
zakkas2483 wrote: _tcscat( lptMessage, L"TEMP::" );
_tcscat( lptMessage, lptSub );
Why didn't you change it to
_tcscat( lptMessage, 256, L"TEMP::" );
_tcscat( lptMessage, 256, lptSub );
as I've suggested?
Sorry, I've confused _tcscat , with the secure cousin, as Hey Joe pointed out. Sorry again.
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.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
modified on Friday, March 27, 2009 1:17 PM
|
|
|
|
|
Because your code makes absolutely no sense. It won't even compile. Furthermore, you are mixing the "_t..." prefix with an L"", instead of a _T() macro. Perhaps you meant to use wcscat_s ?
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
My code? No sense? I challenge you to duel, Sir.
BTW: You're right on mixing _t with L on the other hand the code makes perfect sense.
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.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
I parry your thrust and counter with: since when does strcat() have three parameters?
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
you're right indeed, my bad, I've confused it with the secure version . I'm sorry for the OP.
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.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|