function like DISKSPACE() question

Moderator: Rathinagiri

Post Reply
User avatar
serge_girard
Posts: 3165
Joined: Sun Nov 25, 2012 2:44 pm
DBs Used: 1 MySQL - MariaDB
2 DBF
Location: Belgium
Contact:

function like DISKSPACE() question

Post 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
There's nothing you can do that can't be done...
User avatar
gfilatov
Posts: 1067
Joined: Fri Aug 01, 2008 5:42 am
Location: Ukraine
Contact:

Re: function like DISKSPACE() question

Post 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. :idea:
Kind Regards,
Grigory Filatov

"Everything should be made as simple as possible, but no simpler." Albert Einstein
User avatar
serge_girard
Posts: 3165
Joined: Sun Nov 25, 2012 2:44 pm
DBs Used: 1 MySQL - MariaDB
2 DBF
Location: Belgium
Contact:

Re: function like DISKSPACE() question

Post 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
There's nothing you can do that can't be done...
chrisjx2002
Posts: 190
Joined: Wed Jan 06, 2010 5:39 pm

Re: function like DISKSPACE() question

Post 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
Post Reply