Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2012.02.12;
Скачать: [xml.tar.bz2];

Вниз

Замена 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.003 c
15-1319718265
И. Павел
2011-10-27 16:24
2012.02.12
Можно ли назначить триггер на чужую БД?


2-1319704001
i2e
2011-10-27 12:26
2012.02.12
Когда завершается отрисовка Image?


15-1319518385
OW
2011-10-25 08:53
2012.02.12
Подскажите идею, алгоритм. Управление с запаздыванием.


3-1271682009
Виктор
2010-04-19 17:00
2012.02.12
Fast Reports 4.6


15-1316061929
P
2011-09-15 08:45
2012.02.12
Windows 8 Developer Preview





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский