AV при вызове TfrxPictureView.LoadFromFile

отредактировано June 2005 Раздел: FastReport 3.0
FR 3.14

Возникает если передаваемый параметр пустой. Добавьте проверку если можно, в этот метод. Спасибо.

З.Ы. Не сильно удобно во всех отчетах писать скрипты для проверки пустое значение поля или нет.

Комментарии

  • отредактировано 01:53
    Происходит так как после LoadFromFile рисунок считается проинициализированным в то же время для рисунков с пустым расширением (в частности пустой строки) зарегистрирован тип TOleGraphic метод LoadFromFile которого содержит код begin // !!! end; не совсем понятно зачем перекрыт TGraphic.LoadFromfile который бы работал но факт в том что при етом создаётся экземпляр TOleGraphic свойство Picture которого равно nil.
    В
    function TfrxPictureView.Diff(AComponent: TfrxComponent): String;
    ...
    THackPersistent(Picture).DefineProperties(wr);
    ...
    TWriter.DefineBinaryProperties
    ...
    TPicture.WriteData
    ...
    TOleGraphic.SaveToStream
    - предполагается наличие проинициализированного рисунка способного быть сохраннённым в поток что приводит к AV.
    Собираюсь лечить в
    function TFunctions.CallMethod(Instance: TObject; ClassType: TClass;
    const MethodName: String; var Params: Variant): Variant;
    ...
    if MethodName = 'LOADFROMFILE' and (Params[0] <> '') then
    TfrxPictureView(Instance).Picture.LoadFromFile(Params[0])

  • отредактировано 01:53
    Спасибо ;)
  • отредактировано 01:53
    Сделал
    if (MethodName = 'LOADFROMFILE') and (Trim(VarToStr(Params[0])) <> '') then begin
    if ExtractFileExt(VarToStr(Params[0])) = '' then
    raise Exception.Create('Error ...')
    else
    TfrxPictureView(Instance).Picture.LoadFromFile(Params[0])
    end;

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

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