Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Хранение данных в exe-шнике

28K
03 мая 2007 года
madsingle
1 / / 03.05.2007
...Добрый день .. проблема следующего характера:
Нужно некий текст хранить в программе(exe), с подальшим его изменением, добавление, удалением.
Тоесть при запуске программы брыть из ресурсов текст, далее работа непосредственно с текстом, а при закрытии отправлять его обратно в ресурсы изменнённым.
Делаю всё в принципе как обычно...сохранение текста в другой программе работает, а в самой себя нет...
 
Код:
void * hUpdate = BeginUpdateResource(Application->ExeName.c_str(),false);
char * text = new char[File->Text.Length()];
text = File->Text.c_str();
UpdateResource(hUpdate,"RT_RCDATA","LIBRARY",0, (LPVOID)text, File->Text.Length());
delete [] text;
EndUpdateResource(hUpdate, false);

Код рабочий... но ...проблема в том, что вместо сохранения текста в ресурсах, в корневой папке появляются файлы с именами RCX256.tmp,RCX257.tmp и т.д. а моя программа остаётся не тронутой.
Ещё момент...если эти фалы переименовать с tmp на exe, то как оказалось - это и есть моя программа с сохраннёным текстом (то что я добиваюсь).
....................
А теперь вопрос... может кто сталкивался с таким феноменом?
Или есть другие способы залить изменённый текст в ресурсы самой ислоняемой программы (именно в процессе выполнения)???
255
05 мая 2007 года
Dart Bobr
1.4K / / 09.04.2004
хмм.. попробуй перед записью залочить ресурс. похожий прикол, токо с чтением был на работе в нашем прожекте.. вроди как помогло..
3
05 мая 2007 года
Green
4.8K / / 20.01.2000
Нельзя изменить файл, из которого порожден процесс, т.к. он открыт на чтение и расшарен только для чтения.
10
06 мая 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: Green
Нельзя изменить файл, из которого порожден процесс, т.к. он открыт на чтение и расшарен только для чтения.


Если бы он был открыт только на чтение, в него нельзя было бы писать. ;) На самом же деле он открыт на выполнение, и на всё время выполнения заблокирован системой от изменений. Задача похожа на "файл программы удаляет самого себя по окончании выполнения", в ней и подсмотри решение.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог