2

この例では、m_Amount は CString です。stringToNumber 関数は、それを LONGLONG 数値に正常に変換します。しかし、それをバリアントに割り当てたい場合、次のエラーが発生します。

error C2440: 'type cast' : cannot convert from '__int64' to 'class _variant_t'

マイコード

_variant_t  myVar = _variant_t( (LONGLONG)stringToNumber(m_Amount) );
4

4 に答える 4

1

キャストは必要ありません。

使用する:

_variant_t(
   __int64 i8Src
)

詳細については_variant_t、MSDN を参照してください。

ただし、Windows CE は、通常の Windows XP/Vista/Win 7 インストールで利用可能なすべてのデータ タイプを提供するわけではありません。あなたの場合、これは WinCE が 64 ビットの符号付き/符号なし整数をサポートしていないことを意味します。したがってintLONGLONG.

于 2012-05-02T05:58:14.077 に答える
0

_variant_t を使用して LONGLONG データを SQL サーバー データベースに挿入していました。この回答で述べたように、数値は C++ の CString にマップされます。そのため、データベースから数値データを文字列として取得し、それを LONGLONG に変換し、変更してから再度文字列に変換し、結果の文字列をデータベースに保存します。

SQL 数値 --(データベースから取得)--> 文字列 -> LONGLONG -> 文字列 --(データベースに挿入)--> SQL 数値

于 2012-05-02T10:15:29.383 に答える
0

どのツールチェーンを使用していますか?

__int64から_variant_tifへの変換が必要です_WIN32_WINNT >= 0x501。これは、少なくとも WinXP のターゲットに対応します。これは最新の Windows ツールチェーンに当てはまるはずですが、一部の古いツール (VS 2005 など) を使用してマクロ定義を自分で明示的に設定する必要がある場合があります。

于 2012-05-02T06:10:39.920 に答える
0

これを試してください:

union UltimateCast
{
   __int64 From;
   __variant_t To;
};

キャストする必要がある __int64 値を From フィールドに入力します。その後、To フィールドから結果の値を読み取ります。

于 2012-05-02T07:01:40.987 に答える