[fpc-pascal]Win32 API Call
Gabor DEAK JAHN
djg at tramontana.co.hu
Sat Dec 8 01:33:05 CET 2001
At 12/7/2001 03:38 PM, you wrote:
Jim,
> But is that why you're using the @ symbol for BytesFree? Somehow I get the
> feeling you're going to tell me no. And if you do, then how come the Win32
> Reference says all the values are pularge_integer but only ones need to be
> referenced by it's address?
That's the error I mentioned in Redef.inc. You are right and your Win32
reference is right, this is an error of the compiler. The original in
Redef.inc looks like this:
function GetDiskFreeSpaceEx(lpDirectoryName: PChar; var
lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes;
lpTotalNumberOfFreeBytes: PLargeInteger): BOOL;external 'kernel32' name
'GetDiskFreeSpaceExA';
This is not equivalent to what Windows expects: the first two parameters,
lpFreeBytesAvailableToCaller and lpTotalNumberOfBytes are declared as
untyped var parameters (generic pointers), while the third parameter,
lpTotalNumberOfFreeBytes is a pointer to a large integer. The Win32 API, in
contrast to this, specifies all three parameters as pointers to large
integers, hence the need to change the semicolon after lpTotalNumberOfBytes
to a comma.
If this is corrected, you don't have to use the '@' operator before the
third parameter any more.
Bye,
Gábor
-------------------------------------------------------------------
Gabor DEAK JAHN -- Budapest, Hungary.
E-mail: djg at tramontana.co.hu
More information about the fpc-pascal
mailing list