Получение списка дисков

  • Автор темы Jeefo
  • Дата начала
J

Jeefo

#1
Вот прошел по книжечке поиск файлов, научился получать список файлов из директории. А про получение списка дисков увы ничего автор не написал... Просветите, подскажите функцию пожалуйста :)
 
Z

zubr

#2
1. Используя API-функцию GetLogicalDriveStrings определяем список всех дисков системы.
2. Используя API-функцию GetDriveType, определяем какие из них логические (отсекаем съемные диски).
 
J

Jeefo

#3
zubr
За функции огромное спасибо, но нельзя бы примерчик небольшой с использованием и той и другой? А то из описания не пойму, какой буффер и что в него запишется :-(
 
Z

zubr

#4
Код:
procedure GetFixedDrives(var Drives:TStringList);
var
buf, bufNew:PChar;
s:string;
lenBuf:Integer;
begin
lenBuf:=GetLogicalDriveStrings(0, nil);
buf:=StrAlloc(lenBuf);
try
FillChar(buf^, lenBuf, #0);
GetLogicalDriveStrings(lenBuf, buf);
bufNew:=buf;
s:=string(bufNew);
repeat
If GetDriveType(PChar(s))=DRIVE_FIXED then
Drives.Add(s);
bufNew:=PChar(Integer(StrScan(bufNew, #0)+1));
s:=string(bufNew);
lenBuf:=lenBuf-1-Length(s);
until (lenBuf<=0) or (s='');
finally
StrDispose(buf);
end;
end;