При использовании данной функции с приводом, в котором нету диска, выходит ошибка windows о том, что отсутствует диск. Как сделать, чтобы это окно не выходило?
Lapp
3.09.2011 5:59
Цитата(Билли Боб @ 3.09.2011 1:38)
При использовании данной функции с приводом, в котором нету диска, выходит ошибка windows о том, что отсутствует диск. Как сделать, чтобы это окно не выходило?
Тебе нужно использовать системный доступ к дискам, а он системозависим. Если твоя прога только для Windows, то вот тебе пример, как ты можешь узнать, есть ли в приводе диск.
begin Drive:= 'C:\'+#0; // можно использовать, чтобы убедиться, что этот драйв - CDROM: WriteLn('is the drive CDROM? ',GetDriveType(@Drive[1])=DRIVE_CDROM); // теперь определяем, есть ли в нем диск (и много еще чего)) WriteLn('Is there disk in it? ', GetVolumeInformation( @Drive[1], @VolumeName[1], VolumeNameLen, @SerialNumber, MaxFileNameLen, FileSysFlags, @FileSysName[1], FileSysNameLen ) ); readln end.
IUnknown
3.09.2011 14:35
Чтобы не спускаться на такой низкий уровень, можно просто отключить показ критических сообщений системы перед вызовом FileExists, а потом - восстановить прежний режим:
uses windows, sysutils; begin OldMode := SetErrorMode (SEM_FAILCRITICALERRORS); if FileExists ('a:\test.txt') then writeln ('ok') else writeln ('no'); SetErrorMode (OldMode); end.
, должно сработать. По крайней мере, на официальном форуме поддержки Embarcadero давали именно такой рецепт.
Билли Боб
4.09.2011 1:01
Вот! отключить показ, то, что надо, спасибо!
TarasBer
5.09.2011 13:00
> Drive:= 'C:\'+#0;
Дельфа сама всем строкам ноль дорисовывает, не надо это делать руками.
Lapp
6.09.2011 8:02
Цитата(TarasBer @ 5.09.2011 10:00)
> Drive:= 'C:\'+#0;
Дельфа сама всем строкам ноль дорисовывает, не надо это делать руками.
Я не знаю, почему ты говоришь тут (в разделе про 32-битные компиляторы) про Delphi. Для Delphi есть свой раздел. FPC так не прикалывается (специально проверил)).
Если уж зашла речь про Delphi - немного странно мне, если она правда так поступает. Надеюсь, это отключается.
IUnknown
6.09.2011 12:52
[offtop]
Цитата
Дельфа сама всем строкам ноль дорисовывает, не надо это делать руками.