Page 1 of 1
function like DISKSPACE() question
Posted: Fri May 24, 2013 6:58 am
by serge_girard
Hi There again,
Another question: is there a function like DISKSPACE() which returns the CAPACTITY of a disk (instead of FREE space)?
This in order to calculate percentage used.
Thx,
Serge
Re: function like DISKSPACE() question
Posted: Fri May 24, 2013 11:06 am
by gfilatov
Hi,
Yes, it is the function HB_DISKSPACE with parameter HB_DISK_TOTAL.
Please be so kind to try the following simple sample from MiniGui Ex distribution:
Code: Select all
#include "minigui.ch"
#include "fileio.ch"
PROCEDURE Main
LOCAL cDisk := CurDrive() + ":\"
SET DECIMALS TO
DEFINE WINDOW Win_1 ;
AT 0,0 WIDTH 220 HEIGHT 240 ;
TITLE cDisk ;
ICON "HARD" ;
MAIN NOMAXIMIZE NOSIZE ;
ON INIT ShowPie(cDisk)
ON KEY ESCAPE ACTION Win_1.Release
END WINDOW
Win_1.Center
Win_1.Activate
RETURN
PROCEDURE ShowPie( cDisk )
LOCAL iFree := HB_DISKSPACE(cDisk, HB_DISK_FREE) / 1024
LOCAL iTotal:= HB_DISKSPACE(cDisk, HB_DISK_TOTAL) / 1024
LOCAL iUsed := iTotal - iFree, lFlag := iUsed > iFree
DRAW GRAPH IN WINDOW Win_1 ;
AT 10,10 ;
TO 200,200 ;
TITLE "" ;
TYPE PIE ;
SERIES { iUsed, iFree } ;
DEPTH 10 ;
SERIENAMES { "Espacio utilizado", "Espacio libre" } ;
COLORS { {0,0,255}, {255,0,255} } ;
3DVIEW SHOWLEGENDS
DRAW TEXT IN WINDOW Win_1 ;
AT IF(lFlag, 60, 90), 84 ;
VALUE "Libre "+Ltrim(Str((iFree/iTotal*100)))+"%" ;
FONT "MS Sans Serif" SIZE 9 ;
FONTCOLOR IF(lFlag, WHITE, BLACK) ;
TRANSPARENT
RETURN
Hope that helps.

Re: function like DISKSPACE() question
Posted: Fri May 24, 2013 11:24 am
by serge_girard
Great !!
Execpt CurDrive I had to change to hb_CurDrive.
DRAW TEXT gives a compile error, but the PIE is exactly what I need.
Thx !
Serge
Re: function like DISKSPACE() question
Posted: Fri May 24, 2013 5:29 pm
by chrisjx2002
I have made little changes to the program in order to be compiled by HMG.
#include "hmg.ch"
#include "fileio.ch"
PROCEDURE Main
LOCAL cDisk := hb_CurDrive() + ":\"
SET DECIMALS TO
DEFINE WINDOW Win_1 ;
AT 0,0 WIDTH 240 HEIGHT 260 ;
TITLE "Disk "+cDisk ;
MAIN NOMAXIMIZE NOSIZE ;
ON INIT ShowPie(cDisk)
ON KEY ESCAPE ACTION Win_1.Release
END WINDOW
Win_1.Center
Win_1.Activate
RETURN
PROCEDURE ShowPie( cDisk )
LOCAL iFree := INT(HB_DISKSPACE(cDisk, HB_DISK_FREE) / 1024 /1000000)
LOCAL iTotal:= INT(HB_DISKSPACE(cDisk, HB_DISK_TOTAL) / 1024 /1000000)
LOCAL iUsed := iTotal - iFree
DRAW GRAPH IN WINDOW Win_1 ;
AT 10,10 ;
TO 220,220 ;
TITLE "" ;
TYPE PIE ;
SERIES { iUsed, iFree } ;
DEPTH 10 ;
SERIENAMES { "Used space", "Free space " } ;
COLORS { {255,0,255}, {0,0,255} } ;
3DVIEW SHOWLEGENDS SHOWXVALUES
RETURN
Enjoy it