Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопрос по защищенным блокам
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
Dead.MorozZ
Как защитить прогу от выбора юзером в ComboDriveBox СД-ромов или дисководов, когда в них нет диска?
Что-то типа:
try
...
except
beep;
end;

(Это в ComboBoxOnChange)

Что писать вместо "..." ?
volvo
Используй WinAPI - функцию GetVolumeInformation... Например, попытайся прочесть метку диска)... Если диска нет - то функция вернет 0... Если все прочиталось (а значит диск был) - вернется ненулевое значение...
Dead.MorozZ
To: Volvo
Ух! Че-то параметров много blink.gif
Какие зачем и куда?? Объясни rolleyes.gif
volvo
Если честно, было лень запускать Дельфи, набросал в 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...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.