Главная страница
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
2-1319994931
ProgRAMmer Dimonych
2011-10-30 20:15
2012.02.12
recv() с таймаутом


15-1319117012
Вадим
2011-10-20 17:23
2012.02.12
Глюки Delphi 7 и Windows 7 64


10-1177068721
Сергей М.
2007-04-20 15:32
2012.02.12
Visual FoxPro Run-Time Library (vfpXX.dll)


15-1319659770
Kerk
2011-10-27 00:09
2012.02.12
Отчет о работе сервисов Google


2-1318479725
Pcrepair
2011-10-13 08:22
2012.02.12
Паук(spider) для обработки ХТМЛ-страниц. TWebbrowser или INDY?