On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru








 

Как узнать, находится ли дискета в дисководе?


type

  TDriveState(DS_NO_DISK, DS_UNFORMATTED_DISK, 
    DS_EMPTY_DISK, DS_DISK_WITH_FILES);

function
 DriveState(DrvLetter: Char): TDriveState;

var

  Mask: String
[6];
  SearchRec: TSearchRec;
  oldMode: Cardinal;
  ReturnCode: Integer;

begin

  oldMode: = SetErrorMode(SEM_FAILCRITICALERRORS);
  Mask:= '?:\*.*'
;
  Mask[1] := DrvLetter;
  {$I-}

  { отключить обработку исключительных ситуаций }


  ReturnCode := FindFirst(Mask, faAnyfile, SearchRec);
  FindClose(SearchRec);

  {$I+}


  case
 ReturnCode of

    { как минимум один файл был найден }


    0: Result := DS_DISK_WITH_FILES;
    { файлов не найдено и дискета в порядке }


    -18: Result := DS_EMPTY_DISK;
    { DS_NO_DISK для DOS, ERROR_NOT_READY для WinNT, ERROR_PATH_NOT_FOUND для Win 3.1 }


    -21, -3: Result := DS_NO_DISK;
  else

    { дискета лежит в дисководе но она не форматировнная }


    Result := DS_UNFORMATTED_DISK;
  end
;
  SetErrorMode(oldMode);
end
; { DriveState }


Назад       Содержание       Вперёд