Вниз
Скачать: CL | DM;

Проблема с созданием библиотеки ресурсов.   Найти похожие ветки 

 
Maks Realov   (2004-06-24 10:51) [0]

Здравствуйте, уважаемые.
Появилась проблема.
Мне надо добавить в свой проект возможность переключения языков интерфейса. Все строковые константы я вынес в 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-24 16:29) [1]

page up


 
Maks Realov   (2004-06-25 11:12) [2]

Я упорный. Буду подниматься. Может кто знающий заметит и ответит наконец.
А то больно уже не охота всё в ini складывать и как не белому человеку "ручками" всё переименовывать :(


 
Hint ©   (2004-06-25 12:04) [3]

А почему бы вам не использовать такую схему:
Есть файл, ну например, 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.


 
ламер ©   (2004-06-25 12:07) [4]

>Вопрос: можно ли "ручками" создать библиотеку ресурсов, что бы
> в неё входили как мои ResourceStrings, так и все Captions,
> Text и т.д. визуальных контролов формы. И что бы при этом
> продолжала работать схема смены языка "на лету":

можно. но оно тебе надо? копируешь все DFM-файлы, переводишь значения необходимых свойств и всё.


 
Maks Realov   (2004-06-25 12:10) [5]

Hint ©   (25.06.04 12:04) [3]:

Можно конечно и так сделать как Вы предложили. Но тут есть некоторые НО.
1). Т.к. продукт коммерческий, - не хотелось бы что бы "потроха", т.е. компоненты и их названия были доступны в явном виде. Ничего криминального тут конечно нет, да и сам файл можно кодировать, но всё же это выглядит не очень красиво imho и подходит для проектов с кол-вом строковых ресурсов до 500-1000 штук.
2). Если есть уже отработанный механизм работы с ресурсами, то зачем придумывать лосипед? :)

А в сторону RTTI - что тут рыть-то? RTTI оно и в Африке RTTI :)
Ручками перебирать контролы - не хотса. Не интересно :)


 
Maks Realov   (2004-06-25 12:12) [6]

ламер ©   (25.06.04 12:07) [4]:

ага, и что - мне для каждого языка dfm-ки править потом и проект пересобирать? Нет уж дудки!
Пользователь будет скачивать файл-ресурсов с моего сервера и приложение должно само на лету перегружать ресурсы.


 
ламер ©   (2004-06-25 12:15) [7]

зачем проект?! только библиотеку ресурсов.


 
Hint ©   (2004-06-25 12:18) [8]

Ну тады извините :o)
Может задать вопрос с пристрастием разработчикам компоненты?
Да и файл можно шифровать например MD5 ;o)


 
Maks Realov   (2004-06-27 14:31) [9]

ещё есть идеи?



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.02 c
14-1088091866
FX
2004-06-24 19:44
2004.07.11
Preview


14-1087556934
Vlad Oshin
2004-06-18 15:08
2004.07.11
Люди! дайте песенку, пожалуйста


1-1088054119
Pasha
2004-06-24 09:15
2004.07.11
Народ, подскажите плз. как мне дописать сводку к файлу


3-1087301567
zevsus
2004-06-15 16:12
2004.07.11
Interbase(Firebird 1.5): Опустошение и репликация


6-1084507754
OlegM
2004-05-14 08:09
2004.07.11
Как определить что на компе другом запущен сервер




   Наверх