Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сохранение настроек программы в её исполняемом файле.


AlexanderMS ©   (2007-06-19 19:21:00) 

Хотелось бы осуществить сохранение настроек программы в её exe-файле. Как можно и как лучше: через сохранение данных в ресурсы либо непосредственной записью в exe-файл без использования ресурсов? Посоветуйте, пожалуйста. Просто я не нашёл примера записи ресурса в файл (искал плохо, быть может: везде - чтение уже присоединённого). Во втором случае я нашёл пример, где настройки пишутся в конец исполняемого файла. Это правильно? Ошибок не будет? Объясните, пожалуйста, как правильно сделать.


Сергей М.   (2007-06-20 14:53:00) [1]


> AlexanderMS ©   (19.06.07 19:21)


В ресурсы гораздо проще.
Впрочем, хоть даже и не в ресурсы, но метода "грязного хака" не миновать.
Ну а "грязный хак" есть "грязный хак" - этим все сказано.


Dimaxx   (2007-06-20 14:35:00) [2]


> но только $10 - 1 сразу намекает на размер массива

Ыы, вот как раз 0..15 сразу намекает на размер массива, а $10-1 как-то не особо.


Rial   (2007-06-20 10:27:00) [3]

> [14] Dimaxx ©   (20.06.07 10:10)
> > $10 - 1
> Никогда не понимал людей пишущих такой изврат... Тяжело
> написать 15? :)

В конечном счете код все равно будет сгенерирован идентичный,
но только $10 - 1 сразу намекает на размер массива.
И проще модифицировать в случае, если вместо числа
там будет константа.
Да и вид шестнадцатеричный как- то привычнее.

П.С. видимо, утро не задалось ? :)


Dimaxx   (2007-06-20 10:10:00) [4]

offtop:


> $10 - 1

Никогда не понимал людей пишущих такой изврат... Тяжело написать 15? :)


TUser   (2007-06-20 07:39:00) [5]

Я видел программу, которая настройки сохраняла стеганографически в картинке на раб. столе. Выяснилось эот применением бубна при устранении глюка, возникшего после смены обоев.


Riply   (2007-06-20 06:26:00) [6]

> [11] Джо ©   (20.06.07 05:59)
А самому не догадаться ? :)
По моему все очевидно. :)


Джо   (2007-06-20 05:59:00) [7]

2 AlexanderMS ©
Ну, вот, пожалуйста, объясните, зачем это нужно?


Rial   (2007-06-20 01:59:00) [8]

> [8] Плохиш ©   (20.06.07 01:27)
> Да не переведутся любители изобретать велосипеды с квадратными
> колёсами. Аминь...

А еще можно сохранять настройки в заголовке mp3 файла
или в загрузочном секторе диска...


Германн   (2007-06-20 01:35:00) [9]


> Плохиш ©   (20.06.07 01:27) [8]
>
> Да не переведутся любители изобретать велосипеды с квадратными
> колёсами. Аминь...
>

Переведутся. Виста (не к ночи будь упомянуто это ненавистное для меня имя!) их всех вырвет с корнем :)


Плохиш   (2007-06-20 01:27:00) [10]

Да не переведутся любители изобретать велосипеды с квадратными колёсами. Аминь...


Rial   (2007-06-20 00:49:00) [11]

А еще можно вот так сделать:

Type
    TOptions = record //тут все настройки
     ...
    end;

    TMyRec = record
     Flag    : Array[0 .. $10 - 1] of Byte;
     Options : TOptions;
    end;

Const
     MyRec : TMyRec =
     (Flag : (...); - рандомный набор байт
      Options : (..) - настройки
      );

Теперь в программе можно просто читать настройки из константы.
А при закрытии запускать еще один процесс, который будет
находить уникальную последовательность байт, а сразу за ней
перезаписывать данные в нашу константу.

П.С. но не стоит этим увлекаться, не всегда тут все так просто. %)


Desdechado   (2007-06-19 21:32:00) [12]

> сохранение настроек программы в её exe-файле
Дурь, имхо.
Из папок без возможности записи не запустится (тем паче с CD), да и антивирусы визжать будут.


oxffff   (2007-06-19 20:48:00) [13]

Либо дописываешь в существующую секцию согласно FileAlignment из  IMAGE_OPTIONAL_HEADER, если конечно хватит.


oxffff   (2007-06-19 20:39:00) [14]


> Объясните, пожалуйста, как правильно сделать.


Производишь разбор PE файла.
Добавляешь секцию необходимого размера, и производишь запись в нее.


Anatoly Podgoretsky   (2007-06-19 19:55:00) [15]

> AlexanderMS  (19.06.2007 19:21:00)  [0]

Из другой программы.


TUser   (2007-06-19 19:30:00) [16]

В ресурсы. См. UpdateResource. Запускаешь из себя вспомогатльную прорграмму, которая ждет завершения твоей проги и обновляет ресуры основного экзешника.


Kolan   (2007-06-19 19:24:00) [17]

По сабжу поиши по форуму, с месяу назад было.

По нормальному — ненадо так делать, используй отдельный файл(.ini, .xml)…


Наверх

Титульная страница Поиск, карта сайта Написать письмо