![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать... [D6, WinXP]
Владимир © (2004-11-04 09:59:00)Как узнать что программа запущенна с CD?
Юрий Зотов (2004-11-04 12:54:00) [1]> Владимир (04.11.04 10:34) [15]
Извините, но проблема непонятна.
Разве не очевидно, что в том виде, как это сделано сейчас, программа, запущенная с CD, не сможет записать никаких ini-файлов?
Очевидно. И не поможет тут никакое определение, откуда именно она запущена. Ну, определите Вы (любым способом, неважно каким), что запуск проишел с CD - а дальше-то что? Работать-то ведь она все равно не сможет.
Значит, надо менять логику работы программы. Или не использовать ini-файл совсем, а использовать, например, реестр. Или писать ini-файл всегда на винт, а не на тот диск, откуда запустили программу. Или не писать его, если программа запущена с CD. Или выдать юзеру диалог, что настройки сохранены не будут и он должен запускать программу с винта. Или... еще кучу разных "или" можно придумать.
Поэтому и непонятно - в чем проблема-то? На CD программа записать ничего не сможет - значит, надо менять ее логику. И ничего другого тут не придумаешь, даже если мы тут все вместе будем обсуждать этот вопрос хоть три года.
TUser (2004-11-04 10:39:00) [2]
> возникает ошибка
try ... except
Владимир (2004-11-04 10:34:00) [3]Если на диск записан только exe файл то при сохранении настроек происходит создание ini файла, и возникает ошибка.
Сохранение настроек происходит автоматически при закрытии формы.
TUser (2004-11-04 10:33:00) [4]Если запустить прогу с переполненного диска или с защищенной дискеты - тоже не получится записывать в ini. Это я к тому, что делай [7] - и совершенно не важно, CD - не-CD ...
Юрий Зотов (2004-11-04 10:32:00) [5]> VMcL © (04.11.04 10:29) [11]
А, тогда понятно. Хорошо, что Вы пояснили, а то я уж было выдумывать начал.
Юрий Зотов (2004-11-04 10:29:00) [6]> Владимир (04.11.04 10:16) [5]
> Дело в том, что в программе я использую ini файл, а когда она
> записана на CD то запись параметров в ini файл невозможна.
Да, невозможна. И что дальше? В чем проблема-то?
VMcL (2004-11-04 10:29:00) [7]>> Юрий Зотов © (04.11.04 10:16) [6]
> 1. Конференция по антихакингу находится не здесь.
Юрий, не выдумывайте. Я просто обратил внимание автора ветки, что таким способом не отличить реальный CD от эмулируемого, если ему это вдруг очень важно.
Владимир (2004-11-04 10:27:00) [8]Пробовал не помогает
begin...end (2004-11-04 10:25:00) [9]
> [8] Владимир (04.11.04 10:23)
Ну тогда, может быть, {$I-} / {$I+} поможет...
Владимир (2004-11-04 10:23:00) [10]Но тогда он сгинерирует ошибку.
КаПиБаРа (2004-11-04 10:22:00) [11]Владимир (04.11.04 10:16) [5]
В таком случае унивирсальным способом будет попытка открыть файл на запись.
Юрий Зотов (2004-11-04 10:16:00) [12]> VMcL © (04.11.04 10:12) [3]
1. Конференция по антихакингу находится не здесь.
2. И прежде, чем на нее идти, способ [1] и [2] надо уже знать.
Владимир (2004-11-04 10:16:00) [13]Дело в том, что в программе я использую ini файл, а когда она записана на CD то запись параметров в ini файл невозможна.
VMcL (2004-11-04 10:12:00) [14]>> begin...end © (04.11.04 10:03) [1]
>> Юрий Зотов © (04.11.04 10:05) [2]
... или эмулятора CD.
VMcL (2004-11-04 10:12:00) [15]>> begin...end © (04.11.04 10:03) [1]
>> Юрий Зотов © (04.11.04 10:05) [2]
... или эмулятора CD.
Юрий Зотов (2004-11-04 10:05:00) [16]if GetDriveType(PChar(Copy(ParamStr(0), 1, 3))) = DRIVE_CDROM then ...
begin...end (2004-11-04 10:03:00) [17]Copy(ParamStr(0), 1, 1) - буква диска; потом проверяем (GetDriveType).