Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];

Вниз

Как получить список дисков с обозначениями.   Найти похожие ветки 

 
Nikfel ©   (2007-09-30 14:18) [0]

Подскажите пожалуйста. Как получить список дисков так ,чтобы узнать HDD,CD,DVD диски. Заранее спасибо.


 
homm ©   (2007-09-30 14:42) [1]

> с обозначениями

Что сие значит?


 
Nikfel ©   (2007-09-30 15:01) [2]

Меня интересует нечто вроде списка, как в TOpenDialog, но мне надо просто получить список устройств: дисковод дискет, DVD-R,CD-R и т.п.


 
Nikfel ©   (2007-09-30 21:33) [3]

Я имею в виду открывающийся список в компоненте TOpenDialog,а мне надо получить нечто похожее, но без отображения значков  дисков и папок, а использовать свои значки. Может кто-нибудь знает как это делается.


 
{RASkov} ©   (2007-09-30 22:53) [4]

> [3] Nikfel ©   (30.09.07 21:33)

Посмотри метод BuildList у TDriveComboBox из FileCtrl.pas


 
Юрий Зотов ©   (2007-10-01 00:59) [5]


procedure TForm1.FormCreate(Sender: TObject);
const
 DiskTypes: array [DRIVE_REMOVABLE..DRIVE_RAMDISK] of string =
   ("Сменный", "Жесткий", "Сетевой", "Лазерный", "Виртуальный");
var
 BitMask: integer;
 DiskChar: char;
begin
 BitMask := GetLogicalDrives;
 DiskChar := "A";
 with TStringList.Create do
 try
   while BitMask > 0 do
   begin
     if BitMask and 1 = 1 then
       Add(DiskChar + " - " + DiskTypes[GetDriveType(PChar(DiskChar + ":\"))]);
     Inc(DiskChar);
     BitMask := BitMask shr 1;
   end;
   ShowMessage(Text)
 finally
   Free
 end
end;


 
Германн ©   (2007-10-01 02:31) [6]


> Юрий Зотов ©   (01.10.07 00:59) [5]

Оффтоп, конечно. Но не могу не спросить.
А почему бы begin не расположить в тексте исходника сразу после "do"? Ну т.е. в той же строчке?


 
Riply ©   (2007-10-01 06:26) [7]

> [6] Германн ©   (01.10.07 02:31)
>А почему бы begin не расположить в тексте исходника сразу после "do"? Ну т.е. в той же строчке?
На вкус и цвет....
Но выскажу свое imho:
вариант
while BitMask > 0 do
begin
 //.........
end;

и понятнее( нагляднее ) и удобно искать end соответствующий begin`у (и наоборот):
просто бежишь "стрелочкой" вниз и находишь. Помогает при разборе чужих
исходников или своих старых.


 
Riply ©   (2007-10-01 06:28) [8]

P.S.
(Если не ошибаюсь)
То что ты предлагаешь, называется C-Style, а Юрий Зотов использует Standart Style.


 
begin...end ©   (2007-10-01 08:11) [9]

GetDriveType может и ноль (DRIVE_UNKNOWN) возвратить, вообще-то...


 
Nikfel ©   (2007-10-01 10:57) [10]

Спасибо за код. У меня только один вопрос остался: как-нибудь можно ли распознать дисковод DVD от дисковода СD.


 
Nikfel ©   (2007-10-01 12:22) [11]

Я нашел в реестре нужную информацию, только проблема в том как ее прочитать. Желательно бы не использовать registry.pas.
Вот нужный ключ в реестре:
HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
Только тип получается reg_binary, а имена:"\DosDevices\A:","\DosDevices\C:" и т.д.
Такой тип данных читать из реестра я не разобрался, может кто-нибудь напишет Demo-код, чтоб было понятно как читать такой тип данных.


 
evvcom ©   (2007-10-01 12:26) [12]


> как-нибудь можно ли распознать дисковод DVD от дисковода СD.

как-нибудь можно. Nero ж распознает. Мало того, распознается, что конкретно может привод делать: читать CD/-DVD/+DVD, писать CD/-DVD/+DVD, LabelFlash и пр.


 
Nikfel ©   (2007-10-01 12:33) [13]

Меня интересует сам код для распознавания, а не программы способные на это.    
А программ таких полно:Nero,Total Commander и т.п.


 
Ping   (2007-10-01 12:44) [14]

Меня интересует сам код для распознавания

Напиши!


 
clickmaker ©   (2007-10-01 12:44) [15]


> [6] Германн ©   (01.10.07 02:31)

ты бы еще спросил почему в
begin
BitMask := GetLogicalDrives;

отступ в один пробел, а в

try
  while BitMask > 0 do

два
:)


 
Riply ©   (2007-10-01 12:59) [16]

> [11] Nikfel ©   (01.10.07 12:22)
>Я нашел в реестре нужную информацию, только проблема в том как ее прочитать.
>Желательно бы не использовать registry.pas.

См RegXXX - функции


 
evvcom ©   (2007-10-01 14:09) [17]


> Меня интересует сам код для распознавания

Ты вопрос задал как?

> как-нибудь можно ли

я ответил, что как-нибудь можно и привел пример того, что другие это делают. Каков вопрос - таков ответ. Как конкретно - не знаю, никогда мне это не было интересно, других дел хватает. Если бы было интересно, я б пошарился в инете на предмет распознавания типов поддерживаемых дисков приводами CD/DVD. Может в WinApi уже добавили какую функцию (XP ведь тоже что-то распознает :)), но у неро, по-моему, всегда был свой какой-то драйвер, более функциональный, да и вообще в нем уже распознавалось все это, когда Билли об этом еще и не думал.

> Я нашел в реестре нужную информацию

А ты уверен, что это то, что тебе нужно с учетом
> как-нибудь можно ли распознать дисковод DVD от дисковода СD
? В этом наверняка информации не больше, чем выдает GetDriveType



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.37 c
1-1186491223
Kolan
2007-08-07 16:53
2007.10.21
Как сделать TabEnabled у PageControl а?


2-1191156516
Kostya2x
2007-09-30 16:48
2007.10.21
Разбор текста с "тегами" и вывод его на RichEdit


8-1168425391
cautur
2007-01-10 13:36
2007.10.21
Запись разговора


2-1190812703
Malik
2007-09-26 17:18
2007.10.21
Application


2-1191245945
Light-blr
2007-10-01 17:39
2007.10.21
Потеря фокуса формой при вызове другой формы в OnActivate





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский