![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить есть ли диск в приводе?
Кириешки © (2004-10-30 13:26:00)Полечаю буквы СD приводов, затем их названия, а вот как определить есть ли в приводе диск не знаю. Подскажите плийз.
Петрук Игорь (2004-10-31 09:22:00) [1]Функция FindFirst возвращает некоторое значение если отсутствует диск в приводе. В справке по этой можно найти это значение. Если отсутствует диск, то появляется сообщение об ошибке. При выполнении функции обработку исключений лучше отключить. А ты Кириешки случайно не из Кременчуга.
abc (2004-10-30 18:54:00) [2]var
q,e:array[0..MAX_PATH-1]of Char;
m:Cardinal;
begin
if GetVolumeInformation(PChar('d:\'),q,MAX_PATH,@m,m,m,e,MAX_PATH)then ...
else ...
GetVolumeInformation в оличии GetDiskFreeSpace не дает ошибки при извлечении диска из привода.
OSokin (2004-10-30 17:08:00) [3]Третий топик, на который я отвечаю одним и тем же (почти) ответом... Модераторы, вы удаляйте сообщения хоть лишь двухмесячной давности, а то люди посмотреть на них не могут...
И вообще, это уже пора заносить в FAQ
Чтобы проверить, находится ли диск в приводе, нужно использовать функцию "GetDiskFreeSpace(pchar(disk+':\'),a,a,a,a);", где "disk" - это название диска, а "a" - переменная типа cardinal. Если функция возвращает false, то диска в приводе нет.
abc (2004-10-30 16:12:00) [4]>есть ли в приводе диск
{Если диск существует/вставлен ...}
if GetHDDInfo(S[I], VolumeName, FileSystemName, VolumeSerialNo,
MaxComponentLength, FileSystemFlags) then {... тогда собираем информацию}
http://delphibase.endimus.ru/?action=viewfunc&topic=harddisk&id=10139
grom (2004-10-30 16:05:00) [5]>Полечаю буквы СD приводов, затем их названия,
Полечаю буквы СD приводов - это просто.
затем их названия - А вот зто как раз меня интересует.
Каким оразом ты получаешь названия СD приводов.
Подскажи если можно.
Кириешки (2004-10-30 14:26:00) [6]ssk
Спасибо.
SSSdd (2004-10-30 14:24:00) [7]ssk © спасибо.
ssk (2004-10-30 13:45:00) [8]как вариант: прочитать серийный номер. если что-то есть, значит диск есть:
function DiscInDrive(D: char): boolean;
var
VolumeName, FileSystemName : array [0..MAX_PATH-1] of Char;
VolumeSerialNo : DWord;
MaxComponentLength, FileSystemFlags : Cardinal;
begin
GetVolumeInformation(PAnsiChar(D + ':\'), VolumeName, MAX_PATH,
@VolumeSerialNo, MaxComponentLength, FileSystemFlags,
FileSystemName, MAX_PATH);
Result := VolumeSerialNo <> 0;
end;
функция не работает с чистыми болванками и стертыми RW