Fastreport (4.13) в Lazarus

отредактировано 04:23 Раздел: FastReport 4.0
Не нашел соответствующей темы. если что - сильно не пинать а лишь ткнуть носом - где это обсуждалось.
итак. Lazarus 1.0.4. Win7 64 Bit.
при сборке требует FastScript. ставим его. вылазят следующие ошибки:
C:\lazarus\componentsEx\fs\Source\fs_isysrtti.pas(484,26) Error: Can't determine which overloaded function to call
C:\lazarus\componentsEx\fs\Source\fs_isysrtti.pas(486,26) Error: Can't determine which overloaded function to call
правлю строки
...
Result := frxInteger(Round(Caller.Params[0]))
...
Result := frxInteger(Trunc(Caller.Params[0]))
...
на
...
Result := frxInteger(Round(Integer(Caller.Params[0])))
...
Result := frxInteger(Trunc(Integer(Caller.Params[0])))
...

всё собирается и устанавливается.
теперь FastReport. тут веселее:
C:\lazarus\componentsEx\fr\Source\frxDsgnIntf.pas(1071,15) Error: Illegal type conversion: "TIntegerSet" to "Int64"

правка (тут и далее - закомменчен - оригинальный код. псоле него - мой)
//SetOrdValue(frxInteger(S));
SetOrdValue(Integer(S));

далее
C:\lazarus\componentsEx\fr\Source\frxCtrls.pas(487,12) Error: Illegal type conversion: "TMessage" to "TWMWindowPosMsg"

я не силен в винапи но нонче
TMessage = record       {fields according to ICS}
        msg      : UINT;
        case longint of
          0: (
              wParam : WPARAM;
              lParam : LPARAM;
              Result : LRESULT;
             );
          1: (
              wParamlo,
              wParamhi : HALFPARAM;  // Is there Windows type for half an wparam?
              lParamlo,
              lParamhi : HALFPARAM;
              Resultlo,
              Resulthi : HALFLRESULT;
             );
       end;
а
    TWMWindowPosMsg = record
      Msg : UINT;
      Unused : Integer;
      WindowPos : PWindowPos;
      Result : LRESULT;
    end;

что то явно не сходится. судя по строке нам нужен WindowPos. попробовал сделать так (хотя чую что сие не верно):
//with TWMWindowPosMsg(Message).WindowPos^ do
with PWindowPos(message.lParamlo)^ do

далее
C:\lazarus\componentsEx\fr\Source\frxGZip.pas(93,109) Error: Wrong number of parameters specified for call to "Create"
C:\lazarus\componentsEx\fr\Source\frxGZip.pas(171,109) Error: Wrong number of parameters specified for call to "Create"

у TZCompressionStream конструктор таков
constructor Create(dest: TStream; compressionLevel: TZCompressionLevel = zcDefault);
так что правлю так:
//Compressor := TZCompressionStream.Create(Dest, TZCompressionLevel(Compression){$IFDEF WIN64}, 15 {$ENDIF});
Compressor := TZCompressionStream.Create(Dest, TZCompressionLevel(Compression));

далее
frxCustomDBRTTI.pas(0,0) Fatal: Can not find unit fs_idbrtti used by frxCustomDBRTTI.
странно. в FastScript - исходник есть. однако в пакет он отчего то не попал. пока просто зкомментил сей модуль. что бы хоть что то увидеть.

о чудо - оно скомпилилось.
но при перезапуске затребовало zlib1.dll... подсунул взятое тут http://www.winimage.com/zLibDll/index.html (ненаю какой надо и как корректнее. с учетом 64 битной винды). Насколько я понимаю - либа используется для компрессии отчетов. если я не планирую это делать - можно ли отключить сей функционал, что бы не тскать за собой бесполезную dll-ку?

запустилось. однако иконки компонентов отсутствуют. ну да это ладно. кидаем компонент на форму. делаем простейшее
frxReport1.ShowReport;
ловим кучку радостей в виде окон ошибок (см. вложение)
возможно что как раз та правка что я делал по поводу WindowPos и ведет к сим глюкам. если надо исправить иначе - подскажите как.

кстати - версия репорта с лазаре светится как 4.12.1.1.

Основная задача моя - использовать репорт в Линухе. но пока даже под виндой он в итоге - не работает толком (под линух - попробую позже). Если какие то правки не корректны - подскажите что да как надо сделать.

Комментарии

  • отредактировано 04:23
    Я собирал на Lazarus 1.0.4, 1.1. WinXP 32 Bit.
    Пакеты для работы с БД и дизайнера сам добавлял. В принципе работает. Но много глюков. Самая большая проблема с русской кодировкой, идут ??. И в дизайнере, и в отчетах. Например у меня отчеты по русски называется и при наследование не может читать предков. Ну и вывод русского текста. В поддержку писал, но никаких исправлений пока нет.
  • отредактировано 04:23
    написал: »
    Я собирал на Lazarus 1.0.4, 1.1. WinXP 32 Bit.
    Пакеты для работы с БД и дизайнера сам добавлял.

    ну тут пока хотя бы просто запустить отчет. :)
    написал: »
    Самая большая проблема с русской кодировкой, идут ??. И в дизайнере, и в отчетах.

    насколько я помню дельфевый фаст - работал с юникодом. быть может можно ему подсунуть в рантайме юникодную строку?
    написал: »
    В поддержку писал, но никаких исправлений пока нет.

    скажу более. три довольно крупных конторы предлагали небесплатную доработку для лазаря... но как то на контакт всё равно не идут :)

    а с TWMWindowPosMsg(Message) косяков не было? я так понимаю, что часть косяков моих связаны с 64битностью. этот, возможно, тоже. (а 64 бита это для меня принципиально в силу специфики проекта)
  • отредактировано 04:23
    Dalx написал: »
    ну тут пока хотя бы просто запустить отчет. :)
    Отчеты у меня запускают, если нет параметров. С параметрами запросов траблы. Может в это и у меня, т.к. попробовал через UIB компоненты и дополнение там есть , правда для FastReport 3 версии. Подправил и подключил. В Delphi использую FBPlus, не собираются их портировать в Лазаря . UIB для совместимости взял попробовать.
    Dalx написал: »
    насколько я помню дельфевый фаст - работал с юникодом. быть может можно ему подсунуть в рантайме юникодную строку?

    Ну ресурсы и отчеты FastReport идут в UTF-8. Наверно там надо настраивать опциями компилятора. Интересно бы собрать на Lazarus for Linux и посмотреть. Есть еще момент с кодировками. Если использовать frxDBDataSet, который в гриде выводит русский нормально, то есть у frxMemo стоит DataSet и Field работает, а в интерпритаторе выражения - нет
    Dalx написал: »
    а с TWMWindowPosMsg(Message) косяков не было?

    Вроде нет.

    А какую базу данных и компоненты доступа Вы будете использовать?
  • отредактировано 04:23
    написал: »
    Вроде нет.

    гм... буду пробовать... но, наверно, попозжа. чичаз надо добить остальные части проекта... :)
    хотелось бы всё ж услышать комменты разрабов :)
    написал: »
    А какую базу данных и компоненты доступа Вы будете использовать?
    база - думаю не суть это принципиально. сейчас - постгрес. потом (хотя возможно и не так уж отдаленно :) ) sqlite. ну и mssql, access быть может.
    для доступа - сейчас ZEOS. скорее всего на нем и остановимся.

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

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