Code: |
type TDriveState(DS_NO_DISK, DS_UNFORMATTED_DISK, DS_EMPTY_DISK, DS_DISK_WITH_FILES);
function DriveState(driveletter: Char): TDriveState; var mask: string[6]; sRec: TSearchRec; oldMode: Cardinal; retcode: Integer; begin oldMode: = SetErrorMode(SEM_FAILCRITICALERRORS); mask := '?:\*.*'; mask[1] := driveletter; {$I-} { не возбуждаем исключение при неудаче } retcode := FindFirst(mask, faAnyfile, SRec); FindClose(SRec); {$I+} case retcode of 0: Result := DS_DISK_WITH_FILES; { обнаружен по крайней мере один файл } -18: Result := DS_EMPTY_DISK; { никаких файлов не обнаружено, но ok } -21: Result := DS_NO_DISK; { DOS ERROR_NOT_READY } else Result := DS_UNFORMATTED_DISK; { в моей системе значение равно -1785!} end; SetErrorMode(oldMode); end; { DriveState } |
Я тестировал код под Win NT 3.5, так что проверьте его на ошибки в ситуациях, когда дискета отсутствует или неотформатирована под Win 3.1 и WfW 3.11, если, конечно, это необходимо.
Ревизия для Win95:
- Назад
- Вперёд >>
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!