Помощь - Поиск - Пользователи - Календарь
Полная версия: Функция FileExists.
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Free Pascal, Pascal ABC и другие
Билли Боб
При использовании данной функции с приводом, в котором нету диска, выходит ошибка windows о том, что отсутствует диск. Как сделать, чтобы это окно не выходило?
Lapp
Цитата(Билли Боб @ 3.09.2011 1:38) *
При использовании данной функции с приводом, в котором нету диска, выходит ошибка windows о том, что отсутствует диск. Как сделать, чтобы это окно не выходило?

Тебе нужно использовать системный доступ к дискам, а он системозависим. Если твоя прога только для Windows, то вот тебе пример, как ты можешь узнать, есть ли в приводе диск.

uses
Windows;

const
DriveNameLen= 4;
VolumeNameLen= 12;
FileSysNameLen= 128;

var
Drive: string[DriveNameLen];
VolumeName: string[VolumeNameLen];
SerialNumber, MaxFileNameLen, FileSysFlags: DWord;
FileSysName: string[FileSysNameLen];

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
Чтобы не спускаться на такой низкий уровень, можно просто отключить показ критических сообщений системы перед вызовом FileExists, а потом - восстановить прежний режим:

uses windows, sysutils;
begin
OldMode := SetErrorMode (SEM_FAILCRITICALERRORS);
if FileExists ('a:\test.txt') then writeln ('ok') else writeln ('no');
SetErrorMode (OldMode);
end.
, должно сработать. По крайней мере, на официальном форуме поддержки Embarcadero давали именно такой рецепт.
Билли Боб
Вот! отключить показ, то, что надо, спасибо!
TarasBer
> Drive:= 'C:\'+#0;

Дельфа сама всем строкам ноль дорисовывает, не надо это делать руками.
Lapp
Цитата(TarasBer @ 5.09.2011 10:00) *
> Drive:= 'C:\'+#0;

Дельфа сама всем строкам ноль дорисовывает, не надо это делать руками.

Я не знаю, почему ты говоришь тут (в разделе про 32-битные компиляторы) про Delphi. Для Delphi есть свой раздел.
FPC так не прикалывается (специально проверил)).

Если уж зашла речь про Delphi - немного странно мне, если она правда так поступает. Надеюсь, это отключается.
IUnknown
[offtop]
Цитата
Дельфа сама всем строкам ноль дорисовывает, не надо это делать руками.
Неправда:
Нажмите для просмотра прикрепленного файла
Где #0 в Drive[4]? (Настройки проекта - стандартные, ничего специфического не менял)
[/offtop]
TarasBer
Да действительно, я увидел в конце ноль, потому что глобальные переменные инициализируются нулём, а так там ноль не добавляется.
propecia online pharmacy new yor
Viagra For Sale In Canada
can you buy prednisone over the
Acheter Kamagra Ligne
furosemide nursing consideration
Cialis In Der Apotheke Kaufen
where to buy prednisone for dogs
Site De Vente De Cialis
generic valtrex overnight delive
Viagra Prescription Medicale
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.