Login
`
Templates, Tools and Utilities
|
||
Add a comment to an Icetips ArticlePlease add your comments to this article.
Please note that you must provide both a name and a valid email address in order
for us to publish your comment. Comments are moderated and are not visible until they have been approved. Spam is never approved!
Back to article list Search Articles Add Comment Printer friendly Direct link Par2: Large integers (64 bit) in GetDiskFreeSpaceEx API call 2002-04-01 -- Paul van Drunick In WinApi.CLW:
LARGEINTEGER GROUP,TYPE
dwLowPart long
dwHighPart long
END
! You have to create a kernel32.lib with this api in it (with libmaker and kernel32.dll)
! and add it to your project. This api is not in the clarion libs and
! only compatible with Win 95-OSR2/98/NT 4.0/2000/XP
MODULE('KERNEL32.DLL')
GetDiskFreeSpaceEx(*LPCSTR,*LARGEINTEGER,*LARGEINTEGER,*LARGEINTEGER),BOOL,PASCAL,RAW,NAME('GetDiskFreeSpaceExA')
END
Code for your function or method:
SomeFunction PROCEDURE
lintFreeBytesCaller group(LARGEINTEGER)
end
lintTotalBytes group(LARGEINTEGER)
end
lintFreeBytes group(LARGEINTEGER)
end
decFreeBytesLow DECIMAL(31) ! max decimal is not enough for
! max result of
! 3,3161584934796709483252973253515e+327
decFreeBytesHigh DECIMAL(31) ! but is enough for this purpose
! maybe someone knows an alternative?
decFreeBytes DECIMAL(31)
cstrPath CSTRING(MAX_PATH)
CODE
cstrPath = clip(SomePath)
if GetDiskFreeSpaceEx(cstrPath, lintFreeBytesCaller, lintTotalBytes,lintFreeBytes) then .
! you can also use lintFreeBytesCaller (users free space in this path)
if lintFreeBytes.dwLowPart < 0
decFreeBytesLow = 2 ^ 32 + lintFreeBytes.dwLowPart
else
decFreeBytesLow = lintFreeBytes.dwLowPart
end
if lintFreeBytes.dwHighPart < 0
decFreeBytesHigh = 2 ^ 32 + lintFreeBytes.dwHighPart
else
decFreeBytesHigh = lintFreeBytes.dwHighPart
end
decFreeBytes = decFreeBytesLow + decFreeBytesHigh * 2 ^ 32
Today is November 21, 2024, 6:26 am This article has been viewed 35247 times.
|
|