![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Dead.MorozZ |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 108 Пол: Мужской Реальное имя: Георгий Репутация: ![]() ![]() ![]() |
Как защитить прогу от выбора юзером в ComboDriveBox СД-ромов или дисководов, когда в них нет диска?
Что-то типа: try
...
except
beep;
end;
(Это в ComboBoxOnChange) Что писать вместо "..." ? Сообщение отредактировано: volvo - 7.11.2006 18:24 -------------------- Минус - это уже половина плюса, а плюс порой - целых два минуса...
|
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Используй WinAPI - функцию GetVolumeInformation... Например, попытайся прочесть метку диска)... Если диска нет - то функция вернет 0... Если все прочиталось (а значит диск был) - вернется ненулевое значение...
|
Dead.MorozZ |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 108 Пол: Мужской Реальное имя: Георгий Репутация: ![]() ![]() ![]() |
To: Volvo
Ух! Че-то параметров много ![]() Какие зачем и куда?? Объясни ![]() -------------------- Минус - это уже половина плюса, а плюс порой - целых два минуса...
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Если честно, было лень запускать Дельфи, набросал в FPC (в Дельфях должно пройти практически без изменений):
{$mode delphi}
uses windows;
function GetVolumeLabel(DriveName :Pchar): String;
var
VolumeLabel, drvFileSystem: array [0 .. pred(max_path)] of Char;
VolumeSerialNo, MaxComponentLength, FileSystemFlags : DWord;
begin
if GetVolumeInformation(DriveName, VolumeLabel, MAX_PATH,
@VolumeSerialNo,
MaxComponentLength, FileSystemFlags,
drvFileSystem, MAX_PATH)
then result := VolumeLabel
else result := 'no disk';
end;
begin
writeln(GetVolumeLabel('G:'));
end.
При отсутствии диска GetVolumeInformation возвращает False... |
![]() ![]() |
![]() |
Текстовая версия | 23.07.2025 4:16 |