![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с созданием библиотеки ресурсов. [D6, Win2k, WinXP]
Maks Realov © (2004-06-24 10:51:00)Здравствуйте, уважаемые.
Появилась проблема.
Мне надо добавить в свой проект возможность переключения языков интерфейса. Все строковые константы я вынес в ResourceString и у всех визуальных контролов стаит соотв. свойство.
Далее я пытаюсь штатным способом добавить язык: Project -> Languages -> Add. Но!!! Проблема в том, что я использую один спецефичный визуальный компонент и при попытки компиляции проекта на этапе завершения мастера создания библиотеки ресурсов выдаётся ошибка, которую никак не могу победить :(
---------------------------
Error
---------------------------
ObjectTextToResource failed: Line too long on line 58
- File saved: C:\temp\RUS\Unit1.ERR_DFM
---------------------------
OK
---------------------------
Вопрос: можно ли "ручками" создать библиотеку ресурсов, что бы в неё входили как мои ResourceStrings, так и все Captions, Text и т.д. визуальных контролов формы. И что бы при этом продолжала работать схема смены языка "на лету":
if LoadNewResourceModule(iLang) <> 0 then
begin
ReinitializeForms;
end;
где iLang - номер языка
Help так и не дал мне чёткого представления как это сделать :(
Спасибо.
Maks Realov (2004-06-27 14:31:00) [1]ещё есть идеи?
Hint (2004-06-25 12:18:00) [2]Ну тады извините :o)
Может задать вопрос с пристрастием разработчикам компоненты?
Да и файл можно шифровать например MD5 ;o)
ламер (2004-06-25 12:15:00) [3]зачем проект?! только библиотеку ресурсов.
Maks Realov (2004-06-25 12:12:00) [4]ламер © (25.06.04 12:07) [4]:
ага, и что - мне для каждого языка dfm-ки править потом и проект пересобирать? Нет уж дудки!
Пользователь будет скачивать файл-ресурсов с моего сервера и приложение должно само на лету перегружать ресурсы.
Maks Realov (2004-06-25 12:10:00) [5]Hint © (25.06.04 12:04) [3]:
Можно конечно и так сделать как Вы предложили. Но тут есть некоторые НО.
1). Т.к. продукт коммерческий, - не хотелось бы что бы "потроха", т.е. компоненты и их названия были доступны в явном виде. Ничего криминального тут конечно нет, да и сам файл можно кодировать, но всё же это выглядит не очень красиво imho и подходит для проектов с кол-вом строковых ресурсов до 500-1000 штук.
2). Если есть уже отработанный механизм работы с ресурсами, то зачем придумывать лосипед? :)
А в сторону RTTI - что тут рыть-то? RTTI оно и в Африке RTTI :)
Ручками перебирать контролы - не хотса. Не интересно :)
ламер (2004-06-25 12:07:00) [6]>Вопрос: можно ли "ручками" создать библиотеку ресурсов, что бы
> в неё входили как мои ResourceStrings, так и все Captions,
> Text и т.д. визуальных контролов формы. И что бы при этом
> продолжала работать схема смены языка "на лету":
можно. но оно тебе надо? копируешь все DFM-файлы, переводишь значения необходимых свойств и всё.
Hint (2004-06-25 12:04:00) [7]А почему бы вам не использовать такую схему:
Есть файл, ну например, english.lng, который содержит в себе набор записей:
type TComponentLangRes
ComponentName: string[255];
ComponentProp: string[255];
Text: string[255];
end;
где ComponentName - имя компоненты (EditUserName), ComponentProp - свойство (Text, Caption), а Text - это текст на английском, русском, etc.
Вы читаете из файла запись, находите компоненту с помощью FindComponent и определив куда надо запихнуть Text с помощью ComponentProp руссифицируете/"англизируйте" программу.
Можно вообще сохранить в файл состояние компоненты с помощью WriteComponentRes, а считать ReadComponentRes.
Вроде все это не очень сложно.
Можно порыть в сторону RTTI.
Maks Realov (2004-06-25 11:12:00) [8]Я упорный. Буду подниматься. Может кто знающий заметит и ответит наконец.
А то больно уже не охота всё в ini складывать и как не белому человеку "ручками" всё переименовывать :(
Maks Realov (2004-06-24 16:29:00) [9]page up