|
rp_suman wrote: I am getting set hexa decimal values as I/P from user into a CString.
I am tokenizing this and get separate hexa values in another CString.
I want to convert this single hexa value in CString to unsigned char.
You already have the IP in number form so it should be easier for you to split it out byte by byte. Why to use CString in between?
Or if you are forced to do so then you can use functions like StringToAddress and AddressToString for converting ipaddress byte array from and to a string. Though not sure whether this will work with IP address in hex form.
Hope this helps!
Nibu thomas
Microsoft MVP for VC++
Code must be written to be read, not by the compiler, but by another human being.
Programming Blog: http://nibuthomas.wordpress.com
modified on Monday, June 2, 2008 11:59 PM
|
|
|
|
|
Hi Nibu thomas,
Thanks for the help,
The input is some MIDI command like "0x90 0x00 0x01"
The separator can be space or comma.
If I get the above command, how to assign them to unsigned char array except separators if possible without CString?
I will try strtol() once which David crow recommended.
Thanks,
Suman
--
"Programming is an art that fights back!"
|
|
|
|
|
rp_suman wrote: The input is some MIDI command like "0x90 0x00 0x01"
The separator can be space or comma.
Well then you've got to convert it to byte form!
Nibu thomas
Microsoft MVP for VC++
Code must be written to be read, not by the compiler, but by another human being.
Programming Blog: http://nibuthomas.wordpress.com
|
|
|
|
|
Thanks for help from everybody!!
strtoul() is working!!
Thanks & Regards,
Suman
--
"Programming is an art that fights back!"
|
|
|
|
|
Suppose there are three classes Class A, Class B and Class C.
Class A
{
public:
//one virtual function
}
Class B
{
public:
//one virtual function
}
Class C:virtual public A, virtual public B
{
}
How many v-tables Class C has?
|
|
|
|
|
Only One.
Regards,
Paresh.
|
|
|
|
|
The point here is, when ever this class is inherited, a new virtual table is created for the derived class and if any of the virtual functions are overridden the function pointers in the new vtable will be overwritten with the new address which points to the new function implementation. Do keep in mind that for every class which implements/inherit virtual functions will have only 1 vtable per class.
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
In a console app, I want to be able to test whether stdout and stderr are both printing to the screen. My output is messy unless I get it right (I'm printing to both stdout, and to stderr, and if they both happen to be the screen, I get two copies; I only want one copy on the screen).
A line like
<br />
if( stdout == stderr )<br />
always tests false under all the Windows compilers I've tried, so I get the duplication I'm trying to avoid.
Any ideas?
David
---------
Empirical studies indicate that 20% of the people drink 80% of the beer. With C++ developers, the rule is that 80% of the developers understand at most 20% of the language. It is not the same 20% for different people, so don't count on them to understand each other's code.
http://yosefk.com/c++fqa/picture.html#fqa-6.6
---------
|
|
|
|
|
DQNOK wrote: A line like
if( stdout == stderr )
always tests false under all the Windows compilers I've tried, so I get the duplication I'm trying to avoid.
What about:
if (&stdout == &stderr) In any case, I would really expect them to not ever be *equal* even though they may resolve to the same location (i.e., screen).
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
DavidCrow wrote: What about:
if (&stdout == &stderr)
That won't compile under Visual C++
The standard says that stdout and stderr are macros that evaluate to FILE pointer rvalues. Taking the address them seems suspicious from the outset...
David
---------
Empirical studies indicate that 20% of the people drink 80% of the beer. With C++ developers, the rule is that 80% of the developers understand at most 20% of the language. It is not the same 20% for different people, so don't count on them to understand each other's code.
http://yosefk.com/c++fqa/picture.html#fqa-6.6
---------
|
|
|
|
|
DQNOK wrote: Any ideas?
Does GetStdHandle() help?
Nibu thomas
Microsoft MVP for VC++
Code must be written to be read, not by the compiler, but by another human being.
Programming Blog: http://nibuthomas.wordpress.com
|
|
|
|
|
Nibu babu thomas wrote: Does GetStdHandle() help?
I'll look into it. Thanks for the idea.
David
|
|
|
|
|
Nibu babu thomas wrote: Does GetStdHandle() help?
From reading the MSDN site, I thought it would; but it doesn't do what I thought.
HANDLE stderrHndl = GetStdHandle(STD_ERROR_HANDLE);
HANDLE stdoutHndl = GetStdHandle(STD_OUTPUT_HANDLE);
...
(very incomplete!)
vfprintf( stderr, msg, args );
if( stderrHndl == stdoutHndl )
goto logprint;
vfprintf( stdout, msg, args );
logprint:
Because the stderrHndl == stdoutHndl is always evaluating to FALSE, I'm still double printing to the console.
David
|
|
|
|
|
If your output is being flooded why dont you just re-direct stderr to a file.
console_app 2> stderr.log
|
|
|
|
|
I like that idea.
But this needs to be general. It's an "alert" library (a very minature logging library) that needs to detect on its own whether stderr has already been redirected.
Key idea: *auto-detect* where stderr is outputting to, and if it's going to stdout, skip over the requirement to write to stderr.
vprintf( alertMsg, msgArgs );
if( stdout != stderr )
vfprintf( stderr, alertMsg, msgArgs );
...
(Note: code is not complete; it needs some complicating va_end and va_starts in there to make it work correctly. Don't use it as a model!)
David
---------
Empirical studies indicate that 20% of the people drink 80% of the beer. With C++ developers, the rule is that 80% of the developers understand at most 20% of the language. It is not the same 20% for different people, so don't count on them to understand each other's code.
http://yosefk.com/c++fqa/picture.html#fqa-6.6
---------
|
|
|
|
|
I have a LONG variable, x, and I need to use the value as an int for my "for" loop.
for (int i; i<x; i++)
How do I typecast a 'LONG' variable to an 'int'?
When I declare "i" as a "LONG" variable as such
for (LONG i; i<x; i++)
I get this error: no conversion from 'LONG' to 'LONG'
What should I do?
Thanks.
modified on Monday, June 2, 2008 8:46 PM
<div class="ForumMod">modified on Monday, June 2, 2008 8:47 PM</div>
|
|
|
|
|
Where's the code?
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
oups...forgot to ignore HTML tags
for (int i; i<variable; i++)
and
for (LONG i; i<variable; i++)
|
|
|
|
|
You shouldn't have to do anything special to use the LONG.
There's no requirement to use int in a 'for' statement. You can actually
put any valid code you want to in the three expressions (init/condition/loop).
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
It should work even as a type long (I'm not familiar with type LONG: if it's a composite type, then it won't work).
Any reason you can't just cast it to int at the point you are actually using it within the loop?
This should work (provided x is not a composite type)
for( x = someval; x < someotherval; x++ )
{
...
i = (int)x;
}
David
---------
Empirical studies indicate that 20% of the people drink 80% of the beer. With C++ developers, the rule is that 80% of the developers understand at most 20% of the language. It is not the same 20% for different people, so don't count on them to understand each other's code.
http://yosefk.com/c++fqa/picture.html#fqa-6.6
---------
|
|
|
|
|
When I compile this code, it compiles with no errors (Visual C++ 6.0)
void test(void)
{
LONG x;
x = 800;
for (LONG i=0; i < x; i++)
{
}
}
|
|
|
|
|
The below code will work.
LONG lVal = 100;
int nVal = static_cast<int>( lVal );
akt
|
|
|
|
|
Hello Folks,
I have started working on an Arabic Language Checker. Since I am new to this Unicode stuff therefore its a very basic level question.
The library function accepts Arabic word to be checked for spelling as wstring.
I have assigned char array the hex equivalent of Arabic word. Now the question is how do I convert this char array to wstring/wchar_t array. I googled this conversion but could not find any appropriate solution.
Kindly advice.
Regards,
Jinbaba
|
|
|
|
|
jinbabaj wrote: I have assigned char array...
Since you are dealing with Unicode, why wasn't wchar_t used instead?
Look at MultiByteToWideChar() , or the A2W() macro.
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
DavidCrow wrote: Since you are dealing with Unicode, why wasn't wchar_t used instead?
Probably it was not Unicode, but a multibyte encoding such as CP 1256. These go to char arrays.
|
|
|
|