📄 vartype.c
字号:
HRESULT WINAPI VarI1FromUI4(ULONG ulIn, signed char* pcOut)
{
return _VarI1FromUI4(ulIn, pcOut);
}
/************************************************************************
* VarI1FromDec (OLEAUT32.256)
*
* Convert a VT_DECIMAL to a VT_I1.
*
* PARAMS
* pDecIn [I] Source
* pcOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if the source value is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarI1FromDec(DECIMAL *pdecIn, signed char* pcOut)
{
LONG64 i64;
HRESULT hRet;
hRet = VarI8FromDec(pdecIn, &i64);
if (SUCCEEDED(hRet))
hRet = _VarI1FromI8(i64, pcOut);
return hRet;
}
/************************************************************************
* VarI1FromI8 (OLEAUT32.376)
*
* Convert a VT_I8 to a VT_I1.
*
* PARAMS
* llIn [I] Source
* pcOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if the source value is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarI1FromI8(LONG64 llIn, signed char* pcOut)
{
return _VarI1FromI8(llIn, pcOut);
}
/************************************************************************
* VarI1FromUI8 (OLEAUT32.377)
*
* Convert a VT_UI8 to a VT_I1.
*
* PARAMS
* ullIn [I] Source
* pcOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if the source value is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarI1FromUI8(ULONG64 ullIn, signed char* pcOut)
{
return _VarI1FromUI8(ullIn, pcOut);
}
/* UI1
*/
/************************************************************************
* VarUI1FromI2 (OLEAUT32.130)
*
* Convert a VT_I2 to a VT_UI1.
*
* PARAMS
* sIn [I] Source
* pbOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if the source value is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarUI1FromI2(SHORT sIn, BYTE* pbOut)
{
return _VarUI1FromI2(sIn, pbOut);
}
/************************************************************************
* VarUI1FromI4 (OLEAUT32.131)
*
* Convert a VT_I4 to a VT_UI1.
*
* PARAMS
* iIn [I] Source
* pbOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if the source value is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarUI1FromI4(LONG iIn, BYTE* pbOut)
{
return _VarUI1FromI4(iIn, pbOut);
}
/************************************************************************
* VarUI1FromR4 (OLEAUT32.132)
*
* Convert a VT_R4 to a VT_UI1.
*
* PARAMS
* fltIn [I] Source
* pbOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if the source value is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
* DISP_E_TYPEMISMATCH, if the type cannot be converted
*/
HRESULT WINAPI VarUI1FromR4(FLOAT fltIn, BYTE* pbOut)
{
return VarUI1FromR8(fltIn, pbOut);
}
/************************************************************************
* VarUI1FromR8 (OLEAUT32.133)
*
* Convert a VT_R8 to a VT_UI1.
*
* PARAMS
* dblIn [I] Source
* pbOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if the source value is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
*
* NOTES
* See VarI8FromR8() for details concerning rounding.
*/
HRESULT WINAPI VarUI1FromR8(double dblIn, BYTE* pbOut)
{
if (dblIn < -0.5 || dblIn > (double)UI1_MAX)
return DISP_E_OVERFLOW;
VARIANT_DutchRound(BYTE, dblIn, *pbOut);
return S_OK;
}
/************************************************************************
* VarUI1FromCy (OLEAUT32.134)
*
* Convert a VT_CY to a VT_UI1.
*
* PARAMS
* cyIn [I] Source
* pbOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if the source value is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
*
* NOTES
* Negative values >= -5000 will be converted to 0.
*/
HRESULT WINAPI VarUI1FromCy(CY cyIn, BYTE* pbOut)
{
ULONG i = UI1_MAX + 1;
VarUI4FromCy(cyIn, &i);
return _VarUI1FromUI4(i, pbOut);
}
/************************************************************************
* VarUI1FromDate (OLEAUT32.135)
*
* Convert a VT_DATE to a VT_UI1.
*
* PARAMS
* dateIn [I] Source
* pbOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if the source value is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarUI1FromDate(DATE dateIn, BYTE* pbOut)
{
return VarUI1FromR8(dateIn, pbOut);
}
/************************************************************************
* VarUI1FromStr (OLEAUT32.136)
*
* Convert a VT_BSTR to a VT_UI1.
*
* PARAMS
* strIn [I] Source
* lcid [I] LCID for the conversion
* dwFlags [I] Flags controlling the conversion (VAR_ flags from "oleauto.h")
* pbOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if the source value is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
* DISP_E_TYPEMISMATCH, if the type cannot be converted
*/
HRESULT WINAPI VarUI1FromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, BYTE* pbOut)
{
return VARIANT_NumberFromBstr(strIn, lcid, dwFlags, pbOut, VT_UI1);
}
/************************************************************************
* VarUI1FromDisp (OLEAUT32.137)
*
* Convert a VT_DISPATCH to a VT_UI1.
*
* PARAMS
* pdispIn [I] Source
* lcid [I] LCID for conversion
* pbOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if the source value is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
* DISP_E_TYPEMISMATCH, if the type cannot be converted
*/
HRESULT WINAPI VarUI1FromDisp(IDispatch* pdispIn, LCID lcid, BYTE* pbOut)
{
return VARIANT_FromDisp(pdispIn, lcid, pbOut, VT_UI1, 0);
}
/************************************************************************
* VarUI1FromBool (OLEAUT32.138)
*
* Convert a VT_BOOL to a VT_UI1.
*
* PARAMS
* boolIn [I] Source
* pbOut [O] Destination
*
* RETURNS
* S_OK.
*/
HRESULT WINAPI VarUI1FromBool(VARIANT_BOOL boolIn, BYTE* pbOut)
{
return _VarUI1FromBool(boolIn, pbOut);
}
/************************************************************************
* VarUI1FromI1 (OLEAUT32.237)
*
* Convert a VT_I1 to a VT_UI1.
*
* PARAMS
* cIn [I] Source
* pbOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if the source value is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarUI1FromI1(signed char cIn, BYTE* pbOut)
{
return _VarUI1FromI1(cIn, pbOut);
}
/************************************************************************
* VarUI1FromUI2 (OLEAUT32.238)
*
* Convert a VT_UI2 to a VT_UI1.
*
* PARAMS
* usIn [I] Source
* pbOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if the source value is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarUI1FromUI2(USHORT usIn, BYTE* pbOut)
{
return _VarUI1FromUI2(usIn, pbOut);
}
/************************************************************************
* VarUI1FromUI4 (OLEAUT32.239)
*
* Convert a VT_UI4 to a VT_UI1.
*
* PARAMS
* ulIn [I] Source
* pbOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if the source value is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarUI1FromUI4(ULONG ulIn, BYTE* pbOut)
{
return _VarUI1FromUI4(ulIn, pbOut);
}
/************************************************************************
* VarUI1FromDec (OLEAUT32.240)
*
* Convert a VT_DECIMAL to a VT_UI1.
*
* PARAMS
* pDecIn [I] Source
* pbOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if the source value is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarUI1FromDec(DECIMAL *pdecIn, BYTE* pbOut)
{
LONG64 i64;
HRESULT hRet;
hRet = VarI8FromDec(pdecIn, &i64);
if (SUCCEEDED(hRet))
hRet = _VarUI1FromI8(i64, pbOut);
return hRet;
}
/************************************************************************
* VarUI1FromI8 (OLEAUT32.372)
*
* Convert a VT_I8 to a VT_UI1.
*
* PARAMS
* llIn [I] Source
* pbOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if the source value is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarUI1FromI8(LONG64 llIn, BYTE* pbOut)
{
return _VarUI1FromI8(llIn, pbOut);
}
/************************************************************************
* VarUI1FromUI8 (OLEAUT32.373)
*
* Convert a VT_UI8 to a VT_UI1.
*
* PARAMS
* ullIn [I] Source
* pbOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if the source value is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarUI1FromUI8(ULONG64 ullIn, BYTE* pbOut)
{
return _VarUI1FromUI8(ullIn, pbOut);
}
/* I2
*/
/************************************************************************
* VarI2FromUI1 (OLEAUT32.48)
*
* Convert a VT_UI2 to a VT_I2.
*
* PARAMS
* bIn [I] Source
* psOut [O] Destination
*
* RETURNS
* S_OK.
*/
HRESULT WINAPI VarI2FromUI1(BYTE bIn, SHORT* psOut)
{
return _VarI2FromUI1(bIn, psOut);
}
/************************************************************************
* VarI2FromI4 (OLEAUT32.49)
*
* Convert a VT_I4 to a VT_I2.
*
* PARAMS
* iIn [I] Source
* psOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarI2FromI4(LONG iIn, SHORT* psOut)
{
return _VarI2FromI4(iIn, psOut);
}
/************************************************************************
* VarI2FromR4 (OLEAUT32.50)
*
* Convert a VT_R4 to a VT_I2.
*
* PARAMS
* fltIn [I] Source
* psOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarI2FromR4(FLOAT fltIn, SHORT* psOut)
{
return VarI2FromR8(fltIn, psOut);
}
/************************************************************************
* VarI2FromR8 (OLEAUT32.51)
*
* Convert a VT_R8 to a VT_I2.
*
* PARAMS
* dblIn [I] Source
* psOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: DISP_E_OVERFLOW, if the value will not fit in the destination
*
* NOTES
* See VarI8FromR8() for details concerning rounding.
*/
HRESULT WINAPI VarI2FromR8(double dblIn, SHORT* psOut)
{
if (dblIn < (double)I2_MIN || dblIn > (double)I2_MAX)
return DISP_E_OVERFLOW;
VARIANT_DutchRound(SHORT, dblIn, *psOut);
return S_OK;
}
/************************************************************************
* VarI2FromCy (OLEAUT32.52)
*
* Convert a VT_CY to a VT_I2.
*
* PARAMS
* cyIn [I] Source
* psOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarI2FromCy(CY cyIn, SHORT* psOut)
{
LONG i = I2_MAX + 1;
VarI4FromCy(cyIn, &i);
return _VarI2FromI4(i, psOut);
}
/************************************************************************
* VarI2FromDate (OLEAUT32.53)
*
* Convert a VT_DATE to a VT_I2.
*
* PARAMS
* dateIn [I] Source
* psOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarI2FromDate(DATE dateIn, SHORT* psOut)
{
return VarI2FromR8(dateIn, psOut);
}
/************************************************************************
* VarI2FromStr (OLEAUT32.54)
*
* Convert a VT_BSTR to a VT_I2.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -