Текущий архив: 2006.07.02;
Скачать: CL | DM;
Вниз
Проблема с {$I-} {$I+} Найти похожие ветки
← →
Eraser © (2006-05-23 19:54) [0]Добрый вечер.
Столкнулся с такой проблемой, что нужно проверить, доступен ли диск A (floppy), при этом не показывая пользователю системное окошко "В устройстве нет диска."
Как только не мучался, но это окошко всё равно появляется.
Вот специально тестовый пример сделал.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
{$I-}
ChDir("a:\");
{$I+}
end;
end.
всё равно сообщение об ошибке выдаёт. В опциях компилятора отключал проверку I/O - ноль эффекта.
Как быть? Может кто сталкивался с такой проблемой?
PS Windows XP SP2, BDS 2006 SP1.
Спасибо.
← →
Eraser © (2006-05-23 19:56) [1]Кстати при работе через делфевский отладчик окно об ошибке не появляется.
← →
MBo © (2006-05-23 19:58) [2]SetErrorMode
← →
begin...end © (2006-05-23 20:01) [3]SetErrorMode(SEM_FAILCRITICALERRORS)
← →
Eraser © (2006-05-23 20:02) [4]
> MBo © (23.05.06 19:58) [2]
>
> SetErrorMode
Спасибо огромное! То что нужно!
← →
icWasya © (2006-05-24 09:10) [5]
function IsDriveReady(DriveLetter : char) : bool;
var
OldErrorMode : Word;
OldDirectory : string;
begin
OldErrorMode := SetErrorMode(SEM_NOOPENFILEERRORBOX or SEM_FAILCRITICALERRORS );
GetDir(0, OldDirectory);
{$I-} ChDir(DriveLetter + ":\"); {$I+}
if IoResult <> 0 then
Result := False
else
Result := True;
ChDir(OldDirectory);
SetErrorMode(OldErrorMode);
end;
Страницы: 1 вся ветка
Текущий архив: 2006.07.02;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.009 c