fix #18, empty drive errors

This commit is contained in:
Basile Burg 2015-07-17 16:30:05 +02:00
parent 6403d23dd7
commit 4357515016
1 changed files with 15 additions and 9 deletions

View File

@ -636,20 +636,26 @@ procedure listDrives(aList: TStrings);
var
drv: char;
ltr, nme: string;
OldMode : Word;
{$ENDIF}
begin
{$IFDEF WINDOWS}
setLength(nme, 255);
for drv := 'A' to 'Z' do
begin
ltr := drv + ':\';
if not GetVolumeInformation(PChar(ltr), PChar(nme), 255, nil, nil, nil, nil, 0) then
continue;
case GetDriveType(PChar(ltr)) of
DRIVE_REMOVABLE,
DRIVE_FIXED,
DRIVE_REMOTE: aList.Add(ltr);
OldMode := SetErrorMode(SEM_FAILCRITICALERRORS);
try
for drv := 'A' to 'Z' do
begin
ltr := drv + ':\';
if not GetVolumeInformation(PChar(ltr), PChar(nme), 255, nil, nil, nil, nil, 0) then
continue;
case GetDriveType(PChar(ltr)) of
DRIVE_REMOVABLE,
DRIVE_FIXED,
DRIVE_REMOTE: aList.Add(ltr);
end;
end;
finally
SetErrorMode(OldMode);
end;
{$ELSE}
aList.Add('//');