📄 vartype.c
字号:
return _VarI4FromI2(sIn, piOut);
}
/************************************************************************
* VarI4FromR4 (OLEAUT32.60)
*
* Convert a VT_R4 to a VT_I4.
*
* PARAMS
* fltIn [I] Source
* piOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarI4FromR4(FLOAT fltIn, LONG *piOut)
{
return VarI4FromR8(fltIn, piOut);
}
/************************************************************************
* VarI4FromR8 (OLEAUT32.61)
*
* Convert a VT_R8 to a VT_I4.
*
* PARAMS
* dblIn [I] Source
* piOut [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 VarI4FromR8(double dblIn, LONG *piOut)
{
if (dblIn < (double)I4_MIN || dblIn > (double)I4_MAX)
return DISP_E_OVERFLOW;
VARIANT_DutchRound(LONG, dblIn, *piOut);
return S_OK;
}
/************************************************************************
* VarI4FromCy (OLEAUT32.62)
*
* Convert a VT_CY to a VT_I4.
*
* PARAMS
* cyIn [I] Source
* piOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarI4FromCy(CY cyIn, LONG *piOut)
{
double d = cyIn.int64 / CY_MULTIPLIER_F;
return VarI4FromR8(d, piOut);
}
/************************************************************************
* VarI4FromDate (OLEAUT32.63)
*
* Convert a VT_DATE to a VT_I4.
*
* PARAMS
* dateIn [I] Source
* piOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarI4FromDate(DATE dateIn, LONG *piOut)
{
return VarI4FromR8(dateIn, piOut);
}
/************************************************************************
* VarI4FromStr (OLEAUT32.64)
*
* Convert a VT_BSTR to a VT_I4.
*
* PARAMS
* strIn [I] Source
* lcid [I] LCID for the conversion
* dwFlags [I] Flags controlling the conversion (VAR_ flags from "oleauto.h")
* piOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if any parameter is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
* DISP_E_TYPEMISMATCH, if strIn cannot be converted
*/
HRESULT WINAPI VarI4FromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, LONG *piOut)
{
return VARIANT_NumberFromBstr(strIn, lcid, dwFlags, piOut, VT_I4);
}
/************************************************************************
* VarI4FromDisp (OLEAUT32.65)
*
* Convert a VT_DISPATCH to a VT_I4.
*
* PARAMS
* pdispIn [I] Source
* lcid [I] LCID for conversion
* piOut [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 VarI4FromDisp(IDispatch* pdispIn, LCID lcid, LONG *piOut)
{
return VARIANT_FromDisp(pdispIn, lcid, piOut, VT_I4, 0);
}
/************************************************************************
* VarI4FromBool (OLEAUT32.66)
*
* Convert a VT_BOOL to a VT_I4.
*
* PARAMS
* boolIn [I] Source
* piOut [O] Destination
*
* RETURNS
* S_OK.
*/
HRESULT WINAPI VarI4FromBool(VARIANT_BOOL boolIn, LONG *piOut)
{
return _VarI4FromBool(boolIn, piOut);
}
/************************************************************************
* VarI4FromI1 (OLEAUT32.209)
*
* Convert a VT_I4 to a VT_I4.
*
* PARAMS
* cIn [I] Source
* piOut [O] Destination
*
* RETURNS
* S_OK.
*/
HRESULT WINAPI VarI4FromI1(signed char cIn, LONG *piOut)
{
return _VarI4FromI1(cIn, piOut);
}
/************************************************************************
* VarI4FromUI2 (OLEAUT32.210)
*
* Convert a VT_UI2 to a VT_I4.
*
* PARAMS
* usIn [I] Source
* piOut [O] Destination
*
* RETURNS
* S_OK.
*/
HRESULT WINAPI VarI4FromUI2(USHORT usIn, LONG *piOut)
{
return _VarI4FromUI2(usIn, piOut);
}
/************************************************************************
* VarI4FromUI4 (OLEAUT32.211)
*
* Convert a VT_UI4 to a VT_I4.
*
* PARAMS
* ulIn [I] Source
* piOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarI4FromUI4(ULONG ulIn, LONG *piOut)
{
return _VarI4FromUI4(ulIn, piOut);
}
/************************************************************************
* VarI4FromDec (OLEAUT32.212)
*
* Convert a VT_DECIMAL to a VT_I4.
*
* PARAMS
* pDecIn [I] Source
* piOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if pdecIn is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarI4FromDec(DECIMAL *pdecIn, LONG *piOut)
{
LONG64 i64;
HRESULT hRet;
hRet = VarI8FromDec(pdecIn, &i64);
if (SUCCEEDED(hRet))
hRet = _VarI4FromI8(i64, piOut);
return hRet;
}
/************************************************************************
* VarI4FromI8 (OLEAUT32.348)
*
* Convert a VT_I8 to a VT_I4.
*
* PARAMS
* llIn [I] Source
* piOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarI4FromI8(LONG64 llIn, LONG *piOut)
{
return _VarI4FromI8(llIn, piOut);
}
/************************************************************************
* VarI4FromUI8 (OLEAUT32.349)
*
* Convert a VT_UI8 to a VT_I4.
*
* PARAMS
* ullIn [I] Source
* piOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarI4FromUI8(ULONG64 ullIn, LONG *piOut)
{
return _VarI4FromUI8(ullIn, piOut);
}
/* UI4
*/
/************************************************************************
* VarUI4FromUI1 (OLEAUT32.270)
*
* Convert a VT_UI1 to a VT_UI4.
*
* PARAMS
* bIn [I] Source
* pulOut [O] Destination
*
* RETURNS
* S_OK.
*/
HRESULT WINAPI VarUI4FromUI1(BYTE bIn, ULONG *pulOut)
{
return _VarUI4FromUI1(bIn, pulOut);
}
/************************************************************************
* VarUI4FromI2 (OLEAUT32.271)
*
* Convert a VT_I2 to a VT_UI4.
*
* PARAMS
* sIn [I] Source
* pulOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarUI4FromI2(SHORT sIn, ULONG *pulOut)
{
return _VarUI4FromI2(sIn, pulOut);
}
/************************************************************************
* VarUI4FromI4 (OLEAUT32.272)
*
* Convert a VT_I4 to a VT_UI4.
*
* PARAMS
* iIn [I] Source
* pulOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarUI4FromI4(LONG iIn, ULONG *pulOut)
{
return _VarUI4FromI4(iIn, pulOut);
}
/************************************************************************
* VarUI4FromR4 (OLEAUT32.273)
*
* Convert a VT_R4 to a VT_UI4.
*
* PARAMS
* fltIn [I] Source
* pulOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarUI4FromR4(FLOAT fltIn, ULONG *pulOut)
{
return VarUI4FromR8(fltIn, pulOut);
}
/************************************************************************
* VarUI4FromR8 (OLEAUT32.274)
*
* Convert a VT_R8 to a VT_UI4.
*
* PARAMS
* dblIn [I] Source
* pulOut [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 VarUI4FromR8(double dblIn, ULONG *pulOut)
{
if (dblIn < -0.5 || dblIn > (double)UI4_MAX)
return DISP_E_OVERFLOW;
VARIANT_DutchRound(ULONG, dblIn, *pulOut);
return S_OK;
}
/************************************************************************
* VarUI4FromDate (OLEAUT32.275)
*
* Convert a VT_DATE to a VT_UI4.
*
* PARAMS
* dateIn [I] Source
* pulOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarUI4FromDate(DATE dateIn, ULONG *pulOut)
{
return VarUI4FromR8(dateIn, pulOut);
}
/************************************************************************
* VarUI4FromCy (OLEAUT32.276)
*
* Convert a VT_CY to a VT_UI4.
*
* PARAMS
* cyIn [I] Source
* pulOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarUI4FromCy(CY cyIn, ULONG *pulOut)
{
double d = cyIn.int64 / CY_MULTIPLIER_F;
return VarUI4FromR8(d, pulOut);
}
/************************************************************************
* VarUI4FromStr (OLEAUT32.277)
*
* Convert a VT_BSTR to a VT_UI4.
*
* PARAMS
* strIn [I] Source
* lcid [I] LCID for the conversion
* dwFlags [I] Flags controlling the conversion (VAR_ flags from "oleauto.h")
* pulOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if any parameter is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
* DISP_E_TYPEMISMATCH, if strIn cannot be converted
*/
HRESULT WINAPI VarUI4FromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, ULONG *pulOut)
{
return VARIANT_NumberFromBstr(strIn, lcid, dwFlags, pulOut, VT_UI4);
}
/************************************************************************
* VarUI4FromDisp (OLEAUT32.278)
*
* Convert a VT_DISPATCH to a VT_UI4.
*
* PARAMS
* pdispIn [I] Source
* lcid [I] LCID for conversion
* pulOut [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 VarUI4FromDisp(IDispatch* pdispIn, LCID lcid, ULONG *pulOut)
{
return VARIANT_FromDisp(pdispIn, lcid, pulOut, VT_UI4, 0);
}
/************************************************************************
* VarUI4FromBool (OLEAUT32.279)
*
* Convert a VT_BOOL to a VT_UI4.
*
* PARAMS
* boolIn [I] Source
* pulOut [O] Destination
*
* RETURNS
* S_OK.
*/
HRESULT WINAPI VarUI4FromBool(VARIANT_BOOL boolIn, ULONG *pulOut)
{
return _VarUI4FromBool(boolIn, pulOut);
}
/************************************************************************
* VarUI4FromI1 (OLEAUT32.280)
*
* Convert a VT_I1 to a VT_UI4.
*
* PARAMS
* cIn [I] Source
* pulOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarUI4FromI1(signed char cIn, ULONG *pulOut)
{
return _VarUI4FromI1(cIn, pulOut);
}
/************************************************************************
* VarUI4FromUI2 (OLEAUT32.281)
*
* Convert a VT_UI2 to a VT_UI4.
*
* PARAMS
* usIn [I] Source
* pulOut [O] Destination
*
* RETURNS
* S_OK.
*/
HRESULT WINAPI VarUI4FromUI2(USHORT usIn, ULONG *pulOut)
{
return _VarUI4FromUI2(usIn, pulOut);
}
/************************************************************************
* VarUI4FromDec (OLEAUT32.282)
*
* Convert a VT_DECIMAL to a VT_UI4.
*
* PARAMS
* pDecIn [I] Source
* pulOut [O] Destination
*
* RETURNS
* Success: S_OK.
* Failure: E_INVALIDARG, if pdecIn is invalid
* DISP_E_OVERFLOW, if the value will not fit in the destination
*/
HRESULT WINAPI VarUI4FromDec(DECIMAL *pdecIn, ULONG *pulOut)
{
LONG64 i64;
HRESULT hRet;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -