Вниз
Скачать: 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.025 c
14-1088082581
RealRascal
2004-06-24 17:09
2004.07.11
Fuzz


8-1082474875
AndreySoft
2004-04-20 19:27
2004.07.11
Как получить имя файла загруженного в TImage


9-1080296782
<<BEAST>>
2004-03-26 13:26
2004.07.11
GLScene ODE и прикрепление сил к ODE объектам.


6-1084265573
gedd
2004-05-11 12:52
2004.07.11
Загрузить файл из интернет через прокси требующий авторизации.


1-1088136020
student__
2004-06-25 08:00
2004.07.11
Недоступно свойство потока Terminated




   Наверх