| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как определить в каком CD-Rom приводе |
| Автор: Serhik_z 17.3.2006, 18:48 |
| Здравствуйте! В системном блоке находится несколько Cd-Rom приводов. Как определить в каком CD-Rom приводе находится диск, и как скопировать файл с этого CD-Rom, на диск С: |
| Автор: Poseidon 17.3.2006, 18:57 |
| Я так понимаю, буквы С-дисков известны. Тогда нужно просто обратится к нужнову файлу. Если диск не тот, то получаем ошибку чтения файла "Файл не найден", по каторой можно судить, что "не тот CD-Rom". Смотрим на другой диск... |
| Автор: Snowy 17.3.2006, 19:14 |
| А если есть 4 CD-ROM и в каждом по диску? |
| Автор: Poseidon 17.3.2006, 19:24 |
| Snowy, я тоже об этом подумал. А еще подума, а что если в каждом по одинаковому диску А что если структура файлов и папок одинакова, а сами файлы разные. В общем, вопрос требует массу уточнений. |
| Автор: Serhik_z 17.3.2006, 19:26 |
| |
| Автор: bems 17.3.2006, 19:29 |
| Зачем тебе? Если ещешь свой диск используй файл с сигнатурой. Если хочешь внічку скопировать чужой - храни данные об используемых ранее в какой-то базе (например в реестре) |
| Автор: Serhik_z 17.3.2006, 19:41 |
| Если все диски одинаковы и даже файлы одинаковы, то по умолчании с первого Cd привода (или буквы по алфавиту) - (E F H K). - и копировать только с одного диска. E - первая по умолчании. (C D - Винты) |
| Автор: bems 17.3.2006, 19:48 | ||
CreateFile c параметром dwDesiredAccess=0 а потом DeviceIOControl
и раскручивай дальше по MSDN |
| Автор: Snowy 17.3.2006, 19:51 | ||||||
| Вот. Нацарапал код, который ищет все CD-ROM в которых есть диск. Функции возвращают строку, в которой каждый символ - имя диска
Пример:
Добавлено @ 19:55 Копируем файл с CD на диск C:
|
| Автор: Snowy 17.3.2006, 20:02 |
| Нет, не проще. Зачем мне определять тип несуществующих или сетевых дисков? Интересуют только локальные. Остальные и опрашивать незачем. |
| Автор: bems 17.3.2006, 20:04 | ||
|
| Автор: Snowy 17.3.2006, 20:06 |
| Что построчно? |
| Автор: bems 17.3.2006, 20:08 |
| твой код. и смысл каждого приведения типов, для танкистов (меня например) |
| Автор: Snowy 17.3.2006, 20:14 | ||
|
| Автор: Poseidon 17.3.2006, 20:29 | ||
Я бы еще добвил if FileExists(PChar(s[i] + ':\File.txt') then CopyFile... |
| Автор: Snowy 17.3.2006, 21:24 |
| Можно. Но необязательно. Если файла не будет, то и копировать не будет. Просто вернет 0. Ну и фиг с ним. |
| Автор: bems 17.3.2006, 22:41 | ||
|
| Автор: Snowy 17.3.2006, 23:53 |
| Можно. Но не обязательно. И так и перетак, но работать будет. Вариации всякие возможны. Я представил свою. Она мне нравится. Но и шаг влево и вправо - не преступление. |
| Автор: Guedda 18.3.2006, 02:56 |
| Если он будет перебирать все буквы, тогда есть вероятность того, что файлсуществует на локальном диске, а не на CD-роме. Так что Snowy прав, и этот вариант подходит лучше всего. |
| Автор: bems 19.3.2006, 09:33 | ||
но в общем Так что давайте попітаемся остановиться |