Home Datapipelines
New Blog Posts: Merging Reports - Part 1 and Part 2

Error with DLL

edited April 2007 in Datapipelines
Hello.

First of all, let me explain our structure. We have 8 DLL to print
reports, each one print a different report with different tables. When I
open a DLL and print the report, as goes well. But when I open a second
DLL after, I got this error:

Exception EFilerError in module rtl100.bpl at 0002F867.

A class named TppDBPipeline already exists.


I cannot just make one DLL for all my reports. Can you help me please ?

Thanks.

JFPicard

Comments

  • edited April 2007

    - Build each .dll with the 'build with run-time packages' option selected
    and include the RB packages in the list.
    - Build the .exe with the 'build with run-time packages' option selected and
    include the RB packages in the list.

    When the application runs, it should load the RB binaries only a single
    time, otherwise you will receive that type of error.

    Unless you need to call the DLL's from a non-Delphi app, I recommend putting
    your custom code in Delphi packages.


    --
    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com

    Best regards,

    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com
  • edited April 2007
    Hello Nard.

    Can you give the list of the packages that I can put in 'build with
    run-time packages'? I don't want to send packages that the license
    forbids to do so. All my DLL are called from Delphi applications.

    Thanks.

    JFPicard

  • edited April 2007
    Hi,

    From what I understand each dll try to register the ReportBuilder
    Components it needs to work properly. Try using getClass() to
    test if a dll has already register a class.

    Initialization
    If Not Assigned(GetClass(TppDBPipeLine)) Then Begin
    RegisterClass(TppDBPipeLine);
    End;//If

    ...

    PF



    --- posted by geoForum on http://delphi.newswhat.com
  • edited April 2007

    The ReportBuilder online help containts a list of RB run-time packages for
    each RB Edition and Delphi version. (You can re-distribute RB run-time
    packages. )

    Acess the help, select ReportBuilder Reference | Table Of Contents |
    Installation | Delphi X \ Y Edition, where X is the Delphi major version and
    Y is the RB Edition you are using.

    Rather than DLL's I recommend using Packages. It is much simpler, provides
    the same benefits. The Delphi package architecture was a huge break thru in
    technology. MS .NET copies that architecture - only they call it Assemblies.


    --
    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com

    Best regards,

    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com
This discussion has been closed.