Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Verständnisfrage zu Com und Interface-Propertys (https://www.delphipraxis.net/197619-verstaendnisfrage-zu-com-und-interface-propertys.html)

Delbor 13. Sep 2018 10:45

AW: Verständnisfrage zu Com und Interface-Propertys
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi zusammen

Sorry, wenn es etwas gedauert hat. Da ist mir einiges dazwischengekommen - unter anderem habe ich nun auch so eine Minimalanwendung erstellt.
Die Anwendung entstand aus einer Vorlage, die ich mir mit Delphi Tokio 10.2.3 als Test für neue Komponenten erstellt hatte.
Im Wesentlichen enthalten sind ein ScanningFrame, mit dem eine Bitmap vom Scanner eingelesen werden kann, die PDFCreator_COM_TLB(..) sowie mein bisheriger Entwurf für eine Klasse, die sich mit vom PDFCreator eine durchsuchbare PDFerstellen lassen soll.

Diese ist bislang wie folgt deklariert:
Delphi-Quellcode:
  TCustomCreatePDFClass = class(TPersistent)

  private {private}
    FFilename: WideString;
    FPDFCreator: IPDFCreator;
    FPrinters : IPrinters;  //,
    FPrintJob : IPrintJob;
    FPrintJobInfo : IPrintJobInfo;
    FQueue : IQueue;
    FJobFinishedEvent : IJobFinishedEvent;

   public {public}
      procedure CreatePDFCreator;
      procedure InitializeQueue;
      procedure ConvertToPdf;
//      procedure GetPDFCreatorPrinters;
      property FileName: WideString read FFilename write FFilename;

  constructor Create(AOwner: TPersistent);
  destructor Destroy; override;

  end;
Der Constructor:
Delphi-Quellcode:
constructor TCustomCreatePDFClass.Create(AOwner: TPersistent);
begin
   inherited Create;
   FPDFCreator := CoPdfCreatorObj.Create;

   FPrintjob := CoPrintjob.Create ;
   FPrintJobInfo := CoPrintJobInfo.Create;
   FPrinters := CoPrinters.Create as IPrinters;
   FQueue := CoQueue.Create as IQueue;

   FPDFCreator.AddFileToQueue(FFileName);
//   FPDFCreator.PrintFile(FFileName);       CreateComObject ;       ('{9616B8B3-FE6E-4122-AC93-E46DBD571F87}'        IPrintjobInfo
   InitializeQueue;
end;
Diese Zeilen sollen die entsprechenden Klassenmethoden in der PDFCreator_COM_TLB aufrufen. im Falle der Zeile 2 funktioniert das auch problemlos, nicht aber bei Zeile 3. Die Methode wird zwar aufgerufen und abgearbeitet, dann aber wird ein Fehler erzeugt:

Zitat:

Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt PDFSynOfficer.exe ist eine Exception der Klasse EOleSysError mit der Meldung 'Klasse nicht registriert' aufgetreten.
Klicke ich hier auf 'Fortsetzen, erhalte ich die nächste Meldung:

Zitat:

Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt PDFSynOfficer.exe ist eine Exception der Klasse EOleSysError mit der Meldung 'Klasse nicht registriert, ClassID: {9616B8B3-FE6E-4122-AC93-E46DBD571F87}' aufgetreten.
Nach meinen Infos ist es der Server, der sich beim System registrieren muss, ich hab da also nichts ausgelassen. Ich denke aber, dass dieser die Registrierung sehr wohl vornimmt.
Nachprüfen kann ich das nicht - der PDFCreator soll zwar Opensource sein, ich habe aber nirgendwo entsprechende Sourcen gefunden.

Andrerseits hab ich noch etliche Beispiele in diversen Programmiersprachen gefunden. Die finden sich im Installationsordner des PDFCreators. Eines dieser Beispiele lege ich dem Anhang bei - es ist in C# geschrieben. Ein Delphi-Beispiel fehlt leider, doch denke ich, dass die Syntax am ähnlichsten ist.

Gruss
Delbor


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:13 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz