|
//------------------------------------------------------------------------------
// $Workfile: StringUtils.cpp $
// $Header: $
//
// Copyright � 2008 SbjCat
// All rights reserved.
//
//
// *** Authors ***
// Steve Johnson
//
// $Revision: $
//
//-----------------------------------------------------------------------------
#include "stdafx.h"
#include "StringUtils.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
namespace SbjCore
{
namespace Utils
{
namespace STR
{
CString VariantToStr(const _variant_t& var)
{
CString sVal;
switch (var.vt)
{
case VT_BSTR:
sVal = (LPCTSTR)(_bstr_t)var;
break;
case VT_I2:
sVal.Format (_T("%d"), (short) var);
break;
case VT_I4:
case VT_INT:
sVal.Format (_T("%ld"), (long) var);
break;
case VT_UI1:
if ((BYTE) var != 0)
{
sVal.Format ( _T("%c"), (TCHAR)(BYTE) var);
}
break;
case VT_UI2:
sVal.Format( _T("%u"), var.uiVal);
break;
case VT_UINT:
case VT_UI4:
sVal.Format (_T("%u"), var.ulVal);
break;
case VT_R4:
sVal.Format (_T("%f"), (float) var);
break;
case VT_R8:
sVal.Format (_T("%lf"), (double) var);
break;
case VT_BOOL:
{
bool bVal = (bool) var;
sVal = bVal ? _T("True") : _T("False");
}
break;
default:
ASSERT(FALSE); // catch during dev
}
return sVal;
}
bool StrToVariant(const CString& sVal, _variant_t& var)
{
bool bRslt = true;
switch (var.vt)
{
case VT_BSTR:
var = (LPCTSTR)sVal;
break;
case VT_UI1:
var = (BYTE)sVal[0];
break;
case VT_I2:
var = (short)_ttoi(sVal);
break;
case VT_INT:
case VT_I4:
var = _ttol(sVal);
break;
case VT_UI2:
var.uiVal = (unsigned short)_ttoi(sVal);
break;
case VT_UINT:
case VT_UI4:
var.ulVal = (unsigned long)_ttol(sVal);
break;
case VT_R4:
{
float fVal;
_stscanf_s(sVal, _T("%f"), &fVal);
var = fVal;
}
break;
case VT_R8:
{
double dblVal;
_stscanf_s(sVal, _T("%lf"), &dblVal);
var = dblVal;
}
break;
case VT_BOOL:
var = (bool)(0 == sVal.Compare(_T("True")));
break;
default:
ASSERT(FALSE); // var.vt must be initialized to valid type
var = (LPCTSTR)sVal;
bRslt = false;
}
return bRslt;
}
}
}
}
//*** Modification History ***
// $Log: $
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Real name is Steve Johnson. Programming since 1979. Started on a Heathkit Micro with a DEC LSI-11 and UCSD Pascal. Moved to PCs & DOS as soon as Turbo Pascal became available. Did some Assembly, ISR, TSR etc. All this while working for a Manufacturing Co. for 8 years. Had my own solo Co. doing barcode labeling software for 4 years (terrible business man, all I wanted to do was code). Since then working for various software companies. Moved to Windows around the time of 3.1 with Borland C then C++. Then on to VC++ and MFC, and just about anything I could get my hands on or had to learn for my job, and been at it ever since. Of course recently I've been playing with .NET, ASP, C#, WPF etc.