Hi, I’ve always written Delphi code with PDFCreator versions <= 1.73 and now I’m discovering the new features of 2.X
To make the most of methods and properties exposed from COM object I decided to import as type library “PDFCreator_COM” ( I’m using PDFCreator v. 2.4 ).
This made a perfect PDFCreator_COM_TLB.pas with all types, objects and interfaces.
Now, for example, when I declare a var as IPrinters, I can see Delphi code completion that shows me all properties ( for example “Count” ) and methods ( for example “GetPrinterByIndex” ).
Project compiles without any problems but in runtime when I start using this I got the OleSysError with message “interface not registered”, followed by ClassID ( which is, for IPrinters, {267F0F22-4C1B-4B36-AA67-D6F2EB9C2423} )
I tried registering “PDFCreator.COM.dll” with regsvr32, but it doesn’t seem to be possibile.
Why interface doesn’t seem to be registered? Should I register it? ( How? )
I see that if I use code without referencing to the type library and I declare simple Variants types then methods like CreateOLEObject(‘PDFCreator.PDFCreatorObj’) or CreateOLEObject(‘PDFCreator.JobQueue’) work without any problem ( but in this way I of course Delphi doesn’t know anything about properties and methods of the var ), so I suppose that COM object is correctly installed.
My environment info: Windows 7 x64 \ Delphi XE4 \ PDFCreator 2.4
Thanks a lot.
I am afraid I am not familiar with Delphi anymore,
but have you tried adding a reference to PDFCreator.COM.tlb ?
Not sure if this is the missing link but worth a try, if it doesn’t help I will ask our dev team.
Best regards,
Robin
Hi, thanks for answering.
I checked\tried all this without succeding :
- Unit PDFCreator_COM_TLB is in the “uses” clause.
- PDF_Creator_V2.tlb is in the application execution folder, also renamed as “project_name.tlb” as I found it should be named to be seen.
- I (successfully) registered “PDF_Creator_V2.tlb” in the system using"regtlib.exe" and\or “regtlibv12.exe” as I found in several forums to make it known
- I registered “PDF_Creator_V2.tlb” also as “project_name.tlb” with the Delphi utility called “TRegSvr.exe”
( see http://docwiki.embarcadero.com/RADStudio/Seattle/en/TRegSvr.exe,the_Type_Library_Registration_Tool )
Also in this case registration has been reported as successfully, showing ( with the correct GUID ) the following message:
Embarcadero Turbo Register Server – COM Server Registration utility.
Version 1.2 Copyright © 1997-2010 Embarcadero Technologies, Inc.
Type library name: c:\Progetti_Vari\Pdf\PDF_Creator_V2\PDFCreator.COM.tlb
Type library GUID: {8B8D2928-EAAF-492D-8DA5-E06B358D8826}
Type library successfully registered!
But nothing to do… trying to create a IPrinters object I still got “interface not registered”, and trying to create a IPdfCreator object i got “can’t found specified file” ( translated from italian ).
So, if you could ask to your dev team… thanks a lot !!
Enrico