Use DiskSize and DiskFree functions for this problem. ComboBox1 contains a list of drives letters.
var Disk: Integer; ... procedure TForm1.Button1Click(Sender: TObject); var Total, Free: LongInt; begin Total:=DiskSize(Disk) div 1024; Free:=DiskFree(Disk) div 1024; Gauge1.MaxValue:=Total; Gauge1.Progress:=Free; Label1.Caption:='Total size - '+IntToStr(Total); Label2.Caption:='Free - '+IntToStr(Free); end; procedure TForm1.ComboBox1Change(Sender: TObject); begin Disk:=ComboBox1.ItemIndex+1; end;