Что изменилось в 0.9.26? Где мои тексты???

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Что изменилось в 0.9.26? Где мои тексты???

Сообщение Troublemaker » 15.10.2008 14:54:54

0.9.26/win релиз. Кодировка исходника - 1251. В exe-шнике все нужные тексты видны нормально. Но:

Вот так выглядит проект, собранный в 0.9.24:
lazarus-24-form.jpg


А вот так выглядит он же (исходник не менялся) в 0.9.26:
lazarus-26-form.jpg


Вопрос: почему похерились тексты, которые меняются в рантайме? (тултипы, названия радиокнопок, заголовок окна и т.п.)

Весь в расстройстве...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: Что изменилось в 0.9.26? Где мои тексты???

Сообщение Brainenjii » 15.10.2008 15:05:13

Надо перевести их в UTF8, вроде ж уже обсуждалось ^_^
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Что изменилось в 0.9.26? Где мои тексты???

Сообщение Troublemaker » 15.10.2008 15:26:38

Brainenjii писал(а):Надо перевести их в UTF8, вроде ж уже обсуждалось ^_^

Пробовал... эту фишку я увидел. Но тогда начинаются другие грабли. Например, есть у меня такое:

Код: Выделить всё
var a:string
...
a:='** что-то там'
...
a[1]:='Б' //заменяю первый символ в строке

И при компиляции ругается: хочу, мол, char, а мне дают ConstantString, то бишь, widechar. Это значит надо будет по всем исходникам менять объявления переменных и подобные присваивания. Проще сразу головой об стену. Или каким-то образом заблокировать перевод "вшитых" текстов в utf. Это возможно? Или плюнуть на 26 и продолжать в 24?
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: Что изменилось в 0.9.26? Где мои тексты???

Сообщение yantux » 15.10.2008 16:19:04

Brainenjii писал(а):Надо перевести их в UTF8, вроде ж уже обсуждалось ^_^


viewtopic.php?f=5&t=3629&p=26686&hilit=UTF8#p26686

С функцией CP1251ToUtf8() у меня ни как не хочет компилится.
yantux
постоялец
 
Сообщения: 133
Зарегистрирован: 29.10.2007 16:02:33
Откуда: Санкт-Петербург

Re: Что изменилось в 0.9.26? Где мои тексты???

Сообщение Mr.Smart » 15.10.2008 16:49:25

Troublemaker писал(а):
Brainenjii писал(а):Надо перевести их в UTF8, вроде ж уже обсуждалось ^_^

Пробовал... эту фишку я увидел. Но тогда начинаются другие грабли. Например, есть у меня такое:

Код: Выделить всё
var a:string
...
a:='** что-то там'
...
a[1]:='Б' //заменяю первый символ в строке

И при компиляции ругается: хочу, мол, char, а мне дают ConstantString, то бишь, widechar. Это значит надо будет по всем исходникам менять объявления переменных и подобные присваивания. Проще сразу головой об стену. Или каким-то образом заблокировать перевод "вшитых" текстов в utf. Это возможно? Или плюнуть на 26 и продолжать в 24?


в модуле LCLProc есть функции для работы в UTF-8
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Что изменилось в 0.9.26? Где мои тексты???

Сообщение Odyssey » 15.10.2008 22:01:49

Troublemaker писал(а):Это значит надо будет по всем исходникам менять объявления переменных и подобные присваивания. Проще сразу головой об стену. Или каким-то образом заблокировать перевод "вшитых" текстов в utf. Это возможно? Или плюнуть на 26 и продолжать в 24?

Насколько я знаю, "отключить" utf-8 в 0.9.26 невозможно, поэтому варианта только 3 (по убыванию трудоемкости):
1) переписать код с использованием функций из LCLProc, и таким образом ввести в приложение полную поддержку Unicode;
2) оставить исходный код в cp1251, вести обработку текста как раньше в cp1251, а при взаимодействии с LCL-контролами перекодировать текст в utf-8;
3) остаться на 0.9.24.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Что изменилось в 0.9.26? Где мои тексты???

Сообщение Troublemaker » 16.10.2008 00:58:09

Odyssey писал(а):оставить исходный код в cp1251, вести обработку текста как раньше в cp1251, а при взаимодействии с LCL-контролами перекодировать текст в utf-8;

Чувствую, так и придется сделать, а заодно переопределить кучу string-ов. И забыть про использование отладчика, поскольку он не умеет показывать выражения типа utft8toSys(string) :(
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: Что изменилось в 0.9.26? Где мои тексты???

Сообщение NXP » 16.10.2008 01:03:27

Перевод на UTF-8 это очень хорошая идея.
Теперь не будет проблем при переходе с Win машины на Linux и обратно.
Спасибо разработчикам за этот подарок. Давно надо было это сделать! :D
Да и с СУБД теперь проще будет :D

ps Opera на всех платформах использует KIO-8, и ничего :)
Аватара пользователя
NXP
постоялец
 
Сообщения: 187
Зарегистрирован: 02.01.2008 16:11:56
Откуда: Воронеж

Re: Что изменилось в 0.9.26? Где мои тексты???

Сообщение Mr.Smart » 16.10.2008 10:26:45

Спасибо разработчикам за этот подарок.

Присоединяюсь!
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Что изменилось в 0.9.26? Где мои тексты???

Сообщение Troublemaker » 16.10.2008 11:33:31

NXP писал(а):Перевод на UTF-8 это очень хорошая идея.

Возможно. Но как быть с сотнями кило исходников, где используется посимвольная выборка из строк? Всё переписывать, менять все структуры данных?
Сейчас внимательно изучаю http://wiki.lazarus.freepascal.org/LCL_Unicode_Support#Instructions_for_users, и как-то грустно становится
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: Что изменилось в 0.9.26? Где мои тексты???

Сообщение Attid » 16.10.2008 11:54:20

Troublemaker писал(а):Возможно. Но как быть с сотнями кило исходников, где используется посимвольная выборка из строк? Всё переписывать, менять все структуры данных?


ну если сразу сделал грамотно и все делается в вынесеных процедурах то поменять только в одном месте.
если нет то как раз время для рефакторинга =) его как раз полезно через некоторое время делать =)

я подобные процеруры переделал сначало на то что на входе перекодирует в 1251 и дальше по старому алгоритму и обратно в ЮТФ, и за день все проекты перевел.

постепенно буду на LCLProc переводить где будет сказываться быстродействие либо будут всплывать ошибки\переделки.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Что изменилось в 0.9.26? Где мои тексты???

Сообщение Odyssey » 16.10.2008 12:30:02

Troublemaker писал(а):И забыть про использование отладчика, поскольку он не умеет показывать выражения типа utft8toSys(string) :(

Здесь поможет консоль, достаточно создать маленький отладочный модуль с функцией типа Utf8DbgOut(const aMessage: string) которая будет перекодировать строку из utf-8 (а под windows еще и делать CharToOEM) и выводить сообщение в консоль. При желании можно элементарно переключиться на ведение лог-файла отладки. При создании релиза этот модуль убирается из uses, и забытые отладочные вызовы подсвечиваются как ошибки, что помогает от них избавиться.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Что изменилось в 0.9.26? Где мои тексты???

Сообщение B4rr4cuda » 16.10.2008 13:12:43

Troublemaker писал(а):Возможно. Но как быть с сотнями кило исходников, где используется посимвольная выборка из строк? Всё переписывать, менять все структуры данных?

Это можно вылечить заменой string на widestring. Дешево и сердито.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: Что изменилось в 0.9.26? Где мои тексты???

Сообщение VirtUX » 16.10.2008 13:14:01

Mr.Smart писал(а):
Спасибо разработчикам за этот подарок.

Присоединяюсь!
+1
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: Что изменилось в 0.9.26? Где мои тексты???

Сообщение Troublemaker » 16.10.2008 14:26:34

Odyssey писал(а):достаточно создать маленький отладочный модуль

ТОгда возникает сильное сомнение в необходимости окна Debugger Watches, раз единственное, что оно может показывать, это изменения глобальных переменных :(

Я не знаю, какую переменную или результат какой функции мне понадобится посмотреть в тот или иной момент отладки. А делать полный дамп всех переменных после каждой команды, это как-то некрасиво :)

B4rr4cuda писал(а):заменой string на widestring. Дешево и сердито.

Я уже думал об этом. Но это приведет к удвоению всех выходных данных (у меня используются StringList-ы в .ini-формате, по ряду причин всевозможные встроенные БД не подходят, формат обсуждению и изменению не подлежит) и необходимости писать конвертер. Хотя здесь тоже не совсем понятно - как именно работает strings.LoadFromFile, в какой кодировке идет чтение запись.
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

Рейтинг@Mail.ru