Re: Question about TCHAR string
"David Wilkinson" wrote:
David++ wrote:
Hi,
I've been spoiled with C# and the easy to use string functions. Now I'm into
a bit of C++ for writing a custom action for a DLL to be incorporated into an
MSI installer. Yikes.
What I'm basically doing is getting the Product Key from the
MsiGetProperty() function, like this -
TCHAR szPidKey[MAX_PATH];
DWORD dwPath;
dwPath = sizeof(szPidKey) / sizeof(TCHAR);
MsiGetProperty(hInstall, TEXT("PIDKEY"), szPidKey, &dwPath);
So I have my Product ID in szPidKey. Now I want to do some manual
verification of it. The Product ID is of the form -
123456789-ABCD-12
I need to verify this code so I need access to the beginning part
(123456789) and the end part (12). So I'm looking for a way to substring out
those parts of the string. I'm also looking to convert those substrings into
integer or long data type so i can do some checking on them, is it ok to use
itoa to do that?
Thanks very much for any hints.
David:
I think you meant atoi(). For TCHAR strings you should use _ttoi().
Generally, if you look up any 'char' function like atoi() in the MSDN
help, you will find the corresponding 'TCHAR' function also.
You could also do
typedef std::basic_istringstream<TCHAR> tistringstream;
if you like to use C++ streams.
--
David Wilkinson
Visual C++ MVP
Hi David,
Thanks for your quick response! Well spotted, indeed I meant atoi() ;-] I'll
have a browse over to those functions right away. They will probably be a lot
neater than my hand cooked attempt -
TCHAR szLicence[10] = {0};
TCHAR szSum[3] = {0};
for(int i=0; i<9; i++)
{
szLicence[i] = szPidKey[i];
szLicence[9] = '\0';
}
szSum[0] = szPidKey[15];
szSum[1] = szPidKey[16];
szSum[2] = '\0';
MessageBox(NULL, szLicence, TEXT("Key"), MB_OK);
MessageBox(NULL, szSum, TEXT("Key"), MB_OK);
Thanks again,
David