Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 508

/ вопрос закрыт /

Доброго времени суток, уважаемые эксперты!
Не судите строго за вопрос, но возникли сложность с обновлением строкового ресурса в программе.

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

2 проблема - так как я не могу получить доступ к файлу, попытался обновить информацию у этой же программы но положеной в другую директорию, а следовательно не выполняемую. НО после выполнения кода, который ни на что не ругается (проверял GetLastError после каждой команды и ругнулось только на s:=StrToInt(year_on) и выдало 8, хотя год и присваивается какой нужно), и проверке ресурсов программы через restorator - данные те же, что и были ранее.

Надеюсь на вашу помощь.
Прилагаю листинг процедуры в которой и возникает проблема.
Код показывает что я пытаюсь обновить ресурс как исполняемого файла, так и не исполняемого, но информация не обновляется нигде.
Исполняемый файл находится в D:\DirPath\ProgramDirPath\poschitalka.exe

Приложение:
  1. procedure TDate_change.Ok_buttonClick(Sender: TObject);
  2. var
  3. day_on,month_on,year_on:word;
  4. date_on:tdatetime;
  5. res:THandle;
  6. s:string;
  7. qwerty:integer;
  8. nam:string;
  9. error_code:integer;
  10. Ptr : Pointer;
  11. begin
  12. nam:=Application.ExeName;
  13.  
  14. date_on:=monthCalendar1.date;
  15. decodedate(int(date_on),year_on,month_on,day_on);
  16.  
  17. s:=FloatToStr(year_on);
  18.  
  19. res:=BeginUpdateResource(PChar(nam),false);
  20. Ptr:=Addr(s);
  21. UpdateResource(res,RT_STRING,'65261',LANG_NEUTRAL,ptr,sizeof(s));
  22. EndUpdateResource(res,false);
  23. error_code:=getlasterror();
  24. ShowMessage(IntToStr(error_code));
  25. s:=FloatToStr(month_on);
  26. res:=BeginUpdateResource('D:\DirPath\poschitalka.exe',false);
  27. Ptr:=Addr(s);
  28. UpdateResource(res,RT_STRING,'65262',LANG_NEUTRAL,ptr,sizeof(s));
  29. EndUpdateResource(res,false);
  30. s:=FloatToStr(day_on);
  31. res:=BeginUpdateResource(PChar(nam),false);
  32. Ptr:=Addr(s);
  33. UpdateResource(res,RT_STRING,'65263',LANG_NEUTRAL,ptr,sizeof(s));
  34. EndUpdateResource(res,false);
  35. Close;
  36. end;


Pessimist Вопрос закрыт (ответы не принимаются, мини-форум закрыт)

Вопрос задал: Pessimist (статус: Посетитель)
Вопрос отправлен: 16 июля 2011, 21:38
Состояние вопроса: закрыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 23; последнее сообщение — 18 июля 2011, 19:47; участников в обсуждении: 4.

Страницы: [« Предыдущая] [1] [2]

Pessimist

Pessimist (статус: Посетитель), 18 июля 2011, 14:22 [#21]:

Дааа...
Вопрос закрыт, за не имением экспертов на сайте экспертов.
50% хоть что-то путное сказали, 50% троль..

18 июля 2011, 14:23: Вопрос закрыт (решение принял автор вопроса — Pessimist): Отсутствие экспертов, присутствие эксперто-тролей

18 июля 2011, 14:29: Вопрос вновь открыт (изменение состояния произвёл min@y™)

min@y™

min@y™ (статус: Доктор наук), 18 июля 2011, 14:29 [#22]:

Цитата (Pessimist):

Вопрос закрыт, за не имением экспертов на сайте экспертов.

Ну, дык, записывайся в эксперты, первым будешь.

Цитата (Gooddy):

Почему зря то? Отдохнёшь.

Работы полно. Но придёццо отдохнуть. Я вообще коньяк не люблю, от него башка с утра болит. Пиво - это ВЕЩ!

Цитата (Pessimist):

50% хоть что-то путное сказали, 50% троль..

Не пытайся менять инфу в ехе-шнике. Это дикий геморрой. И, кстати, такую хрень очень не любят антивирусы и файрволлы. Тебе оно надо?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

18 июля 2011, 14:31: Вопрос закрыт (решение принял min@y™): Записывайся к нам, экспертом будешь!

18 июля 2011, 19:46: Вопрос вновь открыт (изменение состояния произвёл автор вопроса — Pessimist)

Pessimist

Pessimist (статус: Посетитель), 18 июля 2011, 19:47 [#23]:

Антивирус стоит, изменения вносятся, антивирус не ругается. Единственное, что изменения вносятся неправильно.
ПыСы: На Restorator не видел еще антивируса, который ругается на его действия.

18 июля 2011, 19:49: Вопрос закрыт (решение принял автор вопроса — Pessimist): Эксперт из меня никудышный - времени нет.

Страницы: [« Предыдущая] [1] [2]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 25 апреля 2026, 13:34
Выполнено за 0.02 сек.