Следующая функция в качестве параметра принимает букву диска. Возвращаемое значение сигнализирует о наличие диска в дисководе или отсутствии:
function DiskInDrive(Drive: Char): Boolean; var ErrorMode: word; begin { переводим в верхний регистр } if Drive in ['a'..'z'] then Dec(Drive, $20); { убеждаемся, что это буква } if not (Drive in ['A'..'Z']) then raise EConvertError.Create('Not a valid drive ID'); { отключаем критические ошибки } ErrorMode := SetErrorMode(SEM_FailCriticalErrors); try { диск 1 = a, 2 = b, 3 = c, и т.д. } if DiskSize(Ord(Drive) - $40) = -1 then Result := False else Result := True; finally { восстанавливаем старый режим ошибок } SetErrorMode(ErrorMode); end; end;