Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.02.12;
Скачать: CL | DM;

Вниз

Замена string ресурсов в runtime   Найти похожие ветки 

 
VladM   (2010-09-30 10:56) [0]

Есть некий компонент, в котором прописаны строки в resourcestring. Для перевода на другой язык, стоит задача  подменить эти строки. Нашел следующую реализацию
-----------------------------------------------------------
uses
 Consts;

procedure TForm1.Button1Click(Sender: TObject);
begin
 InputBox("Test", "Enter something", "Test");
end;

procedure HookResourceString(rs: PResStringRec; newStr: PChar);
var
 oldprotect: DWORD;
begin
 VirtualProtect(rs, SizeOf(rs^), PAGE_EXECUTE_READWRITE, @oldProtect);
 rs^.Identifier := Integer(newStr);
 VirtualProtect(rs, SizeOf(rs^), oldProtect, @oldProtect);
end;

const
 NewOK: PChar = "New Ok";
 NewCancel: PChar = "New Cancel";

initialization
 HookResourceString(@SMsgDlgOK, NewOK);
 HookResourceString(@SMsgDlgCancel, NewCancel);
end.
-----------------------------------------------------------
Данный пример работает, но если текст на который нужно заменять прописан на момент компиляции. Я же подгружаю из файла, во время выполнения, и тут не работает. Даже если в коде написать   HookResourceString(@SMsgDlgOK, Label1.Caption); тоже, или пусто или выводит левые строки.
В чем может быть причина (Delphi XE) ?


 
Сергей М. ©   (2010-09-30 11:49) [1]


> Для перевода на другой язык, стоит задача  подменить эти
> строки


> подгружаю из файла, во время выполнения


Ну так и подгружай из другого файла !


 
VladM   (2010-09-30 12:18) [2]

С подгрузкой нет проблем... проблема в том, что то, что я подгружаю не заменяется...
тут дело не в подгрузке...
например так
HookResourceString(@SMsgDlgOK,PChar("aaaa"));  - работает

HookResourceString(@SMsgDlgOK,PChar(Label1.Caption)); - не работает отображает "Tahoma"

HookResourceString(@SMsgDlgOK,PChar(Label1.Name));  - работает

решил... типы млин
HookResourceString(@SMsgDlgOK,PWideChar(WideString(Label1.Caption)));  - работает



Страницы: 1 вся ветка

Текущий архив: 2012.02.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.009 c
15-1319187613
George
2011-10-21 13:00
2012.02.12
Расчет индекса Хирша


2-1320150226
начинающий_
2011-11-01 15:23
2012.02.12
конструктор / деструктор


2-1320169991
Gu
2011-11-01 20:53
2012.02.12
Package x64 Delphi Xe2


2-1320124854
Mach3
2011-11-01 08:20
2012.02.12
Дождаться выполнения скрипта.


1-1285829771
VladM
2010-09-30 10:56
2012.02.12
Замена string ресурсов в runtime