![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
есть ли дискета в дисководе [D6, Win95/98, Win2k]
MetalFan © (2002-11-14 11:56:00)Мастера, подскажите плз, как определить, вставлена ли дискета в дисковод?
спсб.
MetalFan (2002-11-14 16:20:00) [1]всем сенькс!!!
Song (2002-11-14 12:55:00) [2]GetVolumeInformation()на метку тома.
SI-riuss (2002-11-14 12:55:00) [3]Сорри.... :))))
Как узнать, находится ли дискета в дисководе?
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; { DriveState }
SI-riuss (2002-11-14 12:54:00) [4]<HTML>
<HEAD>
<TITLE>Как узнать, находится ли дискета в дисководе?</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<BR>
<center><h3>Как узнать, находится ли дискета в дисководе?</h3></center>
<PRE><TT>
type
TDriveState(DS_NO_DISK, DS_UNFORMATTED_DISK,
DS_EMPTY_DISK, DS_DISK_WITH_FILES);
functionDriveState(DrvLetter: Char): TDriveState;
var
Mask: String[6];
SearchRec: TSearchRec;
oldMode: Cardinal;
ReturnCode: Integer;
begin
oldMode: = SetErrorMode(SEM_FAILCRITICALERRORS);
Mask:= <FONT COLOR="#0000FF">"?:\*.*"</FONT>;
Mask[1] := DrvLetter;
<FONT COLOR="#000080"> {$I-}</FONT> <FONT COLOR="#000080"> { отключить обработку исключительных ситуаций }</FONT>
ReturnCode := FindFirst(Mask, faAnyfile, SearchRec);
FindClose(SearchRec);
<FONT COLOR="#000080"> {$I+}</FONT>
caseReturnCode of
<FONT COLOR="#000080"> { как минимум один файл был найден }</FONT>
0: Result := DS_DISK_WITH_FILES;
<FONT COLOR="#000080"> { файлов не найдено и дискета в порядке }</FONT>
-18: Result := DS_EMPTY_DISK;
<FONT COLOR="#000080"> { DS_NO_DISK для DOS, ERROR_NOT_READY для WinNT, ERROR_PATH_NOT_FOUND для Win 3.1 }</FONT>
-21, -3: Result := DS_NO_DISK;
else
<FONT COLOR="#000080"> { дискета лежит в дисководе но она не форматировнная }</FONT>
Result := DS_UNFORMATTED_DISK;
end;
SetErrorMode(oldMode);
end; <FONT COLOR="#000080"> { DriveState }</FONT>
</TT></PRE>
<br><br><br><br>
<a href="../r_delphi1_tips.html">Советы начинающим</a>
</BODY>
</HTML>
Marcus (2002-11-14 12:47:00) [5]PrevErrMode := SetErrorMode(SEM_FAILCRITICALERRORS or SEM_NOOPENFILEERRORBOX);
Result := SetCurrentDirectory("A:\");
if Result = false then
MessageDlg("Диска нет");
SetErrorMode(PrevErrMode);