Unicode Troubles

отредактировано 12:33 Раздел: FastReport 4.0
Добрый день.


1. В последних версиях перестал работать юникод в компонентах TfrxMemoView, когда это Мемо находится на Кросс Таб объекте.
2. Также юникод не работает если в TfrxMemoView описываешь выражение IF результаты которого содержат строку из символов разных языков..


Прошу прокоментировать, будет ли функциональность возвращена, или возвращаться на старые версии..

спс за внимание.

Комментарии

  • отредактировано 12:33
    TfrxMemoView.Font.Charset должен быть установлен в DEFAULT_CHARSET.
  • отредактировано 12:33
    написал: »
    TfrxMemoView.Font.Charset должен быть установлен в DEFAULT_CHARSET.

    это понятно, он работает во всех случаях кроме ::::

    1. когда TfrxMemoView находится на Кросс Таб объекте (TfrxDBCrossView).
    2. Также юникод не работает если в TfrxMemoView описываешь выражение IFF результаты которого содержат строку из символов разных языков..

    пример

    [iff(1=1, 'Pārskats и Промотр', 'фыва āā')]

  • отредактировано 12:33
    1. Поправлено.
    2. Этот вариант не мог работать в предыдущих версиях, т.к. выражения используют тип String.
  • отредактировано 12:33
    написал: »
    1. Поправлено.
    2. Этот вариант не мог работать в предыдущих версиях, т.к. выражения используют тип String.

    1. Не работает в версии 4.5.50, если кодировка не совпадает с DEFAULT_CHARSET.
    2. Не работает в версии 4.5.50 в ситуации iif(1=1,'Просмотр','Не просмотр'),если кодировка не совпадает с DEFAULT_CHARSET.
  • отредактировано March 2008
    1. Интересно как юникод должен отображатся под локалью? :)
    Charset отличная от DEFAULT_CHARSET предпологает использования кодировок(той, которая выбрана) , а не юникода.
    Для примера RUSSIAN_CHARSET = 1251, юникод в этом случае и не должен отображатся.
    2. Аналогично, поставил RUSSIAN_CHARSET , ввел [iif(1=1,'Просмотр','Не просмотр')] все отображается корректно.
  • отредактировано 12:33
    написал: »
    1. Интересно как юникод должен отображатся под локалью? :)
    Charset отличная от DEFAULT_CHARSET предпологает использования кодировок(той, которая выбрана) , а не юникода.
    Для примера RUSSIAN_CHARSET = 1251, юникод в этом случае и не должен отображатся.
    2. Аналогично, поставил RUSSIAN_CHARSET , ввел [iif(1=1,'Просмотр','Не просмотр')] все отображается корректно.
    1. По всей вероятности у Вас в региональных настройках на закладке Advanced стоит Russian. В этом случае все действительно работает при
    RUSSIAN_CHARSET и DEFAULT_CHARSET, если мы вводим кирилицу, но символы других кодировок,например BALTIC_CHARSET = 1257,
    отображаются неверно.Аналогично и с кирилицей,если закладке Advanced стоит не Russian.В предыдущих версиях 4.4 и ниже все работало при
    указании нужного CHARSET.
  • отредактировано 12:33
    Забавное поведение ReportDesigner после динамической загрузке/выгрузке/загрузке библиотек.
    1. При открытии "Редактора текста" для обычного MemoView при Font.Charset=DEFAULT_CHARSET в редакторе текста ВООБЩЕ не видна Memo для редактирования. При нажатии кнопки OK текст очищается...
    2. Как изменить умолчание Font.Charset=DEFAULT_CHARSET для новых создаваемых компонент?
    3. Где посмотреть Build? В "О FastReport" у меня просто "4.5" стоит

    И несколько не связанная с Unicode проблема:
    4. Начинает дублироваться кнопка "Рисование" (Draw) на ObjectsToolBar'е. Похоже недоработки в Initialization-Finalization секциях при регистрации/отмене_регистрации компонент.
  • отредактировано 12:33
    AlexLi написал: »
    1. По всей вероятности у Вас в региональных настройках на закладке Advanced стоит Russian. В этом случае все действительно работает при
    RUSSIAN_CHARSET и DEFAULT_CHARSET, если мы вводим кирилицу, но символы других кодировок,например BALTIC_CHARSET = 1257,
    отображаются неверно.Аналогично и с кирилицей,если закладке Advanced стоит не Russian.В предыдущих версиях 4.4 и ниже все работало при
    указании нужного CHARSET.
    Это речь идет именно о тексте который вводится через Memo Edit ?
    Если да, то такой вариант не мог работать в предыдущих версиях, т.к. если Charset отлична от DEFAULT_CHARSET, создается стандартный контрол TMemo, текст в него вводится нормально но вот WM_GETTEXT будет возвращать текст который зависит от выбранной локали на вкладке Advanced и так ведут себя абсолютно все стандартные делфийские контролы, т.е. изначальный текст теряется еще при обработке сообщения WM_GETTEXT самим контролом и FR тут не причем.
    Поля из базы должны отображаться нормально, не зависимо от выбранной локали , т.к. FR конвертирует их самостоятельно с учетом CHARSET у мемки.

    AlexLi написал: »
    Забавное поведение ReportDesigner после динамической загрузке/выгрузке/загрузке библиотек.
    1. При открытии "Редактора текста" для обычного MemoView при Font.Charset=DEFAULT_CHARSET в редакторе текста ВООБЩЕ не видна Memo для редактирования. При нажатии кнопки OK текст очищается...
    2. Как изменить умолчание Font.Charset=DEFAULT_CHARSET для новых создаваемых компонент?
    3. Где посмотреть Build? В "О FastReport" у меня просто "4.5" стоит

    И несколько не связанная с Unicode проблема:
    4. Начинает дублироваться кнопка "Рисование" (Draw) на ObjectsToolBar'е. Похоже недоработки в Initialization-Finalization секциях при регистрации/отмене_регистрации компонент.
    1. Какая ОС , случайно не win 9x ?
    2. Никак.
    3. Номер билда указан в имени инсталла.
    4. У меня все нормально, как воспроизвести проблему ?
  • отредактировано 12:33
    -=Den=- написал на 20.03.2008, 15:13:

    Прикладываю пример. Его достаточно посмотреть в дизайне(выполнять не нужно).В Мемо2 и шапке CrossTab введен один и тот же текст(обратите внимание на букву ā). Причем в шапку он тоже вводится нормально.Ломается при выходе из редактирования. В региональных настройках на закладке Advanced стоит Russian. Буду очень признателен, если Вы укажете в чем моя ошибка.
  • отредактировано 12:33
    Можете выложить скриншот, т.к. без активных датасетов кросс таб отображается пустым в дизайнере.
  • отредактировано 12:33
    написал: »
    Можете выложить скриншот, т.к. без активных датасетов кросс таб отображается пустым в дизайнере.

    Вопрос с работой выражений также остается.
  • отредактировано March 2008
    Проверил, действительно в коде кросса остались стринговые типы , отсюда и проблемы конвертации, поправлено.
    По поводу выражений поправлено только частично, т.е. можно использовать только при установлено локале и только один язык (который выбран).
    Как я уже писал выражения никогда не поддерживали юникод.
    Для его поддержки в выражениях нужно переписывать ExpressionCache и писать новый класс TWideStringList(вместо TStringList).
    Опережая ваш вопрос, да это планируется сделать в ближайших версиях :)
  • отредактировано March 2008
    написал: »
    1. Какая ОС , случайно не win 9x ?
    WinXP Prof, Win2003 R2 Enterprise SP2
    написал: »
    2. Никак.
    Невозможно концептуально, архитектурно, идейно, технологически или просто СЕЙЧАС нельзя?
    написал: »
    4. У меня все нормально, как воспроизвести проблему ?
    Попробую прислать в ближайшее время пример
    Смысл в том, что в процессе работы неоднократно загружаются и выгружаются библиотеки, в которых используется библиотека xxxReportsxxx, а в xxxReportsxxx в requires стоят fsxxx, frxxxx...
  • отредактировано 12:33
    Спасибо. На версии 4.5.51 все заработало. Вы мне очень помогли Вашей оперативностью. Еще раз спасибо.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.