在Delphi的DLL中使用FastReport要处理的几个问题

原创 2007年09月29日 17:23:00
在dll中使用FastReport会遇到以下内个问题:
1.调用时变量出错,最普通的一个变量注入也是一样
2.出现Cannot assign a TFieldList to a TStringList的错误
3.Invalid pointer operation的错误,在函数中返回WideString引起的

以下是解决办法:

1.不要在DLL中直接引用FastReport的单元文件,最好用一个接口类来实现 ,做法如下:
   a.定义公共类接口
   b.在主程序中实现该接口类
   c.把接口类的实例指针传给DLL
   d.在dll中调用公共类的方法,以实现注入变量与数据集的功能
2.修改frxDBSet.pas中的procedure TfrxDBDataset.GetFieldList(List: TStrings);
var
  i: Integer;
begin
  List.Clear;
  if FieldAliases.Count = 0 then
  begin
    try
      if FDS <> nil then
        for i := 0 to FDS.FieldCount - 1 do     //<--新加的
          List.Add(FDS.Fields[i].FullName);     //<--新加的
        //FDS.GetFieldNames(List);            //<--旧的函数
    except
    end;
  end
  else
  begin
    for i := 0 to FieldAliases.Count - 1 do
      if Pos('-', FieldAliases.Names[i]) <> 1 then
        List.Add(FieldAliases.Values[FieldAliases.Names[i]]);
  end;
end;

3.非常重要的一点,要在主程序和DLL中都引用ShareMem单元文件,否则在获取数据集显示的字符串时将出现错误!高手跟踪一下就知道了

FastReport studio 动态加载数据集 (zhuan)

测试使用的FastReport Studio 版本为4.6.80 先引用FastReport.dll 然后把C:/Program Files/FastReports/FastReport ...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

FastReport几个问题

1.FastReport中如何共用TFrxreport及TfrxDBDataSet一个程序中,不管多么大的程序,只要打印或预览时是模式的,则完全可以共用一个TFrxreport变量及几个TfrxDBD...

Delphi MDI多文档架构几个问题解决

1.关于登录窗口(Login)的嵌入: 很多

LM311在使用中应注意的几个问题

  • 2011年02月24日 14:29
  • 178KB
  • 下载

VB使用常见的几个问题

  • 2010年11月29日 12:32
  • 915B
  • 下载

QT学习——QT命令行开发环境搭建的几个问题以及处理

QT命令行开发环境搭建的几个问题以及处理 刚学QT,看了丁林松老师的视频《丁林松QT系列教程:1.手工布局》,自己动手写了代码,在命令行编译和运行程序中发现有几个问题,这边把处理方法记录下来。 这...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在Delphi的DLL中使用FastReport要处理的几个问题
举报原因:
原因补充:

(最多只允许输入30个字)