Проблемы в CodeGear RAD Studio 2009

отредактировано 18:11 Раздел: FastReport 4.0
Garrett написал: »
3. не для этого топика конечно, но я переправил свою программу с ФР4 собранную на RS2007 на RS2009 + демо ФР4.7.2, так вот она компилируется и работает нормально, хотя потерялась юникодность текстовых констант в отчете. Но в отчет я зайти не могу. Даёт подряд несколько AV, в rtl120, frx12, rtl120, и.т.д.
Прислать код? (работает с той же базой, что я вам присылал для отладки ФР.НЕТ)
Или же между версией 4.7 и предыдущей нет совместимости и надо отчет рисовать заново?

Отчет я так понимаю хранится в dfm формы ?
Были некоторые проблемы с чтением рича из dfm, но вроде бы исправлял.
Попробуйте открыть проект в предыдущей версии IDE и сохранить его в XML(сам отчет отчистить), а потом загрузить его обратно в RS2009.
«1

Комментарии

  • отредактировано October 2008
    Не работает редактирование отчета совсем.
    Делаю новое приложение, на чистую форму кидаю рипорт, делаю на нем двойной клик - появляются АV.
    Да, я работаю с C++Builder2009. Может здесь не проверяли 4.7?
  • отредактировано 18:11
    Garrett написал: »
    Не работает редактирование отчета совсем.
    Делаю новое приложение, на чистую форму кидаю рипорт, делаю на нем двойной клик - появляются АV.
    Да, я работаю с C++Builder2009. Может здесь не проверяли 4.7?
    Проверяли, причем на разных машинах.
    Лог показать можете ?
    Падает случайно не в FillPrinters ?
  • отредактировано 18:11
    [50009F03]{rtl120.bpl } System.@UStrFromPWChar (Line 17140, "System.pas" + 4) + $0
    [0C83602B]{frx12.bpl } Frxprinter.TfrxPrinters.FillPrinters + $DB
    [0C835B6C]{frx12.bpl } Frxprinter.TfrxPrinters + $48
    [0C836120]{frx12.bpl } Frxprinter.frxPrinters + $10
    [0C838A33]{frx12.bpl } Frxctrls.TfrxFontComboBox.PopulateList + $F3
    [0C83881A]{frx12.bpl } Frxctrls.TfrxFontComboBox.Loaded + $4A
    [5004594C]{rtl120.bpl } Classes.NotifyGlobalLoading (Line 3055, "Classes.pas" + 3) + $B
    [50045AB0]{rtl120.bpl } Classes.InitInheritedComponent (Line 3093, "Classes.pas" + 7) + $6
    [501EF8DA]{vcl120.bpl } Forms.TCustomForm.Create (Line 3121, "Forms.pas" + 17) + $9
    [5000D52F]{rtl120.bpl } System.UTF8ToUnicodeString (Line 21899, "System.pas" + 11) + $5
    [0C878681]{frx12.bpl } Frxclass.TfrxCustomDesigner + $19
    [0C877F83]{frx12.bpl } Frxclass.TfrxReport.DesignReport + $CB
    (000007B6){dclfrx12.bpl} [0C8017B6]
    [20B9E638]{designide120.bpl} DesignEditors.TComponentEditor.Edit (Line 2638, "DesignEditors.pas" + 1) + $11
    [20BC3229]{designide120.bpl} ComponentDesigner.TInternalItem.Edit (Line 7043, "ComponentDesigner.pas" + 1) + $F
    [20BA25E0]{designide120.bpl} Designer.TDesigner.Edit (Line 965, "Designer.pas" + 0) + $4
    [20BA4720]{designide120.bpl} Designer.TDesigner.MouseDown (Line 1659, "Designer.pas" + 45) + $6
    [514A6941]{vcldesigner120.bpl} VCLSurface.TComponentToolWindow.WndProc (Line 1324, "VCLSurface.pas" + 16) + $32
    [514A72FE]{vcldesigner120.bpl} VCLSurface.TContainer.WndProc (Line 1624, "VCLSurface.pas" + 39) + $6
    [514A6763]{vcldesigner120.bpl} VCLSurface.TDesignerToolWindow.MainWndProc (Line 1259, "VCLSurface.pas" + 2) + $7
    [50057E04]{rtl120.bpl } Classes.StdWndProc (Line 12723, "Classes.pas" + 8) + $0
    [501CB982]{vcl120.bpl } Controls.FindControl (Line 2997, "Controls.pas" + 6) + $9
    [501F9EAB]{vcl120.bpl } Forms.TApplication.ProcessMessage (Line 9613, "Forms.pas" + 23) + $1
    [501F9EEE]{vcl120.bpl } Forms.TApplication.HandleMessage (Line 9643, "Forms.pas" + 1) + $4
    [501FA219]{vcl120.bpl } Forms.TApplication.Run (Line 9780, "Forms.pas" + 26) + $3
    [004259D2]{bds.exe } bds.bds (Line 196, "" + 7) + $7
  • отредактировано 18:11
    Garrett написал: »
    [50009F03]{rtl120.bpl } System.@UStrFromPWChar (Line 17140, "System.pas" + 4) + $0
    [0C83602B]{frx12.bpl } Frxprinter.TfrxPrinters.FillPrinters + $DB
    Вчера вечером исправлял не должно такого быть.
    А какой инсталлятор скачивали и когда ?
    Случайно из исходников предыдущее версии устанавливали под RS2009 (вручную) ?

  • отредактировано 18:11
    Сегодня получил письмо с вашей рассылкой, что вышел ФР с поддержкой RS2009. Ну и скачал демо fr4d12.exe.
    написал:
    Случайно из исходников предыдущее версии устанавливали под RS2009 (вручную) ?
    Нет.
  • отредактировано 18:11
    Сейчас проверил триалку на 3-х разных системах - работает.
    Версия IDE у меня 12.0.3170.16989 , система XP-sp3 и виста.
    Какие принтеры в системе, сетевые есть ?
  • отредактировано 18:11
    IDE - 12.0.3170.16989
    WinXP SP2 eng
    Принтеров 4, 2 сетевых(A3 и A4). FinePrint (default) и какой-то Microsoft XPS Document Writer
  • gpigpi
    отредактировано October 2008
    -=Den=-
    Ну, что проверил, какой версии мой frxPrinter.pas ?
    Сетевые принтеры у меня тоже есть
    Текст TfrxPrinters.FillPrinters одинаков и в fr4_7_srcent.exe и в fr4_7_d12e.exe
    procedure TfrxPrinters.FillPrinters;
    var
      i, j: Integer;
      Buf, prnInfo: PChar;
      Flags, bufSize, prnCount: DWORD;
      Level: Byte;
      sl: TStringList;
    
      procedure AddPrinter(ADevice, APort: String);
      begin
        FPrinterList.Add(TfrxPrinter.Create(ADevice, APort));
        FPrinters.Add(ADevice);
      end;
    
    begin
      Clear;
      if Win32Platform = VER_PLATFORM_WIN32_NT then
      begin
        Flags := PRINTER_ENUM_CONNECTIONS or PRINTER_ENUM_LOCAL;
        Level := 4;
      end
      else
      begin
        Flags := PRINTER_ENUM_LOCAL;
        Level := 5;
      end;
    
      bufSize := 0;
      EnumPrinters(Flags, nil, Level, nil, 0, bufSize, prnCount);
      if bufSize = 0 then Exit;
    
      GetMem(Buf, bufSize);
      try
        if not EnumPrinters(Flags, nil, Level, PByte(Buf), bufSize, bufSize, prnCount) then
          Exit;
        prnInfo := Buf;
    
        for i := 0 to prnCount - 1 do
          if Level = 4 then
            with PPrinterInfo4(prnInfo)^ do
            begin
              AddPrinter(pPrinterName, '');
              Inc(prnInfo, SizeOf(TPrinterInfo4));
            end
          else
            with PPrinterInfo5(prnInfo)^ do
            begin
              sl := TStringList.Create;
              frxSetCommaText(pPortName, sl, ',');
    
              for j := 0 to sl.Count - 1 do
                AddPrinter(pPrinterName, sl[j]);
    
              sl.Free;
              Inc(prnInfo, SizeOf(TPrinterInfo5));
            end;
    
      finally
        FreeMem(Buf, bufSize);
      end;
    end;
    
  • отредактировано 18:11
    Самое интересное, что если сделать новое приложение, кинуть рипорт и кнопку с обработчиком "frxReport1->ShowReport();" , то всё нормально компилируется, запускается и работает(при нажатии на кнопку выходит пустой отчет). Но вот дизайнер в среде не открывается и дает AV. Попробую вечером на домашнем компе, хотя там всё тоже самое стоит.
  • gpigpi
    отредактировано October 2008
    Хотя в рантайме дизайнер работает
    И если поменять TfrxPrinters.FillPrinters и перекомпилировать пакеты, то работает и в дизайнтайме
    procedure TfrxPrinters.FillPrinters;
    var
      i, j: Integer;
      Buf, prnInfo: PAnsiChar; // изменено
      Flags, bufSize, prnCount: DWORD;
      Level: Byte;
      sl: TStringList;
    
      procedure AddPrinter(ADevice, APort: String);
      begin
        FPrinterList.Add(TfrxPrinter.Create(ADevice, APort));
        FPrinters.Add(ADevice);
      end;
    
    begin
      Clear;
      if Win32Platform = VER_PLATFORM_WIN32_NT then
      begin
        Flags := PRINTER_ENUM_CONNECTIONS or PRINTER_ENUM_LOCAL;
        Level := 4;
      end
      else
      begin
        Flags := PRINTER_ENUM_LOCAL;
        Level := 5;
      end;
    
      bufSize := 0;
      EnumPrinters(Flags, nil, Level, nil, 0, bufSize, prnCount);
      if bufSize = 0 then Exit;
    
      GetMem(Buf, bufSize);
      try
        if not EnumPrinters(Flags, nil, Level, PByte(Buf), bufSize, bufSize, prnCount) then
          Exit;
        prnInfo := Buf;
    
        for i := 0 to prnCount - 1 do
          if Level = 4 then
            with PPrinterInfo4(prnInfo)^ do
            begin
              AddPrinter(pPrinterName, '');
              Inc(prnInfo, SizeOf(TPrinterInfo4));
            end
          else
            with PPrinterInfo5(prnInfo)^ do
            begin
              sl := TStringList.Create;
              frxSetCommaText(pPortName, sl, ',');
    
              for j := 0 to sl.Count - 1 do
                AddPrinter(pPrinterName, sl[j]);
    
              sl.Free;
              Inc(prnInfo, SizeOf(TPrinterInfo5));
            end;
    
      finally
        FreeMem(Buf, bufSize);
      end;
    end;
    
  • отредактировано 18:11
    2gpi
    У тебя старый frxPrinter.pas, это уже поправлено.
    Странно я вчера вроде инсталл перезаливал.
    Проверял на fr4_7_d12p.exe, вроде все нормально.

    Сейчас попробую еще раз сборку запустить.

    PS
    Что-то мы не в том топике обсуждаем VCL версию :)
  • gpigpi
    отредактировано 18:11
    -=Den=-
    Качал сегодня
  • отредактировано 18:11
    -=Den=-
    Скачал сейчас демку(она другая чем сегодня утром в 8.00 по Москве), теперь в новом проекте дизайнер открывается в старом - нет.
  • отредактировано October 2008
    Garrett написал: »
    -=Den=-
    Скачал сейчас демку(она другая чем сегодня утром в 8.00 по Москве), теперь в новом проекте дизайнер открывается в старом - нет.
    А на что теперь ругается ?
    Отчет в dfm ?
    Garrett написал: »
    -=Den=-
    Качал сегодня
    Скачай текущую.
  • gpigpi
    отредактировано 18:11
    -=Den=-
    Текущая 4.7.2 работает нормально
    Нужно сделать её стабильной :)
  • отредактировано 18:11
    gpi написал: »
    -=Den=-
    Текущая 4.7.2 работает нормально
    Нужно сделать её стабильной :)
    Так наверно и сделаем :)
  • отредактировано 18:11
    Стабильная версия обновлена до 4.7.3.
    Исправлены все ошибки с принтерами, устранены проблемы при открытии старых проектов, когда отчет хранится в dfm, и еще пару мелочей поправлено :)
  • отредактировано 18:11
    написал: »
    Стабильная версия обновлена до 4.7.3.
    Исправлены все ошибки с принтерами, устранены проблемы при открытии старых проектов, когда отчет хранится в dfm, и еще пару мелочей поправлено :)

    Ничего вы не исправили.

    1. вечерняя пятничная версия у вас по-крайней мере не открываласть в старых проектах и создавалась в новых, но после переоткрытия нового проекта опять не открывалась, т.к. считала н-е старым.
    Но я нашел метод работы с ней.
    Надо сначала попытаться открыть дизайнер чтоб вызвать AV(без хотя бы одного AV мой метод не работает),
    AV дома было(из принтеров один FinePrint) или Integer overflow либо
    написал: »
    [50009D44]{rtl120.bpl } System.@UStrAsg (Line 16873, "System.pas" + 3) + $0
    [501D0BFA]{vcl120.bpl } Controls.TControl.WndProc (Line 6640, "Controls.pas" + 91) + $6
    [5004A0A1]{rtl120.bpl } Classes.TStringList.Get (Line 5524, "Classes.pas" + 2) + $8
    [5004839C]{rtl120.bpl } Classes.TStrings.AddStrings (Line 4723, "Classes.pas" + 4) + $A
    [5004848A]{rtl120.bpl } Classes.TStrings.Assign (Line 4742, "Classes.pas" + 12) + $7
    [0D028AC3]{frx12.bpl } Frxctrls.TfrxFontComboBox.PopulateList + $183
    [0D02881A]{frx12.bpl } Frxctrls.TfrxFontComboBox.Loaded + $4A
    [5004594C]{rtl120.bpl } Classes.NotifyGlobalLoading (Line 3055, "Classes.pas" + 3) + $B
    [50045AB0]{rtl120.bpl } Classes.InitInheritedComponent (Line 3093, "Classes.pas" + 7) + $6
    [501EF8DA]{vcl120.bpl } Forms.TCustomForm.Create (Line 3121, "Forms.pas" + 17) + $9
    [0D068681]{frx12.bpl } Frxclass.TfrxCustomDesigner + $19
    [0D067F83]{frx12.bpl } Frxclass.TfrxReport.DesignReport + $CB
    (000007B6){dclfrx12.bpl} [0CFF17B6]
    [514A931E]{vcldesigner120.bpl} VCLSurface.TVclDesignSurface.ComponentVerb (Line 2477, "VCLSurface.pas" + 3) + $B
    [501C3CDB]{vcl120.bpl } Menus.TMenuItem.Click (Line 2515, "Menus.pas" + 19) + $8
    [501C532F]{vcl120.bpl } Menus.TMenu.DispatchCommand (Line 3378, "Menus.pas" + 5) + $2
    [501C6586]{vcl120.bpl } Menus.TPopupList.WndProc (Line 4484, "Menus.pas" + 4) + $E
    [501C64D5]{vcl120.bpl } Menus.TPopupList.MainWndProc (Line 4459, "Menus.pas" + 2) + $5
    [50057E04]{rtl120.bpl } Classes.StdWndProc (Line 12723, "Classes.pas" + 8) + $0
    [501F9EAB]{vcl120.bpl } Forms.TApplication.ProcessMessage (Line 9613, "Forms.pas" + 23) + $1
    [501F9EEE]{vcl120.bpl } Forms.TApplication.HandleMessage (Line 9643, "Forms.pas" + 1) + $4
    [501FA219]{vcl120.bpl } Forms.TApplication.Run (Line 9780, "Forms.pas" + 26) + $3
    [004259D2]{bds.exe } bds.bds (Line 196, "" + 7) + $7


    затем выделить иконку отчета на форме, нажать Ctrl+X, затем Ctrl-V и затем отчет начинал открываться в дизайнере, что новый, что старый. И работал самое главное.


    2. Новая версия открывает новый(!) отчет, но портит юникодные строки(в моем случае азерб.язык), при исправлении попорченных букв и выхода из дизайнера проект уже не компилируется, и не сохраняется, всё время дает такое окно - "Error reading Memo4.Memo.UTF8: 28"

    Единственный выход из Билдера - не сохранять изменения.

    Исправьте пожалуйста.
  • отредактировано 18:11
    Garrett написал: »
    Ничего вы не исправили.

    1. вечерняя пятничная версия у вас по-крайней мере не открываласть в старых проектах и создавалась в новых, но после переоткрытия нового проекта опять не открывалась, т.к. считала н-е старым.
    Пятница ?
    Сборка залилась только в субботу утром....
    В пятницу устанавливал себе FinePrinter и правил все появившиеся ошибки.
    С чтением мемо в dfm тоже правил и проверял на старых проектах их D7.

    Скачайте последнюю версию.

  • отредактировано 18:11
    Я скачал сегодня
    bd51e06d1da05a280e0688c781143d02 *fr4d12.exe
    В About'e - 4.7.3

    Делаю новое приложение, кидаю на форму кнопку с обработчиком Close() - всё работает.
    Кидаю рипорт - в обработчике вызываю превью - пока работает.
    В рипорте делаб новый отчет, на рипорттитле кидаю текстбокс с аз.текстом, закрываю дизайнер, и всё - уже не компилируется и не сохраняется.

    [MSBuild Error] The "ILINK32" task failed unexpectedly.
    System.Runtime.InteropServices.COMException (0x8000FFFF): Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
    at Borland.Build.Tasks.Cpp.IBCBuildHostObject.ILinkAliasVFSFile(String fileName, String& tempFilename)
    at Borland.Build.Tasks.Cpp.ILINK32.GetCommandLine()
    at Borland.Build.Tasks.Common.BaseTask.GenerateCommandLineCommands()
    at Microsoft.Build.Utilities.ToolTask.Execute()
    at Borland.Build.Tasks.Common.BaseTask.Execute()
    at Borland.Build.Tasks.Cpp.ILINK32.Execute()
    at Microsoft.Build.BuildEngine.TaskEngine.ExecuteTask(ExecutionMode howToExecuteTask, Hashtable projectItemsAvailableToTask, BuildPropertyGroup projectPropertiesAvailableToTask, Boolean& taskClassWasFound)
  • отредактировано 18:11
    Сейчас специально перепроверил: скачал триалку, установил, FinePrinter выбран принтером по-умолчанию, создал простой проект в BCB6 (компонент отчета, в нем рич и несколько мемок с русским текстом), открыл созданный проект в BCB2009.
    Дизайнер запустился без проблем и текст нормально отображается.
  • отредактировано 18:11
    А компиляция и сохранения этого проекта в bcb2009 у Вас работает?
  • отредактировано October 2008
    Удалил сегодняшний ФР, установил пятничный 4.7.2 - 1a781e75254384bc0360b7dd6241aaa0 *fr4d12__2008_10_10.exe
    Если не считать приколов с неоткрытием дизайнера по двойному клику(для которого я нашел решение), то всё компилируется, сохраняется и работает.
    Что-то Вы поломали в 4.7.3.
  • отредактировано 18:11
    Да, работает.
    Кое что поменял, но точно сказать, что поможет не могу, т.к. у меня и до этого работало.
    Новая сборка будет завтра утром.
  • отредактировано 18:11
    написал: »
    Сейчас специально перепроверил: скачал триалку, установил, FinePrinter выбран принтером по-умолчанию, создал простой проект в BCB6 (компонент отчета, в нем рич и несколько мемок с русским текстом), открыл созданный проект в BCB2009.
    Дизайнер запустился без проблем и текст нормально отображается.
    Сразу не заметил про Билдер6.
    А на сегодняшней триалке не пробовали создать новый проект с отчетом сразу в BCB2009? Всё сохраняетсяи компилируется?
  • отредактировано 18:11
    Ошибку уже нашел, в пятницу видимо залил не все изменения.
    Сегодня часов в 5 вечера будет новая сборка.
  • отредактировано 18:11
    Если FR4.6.UserManual-ru.chm переименовать как FRUser.chm и положить в каталог с билдером (c:\Program Files\RADStudio2009\bin), то справка в дизайнере всё равно не работает. Хотя дизайнер задумывается на секунду-другую...
  • отредактировано 18:11
    Поправил, только будет это не в вечернем билде, а в ночном.
    Т.е. завтра утром.
  • отредактировано 18:11
    -=Den=-
    Я завтра это проверю. А Вы может уже сейчас приступите к обработке длинных бендов. Я ведь всё равно буду приставать с этим вопросом :)
    Чтоб мне не повторяться, см. http://fast-report.com/ru/forum/index.php?...5632&st=105.
    AlexTZ поправил FR.NET по этому случаю, детали алгоритмов можно уточнить у него. Мои данные(база данных и исходники) у него тоже есть.
  • отредактировано 18:11
    Сделал, завтра сможете проверить.

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

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