294 lines
4.8 KiB
C++
294 lines
4.8 KiB
C++
#include "StdAfx.h"
|
|
#include ".\script.h"
|
|
#include "math.h"
|
|
|
|
|
|
CScript::CScript(void)
|
|
{
|
|
m_nColumnCount = 0;
|
|
}
|
|
|
|
CScript::~CScript(void)
|
|
{
|
|
}
|
|
|
|
|
|
CString CScript::GetTextFromWORD(WORD nNum)
|
|
{
|
|
CString str;
|
|
if(nNum == (WORD)(-1))
|
|
str = "";
|
|
else
|
|
str.Format("%d", nNum);
|
|
|
|
return str;
|
|
}
|
|
|
|
CString CScript::GetTextFromDWORD(DWORD nNum)
|
|
{
|
|
CString str;
|
|
if(nNum == (DWORD)(-1))
|
|
str = "";
|
|
else
|
|
str.Format("%d", nNum);
|
|
|
|
return str;
|
|
}
|
|
|
|
CString CScript::GetTextFromBYTE(BYTE nNum)
|
|
{
|
|
CString str;
|
|
if(nNum == (BYTE)(-1))
|
|
str = "";
|
|
else
|
|
str.Format("%d", nNum);
|
|
|
|
return str;
|
|
}
|
|
|
|
CString CScript::GetTextFromFLOAT(FLOAT fNum)
|
|
{
|
|
CString str;
|
|
if(fNum == (FLOAT)(-1))
|
|
str = "";
|
|
else
|
|
str.Format("%0.2f", fNum);
|
|
|
|
return str;
|
|
}
|
|
|
|
|
|
CString CScript::GetTextFromINT(int nNum)
|
|
{
|
|
CString str;
|
|
//if(nNum == (int)(-1)) //INT는 -1값이 들어갈수 있다.
|
|
// str = "";
|
|
//else
|
|
str.Format("%d", nNum);
|
|
|
|
return str;
|
|
}
|
|
|
|
|
|
WORD CScript::CheckWORD(VARIANT value, int& nErrorCode)
|
|
{
|
|
WORD wValue = 0;
|
|
int nMaxWord = 65535;
|
|
int nMinWord = 0;
|
|
|
|
if(value.vt == VT_R8)
|
|
{
|
|
int nValue = (int)value.dblVal;
|
|
if(nValue < nMinWord || nValue > nMaxWord) //WORD 의 값을 넘어 섰으면..
|
|
{
|
|
wValue = -1;
|
|
nErrorCode = ERROR_WRONG_VALUE;
|
|
}
|
|
else //정상적인 값이면...
|
|
{
|
|
nErrorCode = ERROR_NOTHING;
|
|
wValue = (WORD)nValue;
|
|
}
|
|
}
|
|
else if(value.vt == VT_EMPTY) //빈칸이면..
|
|
{
|
|
wValue = -1;
|
|
nErrorCode = ERROR_INPUT_EMPTY;
|
|
}
|
|
else if(value.vt == VT_BSTR) //문자열이면..
|
|
{
|
|
wValue = -1;
|
|
nErrorCode = ERROR_INPUT_TEXT;
|
|
}
|
|
else //기타 다른 값이면..
|
|
{
|
|
wValue = -1;
|
|
nErrorCode = ERROR_INPUT_ETC;
|
|
}
|
|
|
|
return wValue;
|
|
}
|
|
|
|
|
|
DWORD CScript::CheckDWORD(VARIANT value, int& nErrorCode)
|
|
{
|
|
DWORD dwValue = 0;
|
|
unsigned int nMaxDWord = _Pow_int(2, 32) - 1;
|
|
unsigned int nMinDWord = 0;
|
|
|
|
if(value.vt == VT_R8)
|
|
{
|
|
unsigned int nValue = (int)value.dblVal;
|
|
if(nValue < nMinDWord || nValue > nMaxDWord) //DWORD 의 값을 넘어 섰으면..
|
|
{
|
|
dwValue = -1;
|
|
nErrorCode = ERROR_WRONG_VALUE;
|
|
}
|
|
else //정상적인 값이면...
|
|
{
|
|
nErrorCode = ERROR_NOTHING;
|
|
dwValue = (WORD)nValue;
|
|
}
|
|
}
|
|
else if(value.vt == VT_EMPTY) //빈칸이면..
|
|
{
|
|
dwValue = -1;
|
|
nErrorCode = ERROR_INPUT_EMPTY;
|
|
}
|
|
else if(value.vt == VT_BSTR) //문자열이면..
|
|
{
|
|
dwValue = -1;
|
|
nErrorCode = ERROR_INPUT_TEXT;
|
|
}
|
|
else //기타 다른 값이면..
|
|
{
|
|
dwValue = -1;
|
|
nErrorCode = ERROR_INPUT_ETC;
|
|
}
|
|
|
|
return dwValue;
|
|
}
|
|
|
|
|
|
BYTE CScript::CheckBYTE(VARIANT value, int& nErrorCode)
|
|
{
|
|
BYTE byValue = 0;
|
|
int nMax = 255;
|
|
int nMin = 0;
|
|
|
|
if(value.vt == VT_R8)
|
|
{
|
|
int nValue = (int)value.dblVal;
|
|
if(nValue < nMin || nValue > nMax) //BYTE 의 값을 넘어 섰으면..
|
|
{
|
|
byValue = -1;
|
|
nErrorCode = ERROR_WRONG_VALUE;
|
|
}
|
|
else //정상적인 값이면...
|
|
{
|
|
byValue = (BYTE)nValue;
|
|
nErrorCode = ERROR_NOTHING;
|
|
}
|
|
}
|
|
else if(value.vt == VT_EMPTY) //빈칸이면..
|
|
{
|
|
byValue = -1;
|
|
nErrorCode = ERROR_INPUT_EMPTY;
|
|
}
|
|
else if(value.vt == VT_BSTR) //문자열이면..
|
|
{
|
|
byValue = -1;
|
|
nErrorCode = ERROR_INPUT_TEXT;
|
|
}
|
|
else //기타 다른 값이면..
|
|
{
|
|
byValue = -1;
|
|
nErrorCode = ERROR_INPUT_ETC;
|
|
}
|
|
|
|
return byValue;
|
|
}
|
|
|
|
|
|
FLOAT CScript::CheckFLOAT(VARIANT value, int& nErrorCode)
|
|
{
|
|
float fValue = 0;
|
|
double dMax = 200000000;
|
|
double dMin = 0;
|
|
|
|
if(value.vt == VT_R8)
|
|
{
|
|
double dValue = (double)value.dblVal;
|
|
if(dValue < dMin || dValue > dMax) //float 의 값을 넘어 섰으면..
|
|
{
|
|
fValue = -1;
|
|
nErrorCode = ERROR_WRONG_VALUE;
|
|
}
|
|
else //정상적인 값이면...
|
|
{
|
|
fValue = (float)dValue;
|
|
nErrorCode = ERROR_NOTHING;
|
|
}
|
|
}
|
|
else if(value.vt == VT_EMPTY) //빈칸이면..
|
|
{
|
|
fValue = -1;
|
|
nErrorCode = ERROR_INPUT_EMPTY;
|
|
}
|
|
else if(value.vt == VT_BSTR) //문자열이면..
|
|
{
|
|
fValue = -1;
|
|
nErrorCode = ERROR_INPUT_TEXT;
|
|
}
|
|
else //기타 다른 값이면..
|
|
{
|
|
fValue = -1;
|
|
nErrorCode = ERROR_INPUT_ETC;
|
|
}
|
|
|
|
return fValue;
|
|
}
|
|
|
|
int CScript::CheckINT(VARIANT value, int& nErrorCode)
|
|
{
|
|
int nValue = 0;
|
|
int dMax = 200000000;
|
|
int dMin = -200000000;
|
|
|
|
if(value.vt == VT_R8)
|
|
{
|
|
double dValue = (double)value.dblVal;
|
|
if(dValue < dMin || dValue > dMax) //int 보다 큰 값으로 비교하기위해 double형으로 비교한다.
|
|
{
|
|
nValue = -1;
|
|
nErrorCode = ERROR_WRONG_VALUE;
|
|
}
|
|
else //정상적인 값이면...
|
|
{
|
|
nValue = (int)dValue;
|
|
nErrorCode = ERROR_NOTHING;
|
|
}
|
|
}
|
|
else if(value.vt == VT_EMPTY) //빈칸이면..
|
|
{
|
|
nValue = -1;
|
|
nErrorCode = ERROR_INPUT_EMPTY;
|
|
}
|
|
else if(value.vt == VT_BSTR) //문자열이면..
|
|
{
|
|
nValue = -1;
|
|
nErrorCode = ERROR_INPUT_TEXT;
|
|
}
|
|
else //기타 다른 값이면..
|
|
{
|
|
nValue = -1;
|
|
nErrorCode = ERROR_INPUT_ETC;
|
|
}
|
|
|
|
return nValue;
|
|
}
|
|
|
|
|
|
CString CScript::CheckString(VARIANT value, int& nErrorCode)
|
|
{
|
|
CString str = "";
|
|
|
|
if(value.vt == VT_BSTR)
|
|
{
|
|
str = value.bstrVal;
|
|
nErrorCode = ERROR_NOTHING;
|
|
}
|
|
else if(value.vt == VT_R8)
|
|
{
|
|
str = "";
|
|
nErrorCode = ERROR_INPUT_INT;
|
|
}
|
|
else
|
|
{
|
|
str = "";
|
|
nErrorCode = ERROR_INPUT_ETC;
|
|
}
|
|
|
|
return str;
|
|
}
|