Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2015, 23:07   #11
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от ddwnik Посмотреть сообщение
Возможно ли сделать игнорирование/пропуск данной ошибки, чтобы данное сообщение не выводилось пользователю?
try except finally "не при делах"...

Надо вначале получить список логических дисков в системе:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
ld : DWORD;
i : integer;
begin
ld := GetLogicalDrives;
for i := 0 to 25 do begin
if (ld and (1 shl i)) <> 0 then
Memo1.Lines.Add(Char(Ord('A') + i) + ':\');
end;
end;
kropotkina-alice вне форума Ответить с цитированием
Старый 20.01.2015, 23:12   #12
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

kropotkina-alice Ну и получишь CD-ROM, в котором нет диска.
WinCoder вне форума Ответить с цитированием
Старый 20.01.2015, 23:41   #13
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

А проверить наличие диска - знаний не хватает? Делюсь:
Код:
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;
Как вызвать функцию - тоже надо научить?

Последний раз редактировалось kropotkina-alice; 20.01.2015 в 23:46.
kropotkina-alice вне форума Ответить с цитированием
Старый 21.01.2015, 00:04   #14
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

ОФФТОП
Цитата:
Как вызвать функцию - тоже надо научить?
"О, Великая Функция, приди" - и тереть экран
Вадим Мошев вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Виндовс диск отсутствует сергей1982 Windows 4 04.12.2014 22:25
Отсутствует картинка в приложении motorway Мобильные ОС (Android, iOS, Windows Phone) 2 05.07.2013 16:00
отсутствует сокет mrgrudge Операционные системы общие вопросы 0 09.11.2012 18:51
Отсутствует запись VistaSV30 Microsoft Office Access 1 01.02.2010 23:02
отсутствует заголовок referer werra PHP 4 26.11.2009 15:26