Delphi 2009
Целых два дня ушло на поиски почему перестал считаться проект.
долгое капание и вот я нашел.
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 не находит на первой строчке.
долгое капание и вот я нашел.
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 не находит на первой строчке.
Комментарии
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'
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"/'
В RS2009 скрипт пишет все строки и имена в UTF8.
Тут 2 варианта, либо вы что-то модифицировали в исходниках, либо используете GetILCode для промежуточного XML кода скриптов созданных в ранних версиях.
Я только что проверил, русские имена переменных (identchars уже не нужны , т.к. RS2009 юникодная среда и идентификаторы могут быть на любом языке).
К слову проверялось это и на китайских иероглифах
Если у Вас даже на нашей версии (не моддифицированой Вами), появляются проблемы, то пришлите пожалуйста пример с демонстрацией ошибки.
Да, еще забыл сказать, скрипт который идет отдельно от FR(отдельный пакет), не поддерживает Rs2009, т.к. мы его еще не обновляли.
Так я брал скриптер который идет с FastReport-om отдельно я не ставлю.
Что ставит инсталятор то и использую.
Похоже нужно свежую версию скачать...
Какой билд лучше?
В аттаче демо FS собранная на RS2009, единственное изменение в коде добавляется функция:
fsScript1.AddMethod('function ФункцияИзПрограммы(Параметр: String):String', CallMethod, '', '' );
Чтобы мои ответы не казались отмашками
Запустил проект - Действительно все заработло.
Кстати ваш проект у меня не качается.