- ////////////////////////////////
- void BSTRtoASC (BSTR str, char * &strRet) {
-
- if ( str != NULL ) {
- unsigned long length = WideCharToMultiByte (
- CP_ACP,
- 0, str,
- SysStringLen(str), NULL, 0,
- NULL, NULL
- );
-
- strRet = new char[length];
-
- length = WideCharToMultiByte (
- CP_ACP,
- 0, str,
- SysStringLen(str), reinterpret_cast <char *>(strRet), length,
- NULL, NULL
- );
-
- strRet[length] = '\0';
- }
-
- }
-
-
- ////////////////////////////////
- void ASCtoBSTR (char * str, BSTR * strRet) {
-
- if ( str != NULL ) {
- unsigned long length = strlen(str);
-
- int ResultLength = MultiByteToWideChar (
- CP_ACP,
- MB_PRECOMPOSED,
- reinterpret_cast <char *>(str),
- length,
- NULL,
- 0 );
-
- *strRet = SysAllocStringLen( NULL, ResultLength);
-
- MultiByteToWideChar (
- CP_ACP,
- MB_PRECOMPOSED,
- reinterpret_cast <char *>(str),
- length,
- *strRet,
- ResultLength );
- }
-
- }
////////////////////////////////
void BSTRtoASC (BSTR str, char * &strRet) {
if ( str != NULL ) {
unsigned long length = WideCharToMultiByte (
CP_ACP,
0, str,
SysStringLen(str), NULL, 0,
NULL, NULL
);
strRet = new char[length];
length = WideCharToMultiByte (
CP_ACP,
0, str,
SysStringLen(str), reinterpret_cast <char *>(strRet), length,
NULL, NULL
);
strRet[length] = '\0';
}
}
////////////////////////////////
void ASCtoBSTR (char * str, BSTR * strRet) {
if ( str != NULL ) {
unsigned long length = strlen(str);
int ResultLength = MultiByteToWideChar (
CP_ACP,
MB_PRECOMPOSED,
reinterpret_cast <char *>(str),
length,
NULL,
0 );
*strRet = SysAllocStringLen( NULL, ResultLength);
MultiByteToWideChar (
CP_ACP,
MB_PRECOMPOSED,
reinterpret_cast <char *>(str),
length,
*strRet,
ResultLength );
}
}