Листинг 4.2.
Составление списка дисков
function GetDriveLetters(letters: TStrings):Integer;
var
mask: DWORD;
i: Integer;
letter: Char;
begin
//Получаем маску, характеризующую наличие дисков
mask := GetLogicalDrives();
//Разбираем маску (определяем значения первых 26 битов)
i := 1;
for letter := \'A\' to \'Z\' do
begin
if mask and i <> 0 then
//Есть диск под текущей буквой
letters.Append(letter + \':\\');
i := i * 2; //Переходим к следующему биту
end;
GetDriveLetters := letters.Count;
end;
Теперь напишем несложные функции, позволяющие определить полный размер и размер свободного пространства на диске (листинг 4.3).