Delphi 2009

отредактировано November 2008 Раздел: FastScript
Целых два дня ушло на поиски почему перестал считаться проект.
долгое капание и вот я нашел.

unit fs_xml;

{$IFDEF Delphi12}
Text := UTF8Decode(Copy(Name, i + 1, len - i));
{$ELSE}
Text := Copy(Name, i + 1, len - i);
{$ENDIF}
Если уж вы ставите фукцию UTF8Decode - то хотя бы проверьте как она работает с русскими символами.
После ее вызова руских символов не остается.


Предистория. Было это давно. В скрипте нужна была поддержа русских букв так хотелось заказчику.
Как написали из поддержки или на форуме нужно добавить эту строчку.
А вот и сам топик. http://fast-report.com/ru/forum/index.php?...identchars+text
PASCAL_GRAMMAR =
'<identchars text="_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZабвгдежзийклмнопрстуфхцчшщьыъэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ"/>' +
Все работало замечательно. Пока - не внесли UTF8Decode


Var Name, s :string;
i, len : Integer;
begin

Name := 'ident text="G_пв_ст" pos="2:12"/';

i:= 6; len := 32;
s := Copy(Name, i + 1, len - i); Тут как и должно быть G_пв_ст
s := UTF8Decode(Copy(Name, i + 1, len - i)); а тут получим G__

:) :) :)

Если вместо
Text := UTF8Decode(Copy(Name, i + 1, len - i));
написать
Text := Copy(Name, i + 1, len - i);
Вообще перестает выполняться скрипт Begin не находит на первой строчке.

Комментарии

  • отредактировано 16:42
    Теперь в фукцию даже параметр не передается с рускими буквами

    function F_1(pName:string; pValue, px1,px2:Extended):Extended;
    begin
    Result := F_GetFormulaLess1(pName, pValue, px1,px2, 0 );
    end;

    вызов F_1 ('ТА_1___Q_о1', 210, 1, 1); в отладчике видем

    pName = '___Q_о1' а должно быть 'ТА_1___Q_о1'
  • отредактировано 16:42
    function F_1(pName:string; pValue, px1,px2:Extended):Extended;
    begin
    Result := F_GetFormulaLess1(pName, pValue, px1,px2, 0 );
    end;

    var res:Extended;
    begin
    res := F_1 ('ТА_1___Q_о1', 210, 1, 1);

    ShowMessage(res);
    end.

    Приходит
    Name = 'string text="'ТА_1___Q_о1'" pos="10:26"/'
    unit fs_xml; Text := UTF8Decode(Copy(Name, i + 1, len - i));
    получается 'text="'_1___Q_1'" pos="10:26"/'
  • отредактировано November 2008
    Ну не может перед “Text := UTF8Decode(Copy(Name, i + 1, len - i));” быть строка "Name = 'string text="'ТА_1___Q_о1'" pos="10:26"/'".
    В RS2009 скрипт пишет все строки и имена в UTF8.

    Тут 2 варианта, либо вы что-то модифицировали в исходниках, либо используете GetILCode для промежуточного XML кода скриптов созданных в ранних версиях.

    Я только что проверил, русские имена переменных (identchars уже не нужны , т.к. RS2009 юникодная среда и идентификаторы могут быть на любом языке).
    К слову проверялось это и на китайских иероглифах :)

    Если у Вас даже на нашей версии (не моддифицированой Вами), появляются проблемы, то пришлите пожалуйста пример с демонстрацией ошибки.

    Да, еще забыл сказать, скрипт который идет отдельно от FR(отдельный пакет), не поддерживает Rs2009, т.к. мы его еще не обновляли.
  • отредактировано November 2008
    написал: »
    Да, еще забыл сказать, скрипт который идет отдельно от FR(отдельный пакет), не поддерживает Rs2009, т.к. мы его еще не обновляли.

    Так я брал скриптер который идет с FastReport-om отдельно я не ставлю.
    Что ставит инсталятор то и использую.

    Похоже нужно свежую версию скачать...
    Какой билд лучше?
  • отредактировано November 2008
    Текущую, 4.7.19 кажется.
    В аттаче демо FS собранная на RS2009, единственное изменение в коде добавляется функция:
    fsScript1.AddMethod('function ФункцияИзПрограммы(Параметр: String):String', CallMethod, '', '' );

    Чтобы мои ответы не казались отмашками :)
  • отредактировано 16:42
    Скачал fr4_7_19_d12p.exe
    Запустил проект - Действительно все заработло.

    :) :) :)

    Кстати ваш проект у меня не качается. :)

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

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