Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Ошибка при поиске съемных носителей


Автор: artmaestro 29.8.2012, 01:27
Здравствуйте

Я написал простенькую программу для работы с флешками и одной из ее задачи является вывод всех съемных носителей (их имен) в ListBox. Сделать это у меня получилось, НО функция только идеально работает на компьютерах, где нет дисководов.

Как только пробую прогу запустить на компьютере с пустым дисководом, выдает комп ошибку, если в дисковод вставляю дискету, ошибки нет
http://s2.ipicture.ru/Gallery/Viewfull/12782939.html

Код программы
Код

function issetRemovableDrive():TStringList;
var
    i:Integer;
    w:Cardinal;
    RemovableDriveList:TStringList;

begin
   RemovableDriveList := TStringList.Create;
  w := GetLogicalDrives;
 
   for i :=2  to 26 do
    begin
      if 1 shl i and w > 0 then
    
     if GetDriveType(PChar(chr(i+65)+':\')) = DRIVE_removable then
         begin
              RemovableDriveList.Add(chr(i+65)+':\');
             end;
    end;

       Result := RemovableDriveList;

end;


Подскажите в чем ошибка и как ее устранить, буду благодарен.


Автор: Illusion Dolphin 29.8.2012, 20:39
Можно попробовать так:
Код

function issetRemovableDrive():TStringList;
var
    i:Integer;
    w:Cardinal;
    RemovableDriveList:TStringList;
  OldMode: Cardinal;
begin
  OldMode := SetErrorMode(SEM_FAILCRITICALERRORS);
   RemovableDriveList := TStringList.Create;
  w := GetLogicalDrives;
 
   for i :=2  to 26 do
    begin
      if 1 shl i and w > 0 then
    
     if GetDriveType(PChar(chr(i+65)+':\')) = DRIVE_removable then
         begin
              RemovableDriveList.Add(chr(i+65)+':\');
             end;
    end;
       Result := RemovableDriveList;

    SetErrorMode(OldMode);
end;

Автор: artmaestro 31.8.2012, 01:07
Спасибо! Заработало, сообщение не появляется.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)