отображение форм и навигации в Delphi 2010

отредактировано March 2010 Раздел: FastReport Server
При вызове форм не отображается кирилица, не работает строка навигации отчета (всего две неработающих кнопки с неверной кодировкой). Ниже предложен вариант полного решения проблемы.

Баг 1: модуль frxServerTemplates, строка 195
процедура перевод юникода в ASCII запускается два раза

заменить
FTemplate.LoadFromStream(FSSI{$IFDEF Delphi12}, TEncoding.ASCII{$ENDIF});
на
FTemplate.LoadFromStream(FSSI);

Баг2: модуль frxServerVariables, строка 35
разработчики оставили две версии метода AddVariable. При извлечении ресурсов метод вызывается в таком виде:
FTemplate.Variables.AddVariable('L_FIRST', UTF8Encode(frxResources.Get('HTMLNavFirst')));
т. к. UTF8Encode возвращает RawByteString, который неявно приводится как к ANSIstring, так и к Unicodestring, вызывается первая попавшая версия AddVariable, с параметром ANSIstring, хотя фактически UTF8Encode возвращает ссылку на unicode. Хотя ANSI версия метода для FRS под Delphi2010 вообще не нужна.

заменить
procedure AddVariable(const Name: String; const Value: AnsiString);{$IFDEF Delphi12} overload;
procedure AddVariable(const Name: String; const Value:String); overload;
{$ENDIF}

на
procedure AddVariable(const Name: String; const Value: {$IFDEF Delphi12}String {$ELSE} AnsiString{$ENDIF});
убрать реализацию второй перезагрузки метода (AddVariable(const Name: String; const Value:String)), оставив без изменения первую

Баг3: модуль frxServerForms, строка 87
заменить
WriteExpLn(AnsiString(str));
на
WriteExpLn(UTF8Encode(str));

После предложных манипуляций FRS полностью работоспособен под Delphi 2010.

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

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