{"id":237,"date":"2007-05-12T17:21:35","date_gmt":"2007-05-12T15:21:35","guid":{"rendered":" http:\/\/www.nsonic.de\/blog\/2007\/05\/checking-available-disk-space-on-large-drives\/"},"modified":"2007-05-12T17:21:37","modified_gmt":"2007-05-12T15:21:37","slug":"checking-available-disk-space-on-large-drives","status":"publish","type":"post","link":"https:\/\/www.nsonic.de\/blog\/2007\/05\/checking-available-disk-space-on-large-drives\/","title":{"rendered":"Checking available disk space on large drives"},"content":{"rendered":"<p>2GB, CheckDiskSpace, Large Disk<\/p>\n<p>Question and Answer Database<\/p>\n<p>FAQ2552D.txt   Checking available disk space on large drives.<br \/>\nCategory   :Windows API<br \/>\nPlatform    :All<br \/>\nProduct    :All 32 bit  <\/p>\n<p><em>Question:<br \/>\nHow do I check for available diskspace on a drive larger than 2<br \/>\ngigabytes?<br \/>\n<\/em><br \/>\nAnswer:<br \/>\nYou will need to call the Windows API function GetDiskFreeSpaceEx()<br \/>\nand convert the returned integers to doubles, since integers greater<br \/>\nthan 2 gigabytes are not supported in Delphi.<\/p>\n<p>Example:<br \/>\n<!--more--><br \/>\n[code lang=&#8221;delphi&#8221;]function GetDiskFreeSpaceEx(lpDirectoryName: PAnsiChar;<br \/>\n  var lpFreeBytesAvailableToCaller : Integer;<br \/>\n  var lpTotalNumberOfBytes: Integer;<br \/>\n  var lpTotalNumberOfFreeBytes: Integer) : bool;<br \/>\n  stdcall;<br \/>\n  external kernel32<br \/>\n  name &#8216;GetDiskFreeSpaceExA&#8217;;<\/p>\n<p>procedure GetDiskSizeAvail(TheDrive : PChar;<br \/>\n                           var TotalBytes : double;<br \/>\n                           var TotalFree : double);<br \/>\nvar<br \/>\n  AvailToCall : integer;<br \/>\n  TheSize : integer;<br \/>\n  FreeAvail : integer;<br \/>\nbegin<br \/>\n  GetDiskFreeSpaceEx(TheDrive,<br \/>\n                     AvailToCall,<br \/>\n                     TheSize,<br \/>\n                     FreeAvail);<br \/>\n{$IFOPT Q+}<br \/>\n {$DEFINE TURNOVERFLOWON}<br \/>\n {$Q-}<br \/>\n{$ENDIF}<br \/>\n  if TheSize >= 0 then<br \/>\n    TotalBytes := TheSize else<br \/>\n  if TheSize = -1 then begin<br \/>\n    TotalBytes := $7FFFFFFF;<br \/>\n    TotalBytes := TotalBytes * 2;<br \/>\n    TotalBytes := TotalBytes + 1;<br \/>\n  end else<br \/>\n  begin<br \/>\n    TotalBytes := $7FFFFFFF;<br \/>\n    TotalBytes := TotalBytes + abs($7FFFFFFF &#8211; TheSize);<br \/>\n  end;<\/p>\n<p>  if AvailToCall >= 0 then<br \/>\n    TotalFree := AvailToCall else<br \/>\n  if AvailToCall = -1 then begin<br \/>\n    TotalFree := $7FFFFFFF;<br \/>\n    TotalFree := TotalFree * 2;<br \/>\n    TotalFree := TotalFree + 1;<br \/>\n  end else<br \/>\n  begin<br \/>\n    TotalFree := $7FFFFFFF;<br \/>\n    TotalFree := TotalFree + abs($7FFFFFFF &#8211; AvailToCall);<br \/>\n  end;<br \/>\nend;<\/p>\n<p>procedure TForm1.Button1Click(Sender: TObject);<br \/>\nvar<br \/>\n  TotalBytes : double;<br \/>\n  TotalFree : double;<br \/>\nbegin<br \/>\n  GetDiskSizeAvail(&#8216;C:\\&#8217;,<br \/>\n                   TotalBytes,<br \/>\n                   TotalFree);<br \/>\n  ShowMessage(FloatToStr(TotalBytes));<br \/>\n  ShowMessage(FloatToStr(TotalFree));<br \/>\nend;<br \/>\n[\/code]<\/p>\n<p>7\/16\/98 4:31:28 PM<\/p>\n<p>Trademarks &#038; Copyright \u00a9 1998 INPRISE Corporation. Last modified on<br \/>\n8-December-1998. <\/p>\n<p>[tags]Delphi, System[\/tags]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>2GB, CheckDiskSpace, Large Disk Question and Answer Database FAQ2552D.txt Checking available disk space on large drives. Category :Windows API Platform :All Product :All&hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":""},"categories":[11],"tags":[75,113],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p71Tml-3P","_links":{"self":[{"href":"https:\/\/www.nsonic.de\/blog\/wp-json\/wp\/v2\/posts\/237"}],"collection":[{"href":"https:\/\/www.nsonic.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nsonic.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nsonic.de\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nsonic.de\/blog\/wp-json\/wp\/v2\/comments?post=237"}],"version-history":[{"count":0,"href":"https:\/\/www.nsonic.de\/blog\/wp-json\/wp\/v2\/posts\/237\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.nsonic.de\/blog\/wp-json\/wp\/v2\/media?parent=237"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nsonic.de\/blog\/wp-json\/wp\/v2\/categories?post=237"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nsonic.de\/blog\/wp-json\/wp\/v2\/tags?post=237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}