не компилятся даже демо проекты...

отредактировано 01:28 Раздел: FastReport 3.0
Стояла версия 3.17 все ok.
Поставил 3.19, встало нормально, однако даже при попытке откомпилировать демо-проекты вываливается ошибка (рис.)
Поставил версию 3.19 - ошибка та же.
Вернулся к версии 3.17 все ok, тот же демо проект компилируется.
В чем дело?
P.S. перед тем как ставить FR 3.20 поставил Update 2 for Delphi 6.
Может это как то связано? Но 3.17 работает прекрасно, я снес 3.20 и снова выставил 3.17

Комментарии

  • отредактировано May 2006
    А не пробовал в последней версии перекомпилировать все пакеты ФастРепорта через утилиту Recompile?
  • отредактировано 01:28
    GloThin написал:
    А не пробовал в последней версии перекомпилировать все пакеты ФастРепорта через утилиту Recompile?
    пробовал, конечно. Результат тот же.
  • отредактировано 01:28
    Оказывается Delphi Update не при чем.
    Сейчас снес Delphi полностью. И установил только FastReport 3.20
    В результате при попытке откомпилировать даже саме простые примеры из Demo выпадает ошибка, о которой я писал выше.

    Ошибка выскакивает в этой процедуре (frxClass.pas)
    procedure TfrxReport.Clear;
    begin
    {$IFNDEF FR_COM}
      if FEngineOptions.ReportThread <> nil then
        THackThread(FEngineOptions.ReportThread).Synchronize(DoClear) else
    {$ENDIF}
        DoClear;
    end;
    
  • отредактировано 01:28
    У кого-нибудь вообще работает FastReport 3.19 (3.20) с Delphi 6?
  • отредактировано 01:28
    А откуда такие строки взялись в исходниках?
    {$IFNDEF FR_COM}
    такого быть не должно. В 3.21 проверьте.
  • отредактировано 01:28
    написал:
    А откуда такие строки взялись в исходниках?
    {$IFNDEF FR_COM}
    такого быть не должно. В 3.21 проверьте.
    В 3.21 такие строки присутствуют, тока в следующем виде:
    procedure TfrxReport.Clear;
    begin
    {$IFNDEF FR_COM}
    // if FEngineOptions.ReportThread <> nil then
    //   THackThread(FEngineOptions.ReportThread).Synchronize(DoClear) else
    {$ENDIF}
       DoClear;
    end;
    
  • отредактировано 01:28
    GloThin написал:
    GloThin написал:
    А откуда такие строки взялись в исходниках?
    {$IFNDEF FR_COM}
    такого быть не должно. В 3.21 проверьте.
    В 3.21 такие строки присутствуют, тока в следующем виде:
    procedure TfrxReport.Clear;
    begin
    {$IFNDEF FR_COM}
    // if FEngineOptions.ReportThread <> nil then
    //   THackThread(FEngineOptions.ReportThread).Synchronize(DoClear) else
    {$ENDIF}
       DoClear;
    end;
    
    3.21 версии у меня к сожалению нет.
    А эти строчки пробовал заокмментарить.
    Он в DoClear выдает ошибку.
    В теле процедуры DoClear третья, четвертая строки, где вызываются процедуры. Сейчас Delphi c FastReport нет под рукой. Завтра напишу точнее где это исключение выдает.
    А в версии 3.15 было написано так:
    procedure TfrxReport.Clear;
    begin
     if FEngineOptions.ReportThread <> nil then
       THackThread(FEngineOptions.ReportThread).Synchronize(DoClear) else
       DoClear;
    end;
    
  • отредактировано 01:28
    Сейчас специально поставил версию d6p.exe и d7p.exe - нет в исходниках таких строк. Мы их автоматом вырезаем, чтобы не загромождать исходники.
  • отредактировано 01:28
    написал:
    Сейчас специально поставил версию d6p.exe и d7p.exe
    А инсталл в исходниках не пытались ставить?
    Там точна такие строки есть...
    написал:
    Мы их автоматом вырезаем, чтобы не загромождать исходники.
    Может причина не в загромождении?м ;)
  • отредактировано 01:28
    GloThin написал:
    Может причина не в загромождении?м ;)
    Сейчас пошагово смотрел, где возникает исключение.
    D6 + FR3.20. Проект PrintFile из папки Demos.
    Оказалось в первый раз исключение возникает еще раньше, чем в DoClear.

    Ошибка появляется когда в Project1 выполняет строку
     Application.CreateForm(TForm1, Form1);
    
    Выполняется конструктор
    constructor TFunctions.Create(AScript: TfsScript);
    
    в модуле fs_isysrtti.pas
    в нем стопорится на строке
       AddMethod('function Date: TDateTime', CallMethod4, FCatDate);
    
    которая в свою очередь вызывает в свою очередь
    constructor TfsMethodHelper.Create(const Syntax: String; Script: TfsScript);
    
    в модуле fs_iinterpreter.pas
    При выполнении этого конструктора, а точнее последней строчки:
     FVarArray := VarArrayCreate([0, Count - 1], varVariant);
    

    вызывается exception EVariantError 'Variant array index out of bounds'
  • отредактировано 01:28
    Это значит, что в D6 не стоят апдейты (нужен и первый, и второй).
  • отредактировано 01:28
    AlexTZ написал:
    Это значит, что в D6 не стоят апдейты (нужен и первый, и второй).
    В том то и дело, что FR 3.15 работало без Update.
    Перед установкой FR 3.20 я установил три Update:
    1) D6_RTL1_ent.exe
    2) D6_RTL2_ENT.exe
    3) d6_rtl3.zip

    после всего этого установил FR3.20.
    Этот exception EVariantError 'Variant array index out of bounds' наблюдался при этом.
    Я решил, что возможно дело в этих Update и попробовал снести FR 3.20.
    Поставил 3.19. Exception там тот же. Тогда я снес 3.19, установил 3.15 - работает нормально.
    Потом я снес Delphi, установил FR3.20 без Update D6, все тот же Exception.
    Поставил 3.15 - работает.


  • отредактировано 01:28
    написал:
    Перед установкой FR 3.20 я установил три Update:
    1) D6_RTL1_ent.exe
    2) D6_RTL2_ENT.exe
    3) d6_rtl3.zip
    Должны стоять эти апдейты:
    1)D6_upd1_ent
    2)D6_upd2_ent
  • отредактировано 01:28
    написал:
    Должны стоять эти апдейты:
    1)D6_upd1_ent
    2)D6_upd2_ent
    Не подскажите где их можно скачать? На Borland.com что-то не нашел.
  • отредактировано 01:28
    Спасибо за ссылки!

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

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