在SysUtils中
一个函数类型的变量
GetDiskFreeSpaceEx: function (Directory: PChar; var FreeAvailable,
    TotalSpace: TLargeInteger; TotalFree: PLargeInteger): Bool stdcall = nil;
由InitDriveSpacePtr来初始化这个变量

解决方案 »

  1.   

    archy(archy)::不好意思,我已几天没上来了。你这个问题,比如说你要找一个函数:
    GetDiskFreeSpaceEx
    你可点开始菜单的搜索-->文件--〉包含文字GetDiskFreeSpaceEx---〉搜索文件夹
    Delphi\source
    然后搜到打开即可/。
      

  2.   

    大哥,1我是问Delphi帮助中没有写的东西,您是如何知道的?2API用的是c的类型,您是怎样转换的。3api中此函数最后三个参数的类型是一样的,为何到了您的delphi函数中就变成了两个TLargeIntege,一个PLargeInteger了呢?4还有您刚说的查找方法,你叫我查什么呢?是否是查哪个exe中用到了此函数?谢谢。
      

  3.   

    这是我的原问题为什么GetDiskFreeSpaceEx(nil,userFreeBytes,totalBytes, @freeBytes) 要加个@?
    var userFreeBytes,totalBytes,freeBytes:Int64;   
      

  4.   

    兄弟,我不说了吗在SysUtils中,你不相信欧,呵呵
    你在你单元文件中写上 GetDiskFreeSpaceEx
    然后按住Ctrl键,把鼠标指到GetDiskFreeSpceEx,出现超联接的样式,点一下你就知道了
    OK?
      

  5.   

    archy(archy):我是在Delphi--->help--->Windows SDK中找到的。这个找到之后,我知道
    GetDiskFreeSjpzceEx这个函数,在找的过程就是根据以前的经验和运气了(哈哈,在那么多的win api函数找一个实现自己需要的功能的函数,确实是比较难)
    之后,我就在delphi\source中找delphi有没有对这个函数进行说明,上面的方法,有的话,就依靠delphi的定义来调用。如果没有,则自己定义。
    你说查什么,查delphi\source下面的pas文件有没有对函数进行定义。
    下面是c定义,
    BOOL GetDiskFreeSpaceEx(
        LPCTSTR lpDirectoryName, // pointer to directory name on disk of interest  
        PULARGE_INTEGER lpFreeBytesAvailableToCaller, // pointer to variable to receive free bytes on disk available to the caller
        PULARGE_INTEGER lpTotalNumberOfBytes, // pointer to variable to receive number of bytes on disk
        PULARGE_INTEGER lpTotalNumberOfFreeBytes // pointer to variable to receive free bytes on dis   );
    这个试pascal定义:
    GetDiskFreeSpaceEx: function (Directory: PChar; var FreeAvailable,
        TotalSpace: TLargeInteger; TotalFree: PLargeInteger):
    很明显嘛,最后一个参数PLargeInteger,p开头是指针,用@取地址嘛!总之,这些东西,你编得多了,就熟了。
      

  6.   

     要是两位懂c++就好了,我在c++下也有一些问题,帖子在VC++下