掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Cdbl("&h" & "100000000")をWIN98で正常に返すには? (ID:108968)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
今回の場合、CDbl関数が VarR8FromStr APIを呼び出すでしょうから、 調べるとすれば、まずは oleaut32.dll ですかね。 当方 XP Proでは、3.50.5016.0。 2000 Serverでは、3.40.4518.0でした。 Option Explicit Private Declare Function VarR8FromStr Lib "OLEAUT32" _ (ByVal strIn As Long, _ ByVal lcid As Long, _ ByVal dwFlags As Long, _ ByRef pdblOut As Double) As Long Private Const LOCALE_NOUSEROVERRIDE As Long = &H80000000 Private Const LANG_JAPANESE As Integer = &H11 Private Const LCID_JAPANESE As Long = LANG_JAPANESE Private Sub Form_Load() Text1.Text = "&H100000000" End Sub Private Sub Command1_Click() Dim strIn As String Dim dblOut As Double Dim lngRet As Long strIn = Text1.Text lngRet = VarR8FromStr(StrPtr(strIn), LCID_JAPANESE, LOCALE_NOUSEROVERRIDE, dblOut) If lngRet <> 0 Then On Error Resume Next Err.Raise lngRet MsgBox "HRESULT: 0x" & Hex(lngRet) & vbCrLf _ & "Error: " & CStr(Err.Number) & vbCrLf _ & Err.Description, vbExclamation On Error GoTo 0 Else MsgBox Format(dblOut, "#,0.0000"), vbInformation End If End Sub なお、Win2000用のOLEAUT32.DLL をネットワークドライブ経由で、 Private Declare Function VarR8FromStr Lib "W:\OLEAUT32.DLL" … のようにして、WinXP上から呼び出したところ、やはり "&H10000000" は問題なく変換できるものの、 "&H100000000"がオーバーフローする事を確認しました。 なお、DLL Help Databaseによると、Windows 2003 Server では、 このDLLは Version 5.2.3790.0 となっているようです。 # 2003をインストールしてないので、確認できていませんけれども。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.