Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

есть ли дискета в дисководе [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);


Наверх

Титульная страница Поиск, карта сайта Написать письмо