Советы по Delphi


Как мне проверить готовность диска 'a:'? II


    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:

    case RetCode of 0: Result := DS_DISK_WITH_FILES; -18: Result := DS_EMPTY_DISK; else Result := DS_NO_DISK; end;

[000527]



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