Files
2022-10-26 12:25:11 +08:00

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;
}