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

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

UpdateResource (изменение данных в исполняемом файле)


Владимир Владимирович ©   (2006-08-16 17:04:00) 

Есть файл .txt с содержимым:

header
     value1
     value2
     value3
header2
    value1
    ...
...

Как можно организовать работу, чтобы можно было спокойно через tmemo обращаться к этим данным в исполняемом файле и потом сохранять изменения туда же? MSDN не помог, так как там с функцией Udateresource у меня не получилось.


VladimirVladimirovic   (2006-08-16 18:08:00) [1]

все ок, функция рабочая - пользуйтесь, просто была еще одна ошибка у меня.


VladimirVladimirovic   (2006-08-16 17:40:00) [2]

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


VladimirVladimirovic   (2006-08-16 17:26:00) [3]

Извиняюсь, за опечатку, брать данные нужно из файла который запущен (саму программу которая все это делает), а сохранять в другой файл, не запущенный.


Владимир Владимирович   (2006-08-16 17:25:00) [4]

Мне писать нужно в другой EXE файл и из него же брать эти самые данные.
Вот что делаю:

var
hExe,hUpdateRes : tHandle;
hRes,hResLoad : hrSrc;
lpResLock : pointer;
begin
hExe := LoadLibrary(pansichar(application.exename));
hRes := FindResource(hExe, 'todolist', 'text');
hResLoad := LoadResource(hExe, hRes);
lpResLock := LockResource(hResLoad);

hUpdateRes := BeginUpdateResource('todo.exe', FALSE);
UpdateResource(hUpdateRes, 'text', 'todolist',  LANG_NEUTRAL,
    lpResLock, SizeofResource(hExe, hRes));
EndUpdateResource(hUpdateRes, FALSE);

FreeLibrary(hExe);

Выдает ошибку:

Project updater.exe raised exception class EAccessViolation with message 'Access violation at address 00454AE2 in module 'updater.exe'. Write of address 00000058'. Process stopped.


Чапаев   (2006-08-16 17:12:00) [5]

> через tmemo обращаться к этим данным в исполняемом файле
> и потом сохранять изменения туда же?

Через ResourceStream.

Надеюсь, ты знаешь, что в запущенный PE писать обычными средствами нельзя?


Наверх

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