Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Delphi. Как определить букву диска CD-ROM и автоматически выбрать ее в DriveCombobox1?

Вячеслав Власов Гуру (3453), закрыт 11 месяцев назад
А если определиться несколько CD-ROM'ов (например, физический + виртуальный), то выбрать просто самую раннюю букву.
Лучший ответ
Свиньи жарят людей Гуру (2598) 11 месяцев назад
 procedure TForm1.FormShow(Sender: TObject); 
var
i: integer;
begin
for i := $44 to $5A do
if GetDriveType(pchar(format('%s:\', [chr(i)]))) = DRIVE_CDROM then
begin
DriveComboBox1.Drive := chr(i);
break;
end;
end;
Вячеслав ВласовГуру (3453) 11 месяцев назад
Как всегда - четко и по делу! Спасибо большое! :)
Свиньи жарят людей Гуру (2598) Вячеслав Власов, немазашто :)
Остальные ответы
Def Просветленный (37036) 11 месяцев назад
ВинАПИшный GetDriveType выдаст 5 на строку с буквой диска
https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getdrivetypea

Но прям интересно, зачем в современности вообще нужно обращаться именно к подобным дисководам? Почему к дискете, например?
Вячеслав ВласовГуру (3453) 11 месяцев назад
Именно поэтому и пишу такой софт под себя - чтобы снять данные с диска.
kaiu Высший разум (115630) 11 месяцев назад
www.swissdelphicenter.ch/en/showcode.php?id=92

 procedure TForm1.Button1Click(Sender: TObject); 
var
typ: Integer;
s: string;
begin
s := 'C:\';
typ := GetDriveType(PChar(s));
if Typ <> 0 then case typ of
DRIVE_REMOVABLE:
begin
ShowMessage('Drive Removable / Diskette');
end;
DRIVE_FIXED:
begin
ShowMessage('Drive fixed / Festplatte');
end;
DRIVE_CDROM:
begin
ShowMessage('CD ROM Drive');
end;
DRIVE_RAMDISK:
begin
ShowMessage('RAM Drive');
end;
DRIVE_REMOTE:
begin
ShowMessage('Remote Drive / Netzlaufwerk');
end;
end;
end;
Похожие вопросы