سلام!
یه مشکل برام پیش اومده! من یه همچین عددی دارم "144616277164184700" و باید تبدیلش کنم به Qword. خب اینکار رو توی سی میشه انجام داد ولی در ویبی6 به چه صورت میشه؟
توجه کنید که این عدد 18 رقمیه! اگر توی ماشین حساب ویندوز بزنید، Qword ش رو مینویسه: "201C7BCE51C547C" که من همین عدد رو میخوام.
این کد رو پیدا کردم ولی تا 11 رقم بیشتر جواب نمیده!
یه مشکل برام پیش اومده! من یه همچین عددی دارم "144616277164184700" و باید تبدیلش کنم به Qword. خب اینکار رو توی سی میشه انجام داد ولی در ویبی6 به چه صورت میشه؟
توجه کنید که این عدد 18 رقمیه! اگر توی ماشین حساب ویندوز بزنید، Qword ش رو مینویسه: "201C7BCE51C547C" که من همین عدد رو میخوام.
این کد رو پیدا کردم ولی تا 11 رقم بیشتر جواب نمیده!
کد:
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (anyDestination As Any, anySource As Any, ByVal lngLength As Long)
Public Sub Main()
MsgBox LoDWORD(56908316672@)
MsgBox HiDWORD(56908316672@)
MsgBox QWORD(13, 1073741824)
End Sub
Private Function LoDWORD(ByVal curQWORD As Currency) As Long
Dim lngLoDWORD As Long
curQWORD = curQWORD / 10000
CopyMemory lngLoDWORD, curQWORD, 4
LoDWORD = lngLoDWORD
End Function
Private Function HiDWORD(ByVal curQWORD As Currency) As Long
Dim lngHiDWORD As Long
curQWORD = curQWORD / 10000
CopyMemory lngHiDWORD, ByVal VarPtr(curQWORD) + 4, 4
HiDWORD = lngHiDWORD
End Function
Private Function QWORD(ByVal lngHiDWORD As Long, ByVal lngLoDWORD As Long) As Currency
Dim curQWORD As Currency
CopyMemory curQWORD, lngLoDWORD, 4
CopyMemory ByVal VarPtr(curQWORD) + 4, lngHiDWORD, 4
QWORD = curQWORD * 10000
End Function