Главная страница
    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.45 MB
Время: 0.003 c
15-1319142602
Юрий
2011-10-21 00:30
2012.02.12
С днем рождения ! 21 октября 2011 пятница


2-1320656448
Terrmit
2011-11-07 12:00
2012.02.12
Программное открытие окна PopupEdit


2-1320428134
tcjkjl
2011-11-04 20:35
2012.02.12
окружность колца


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


6-1250528504
sniknik
2009-08-17 21:01
2012.02.12
Генерация файлов для получения сертификата (SSL)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский