Delphi - база знаний

       

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


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





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 }

Взято с сайта



Содержание раздела