Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Редактирование ресурсов


Автор: Droll 28.4.2005, 18:18
Здравствуйте!!!
Меня интересует такой вопрос: как правильно использовать функцию UpdateResource {работает, кажется, только в NT/2k/XP}, а именно, как изменять строковые ресурсы в программе

Вот пример, который я нашел
Код


procedure TForm1.Button1Click(Sender: TObject);
var
  Hndl: THandle;
  WStr: WideString;
  tmp: PWideChar;
  iMemAlloc: Integer;
begin
  Hndl:= BeginUpdateResource('Help.exe', False);
  WStr:= 'String Resource';
  iMemAlloc:= (Length(WStr) + 1) * SizeOf(WideChar);
  UpdateResource(Hndl, RT_STRING, '4881', LANG_NEUTRAL,
    PWideChar(WStr), iMemAlloc);
  EndUpdateResource(Hndl, False);
end;



вроде бы все ничего, код вроде работает, потом из этого Help.exe можно с помощью функции loadstr выуживать, но... ResourceHacker видит строку так, как задуманно, но при попытке ее изменить вызывает ошибку:
Цитата(ResHacker)

Compiler Error in line 5 at offset 1
This string ID is outside the scope of 78080 and 78095


А Restorator и вовсе выдает:
Цитата(Restorator)

Corrupt string resource.


Что делать, кто-нибудь знает??

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)