質問

の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のようなものにビットマスクフィールドを渡す必要がされたのであれば、これは私のために完全に働いたものです。

それ以外の場合は、ちょうど私の答えを投票保ちます。 :)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top