uses FileCtrl;
procedure TForm1.Button1Click(Sender: TObject);
var i: byte;
a, b: cardinal;
sz, fr: int64;
s1, s2: string;
disk: char;
DriveType: TDriveType;
DriveBits: set of 0..25;
Buf: array [0..MAX_PATH] of char;
begin
Memo1.Clear;
Integer(DriveBits):=GetLogicalDrives;
For i:=0 to 25 do
begin
If not (i in DriveBits) then
Continue;
disk:=Char(i+Ord('A'));
If GetVolumeInformation(PChar(disk+':\'), Buf, SizeOf(Buf), nil, a, b, nil, 0) then
SetString(s1, Buf, StrLen(Buf)) else
s1:='';
DriveType:=TDriveType(GetDriveType(PChar(disk+':\')));
case DriveType of
dtUnknown: s2:='Unknown';
dtNoDrive: s2:='NoDrive';
dtFloppy: s2:='Floppy';
dtFixed: s2:='Fixed';
dtNetwork: s2:='Network';
dtCDROM: s2:='CDROM';
dtRAM: s2:='RAM';
else
s2:='';
end;
sz:=DiskSize(i+1);
fr:=DiskFree(i+1);
Memo1.Lines.Add(Format('%s: [%s] (%s). Емкость: %d, занято: %d, свободно: %d',
[disk, s1, s2, sz, sz-fr, fr]));
end;
end;
Например, текст в Memo1 будет выглядеть следующим образом:
C: [OS] (Fixed). Емкость: 128029028352, занято: 74515865600, свободно: 53513162752
D: [OS2] (Fixed). Емкость: 52428795904, занято: 26569834496, свободно: 25858961408
E: [user] (Fixed). Емкость: 112662147072, занято: 107531603968, свободно: 5130543104
F: [Новый] (CDROM). Емкость: 4696145920, занято: 4696145920, свободно: 0
G: [] (Floppy). Емкость: 3994419200, занято: 3936256, свободно: 3990482944
Z: [newerow1989] (Network). Емкость: 59041026048, занято: 57700401152, свободно: 1340624896
|