質問
のVisual Basicでは
Friend Const xxx As UInt64 = 400 * 365 * 24 * 60 * 60 ''// Number of secs in 400 years
これはエラーで失敗します。
constant expression not representable in type integer
の問題は、400 * 365 * 24 * 60 * 60よりも大きいです2 ^ 32
私は定数を宣言することによって、それに64ビット値を割り当てることがOKになることをUInt64型にすることを考えているだろう。
解決
別に毎年365日よりもわずかに存在するという事実(あなたは97うるう日を追加する必要があります)から、あなたの定数を補うために乗算された値のそれぞれは、整数リテラルであり、あなたはそれらを割り当てるため、までUInt64型は、それはすべての整数スペースで行われています。これを試してください:
Friend Const xxx As UInt64 = 400UL * 365UL * 24UL * 60UL * 60UL
他のヒント
...定の最後にハッシュを入れて、「二重の」としてそれを宣言する。
私は私のビットマスクフィールドでこれをやった。
Public Const EDIT_TRANSACTION As Double = 1073741824
Public Const EDIT_DWRDELIVERY As Double = 2147483648#
Public Const ENTER_DWRORDER As Double = 4294967296#
Public Const DELETE_DWRORDER As Double = 8589934592#
Public Const DELETE_TRANSACTION As Double = 17179869184#
Public Const DELETE_WATERORDER As Double = 34359738368#
Public Const ENTER_METERREADING As Double = 68719476736#
** EDIT **
私は、これはあなたが求めていた、まさに私はVB6のために書いた古いコードで、ではないので、私はこれにマークダウンされてしまったと思います。これを読んで、誰もがVB6を使用して、SQLのようなものにビットマスクフィールドを渡す必要がされたのであれば、これは私のために完全に働いたものです。
それ以外の場合は、ちょうど私の答えを投票保ちます。 :)
所属していません StackOverflow