Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TLB Datei importieren Delphi 7 (https://www.delphipraxis.net/215518-tlb-datei-importieren-delphi-7-a.html)

Delphi.Narium 24. Jul 2024 16:23

AW: TLB Datei importieren Delphi 7
 
Eigentlich kann D7 die Parameter für Funktionen und Prozeduren anzeigen, aber manchmal klappt das zum Verrecken nicht. Warum? Hab' ich in den 22 Jahren, die es D7 gibt, nicht herausfinden können :-(

Nimm bitte alle Dateien, zu denen Du die Quelltexte hast, in das Projekt auf. Im Menü "Projekt" und dann "Dem Projekt hinzufügen" (Umsch+F11). Danach dann Strg+F9. Mit etwas Glück wird es dann besser.

Im Editor den Komponentennamen schreiben, dann den Punkt und Strg+Leertaste. Dann sollte eine Liste der verfügbaren Eigenschaften, Funktionen und Prozeduren, in der Du auch die Parameter sehen kannst, erscheinen. Wenn Du irgendwo Komponentenname.Prozedurename geschrieben hast, auf dem Prozdurename die rechte Maustaste drücken. Im Menü ersten Eintrag ("Deklaration suchen") klicken. Dann sucht D7 Dir die entsprechende Definition im Quelltext. Dort kannst Du dann die erforderlichen Parameter (per Copy&Paste) entnehmen, im Quelltext einfügen und entsprechend den Quelltext anpassen / schreiben.

Uwe Raabe 24. Jul 2024 16:42

AW: TLB Datei importieren Delphi 7
 
Zitat:

Zitat von KlausV (Beitrag 1539169)
Evt. hängt das mit dem Inport der Type Library zusammen.

Mag sein. Eventuell ist das ja in einer neueren Version besser, aber das müsste ich erst ausprobieren.

Allerdings sind bei COM ja nicht zwingend nur die letzten Parameter optional, aber das ginge syntaktisch in Delphi gar nicht.

Zitat:

Zitat von KlausV (Beitrag 1539169)
Gibt es in D7 eine Art Object Viewer, wo man alle Parms der Prozeduren sehen kann. Wenn ich auf die Prozedure gehen, dann werden die Parms angezeigt. Bei manchen zeigt er nicht alle an.

Die Programmierhilfe ist meines Wissens die einzige Option. Wenn die nicht immer alle Parameter anzeigt, dann ist das eventuell eine interne Beschränkung bei der Anzeige.

KlausV 24. Jul 2024 16:54

AW: TLB Datei importieren Delphi 7
 
Sorry, habe mich falsch ausgedrückt.
Der Codevervollständiger funktioniert, d.h. mit Strg Leertaste sehe ich alles. In der pas Datei, die aus der TLB erzeugt wurde sind wohl alle Parms als mandatory definiert, obwohl viele davon optional sind.
Beispiel:
alo.Add_AdditionalReferencedDocument(IssuerAssigne dID, URIID, TypeCode, docdescription); --> 4 Parms im Delphi Programm

In der Aloaha_Zugferd_tlb.pas sind aber 10 definiert:
procedure Add_AdditionalReferencedDocument(const IssuerAssignedID: WideString;
const URIID: WideString; const TypeCode: WideString;
const Name: WideString; const MimeCode: WideString;
const FileName: WideString;
const IssueDateTime: WideString;
const Document_DateFormat: WideString;
const ReferenceTypeCode: WideString;
const MimeType: WideString); dispid 1610744029;

Wie muss ich einen Parm angeben, der als var in der Prozedur definiert ist?
alo.SaveXML('c:\temp\test1.xml', LicenseKey, 0);
in der pas Datei ist es so definiert:
function SaveXML(const XMLPath: WideString; const LicenseKey: WideString;
var ZUGFeRDInvoiceStandard: ZUGFeRDVersion): WordBool; safecall;
ZUGFeRDVersion ist als TOleEnum definiert, warum auch immer.

Dann habe ich noch einen Fehler, den ich auch nicht raus bekomme.
In VB6 definiert:
Dim bla As Object
bla = alo.ZUGFeRD_Structure

In Delphi habe ich es so definiert:
bla: TObject;
bla := alo.ZUGFeRD_Structure;

Fehler: inkompatible Typen TOBJECT und ZUGFeRD.
property ZUGFeRD_Structure: ZUGFeRD read Get_ZUGFeRD_Structure write Set_ZUGFeRD_Structure;

Langsam wird echt mühsam.

Delphi.Narium 24. Jul 2024 17:39

AW: TLB Datei importieren Delphi 7
 
Du musst in D7 alle Parameter angeben. Const heißt, dass Du bei 'nem String einfach '' an der Stelle angeben kannst.

Sinngemäß sowas:
Delphi-Quellcode:
alo.Add_AdditionalReferencedDocument(IssuerAssigne dID, URIID, TypeCode, docdescription, '', '', '', '', '', '');


Alles was Du benötigst übergibst Du entweder als Variabel oder Zeichenfolge in Hochkommata.
Alles was Du nicht benötigst als '' (Leerstring).

Zitat:

In Delphi habe ich es so definiert:
bla: TObject;
bla := alo.ZUGFeRD_Structure;

Fehler: inkompatible Typen TOBJECT und ZUGFeRD.
property ZUGFeRD_Structure: ZUGFeRD read Get_ZUGFeRD_Structure write Set_ZUGFeRD_Structure;
Da ZUGFeRD_Structure vom Typ ZUGFeRD ist:
Delphi-Quellcode:
var
  bla: ZUGFeRD;
begin
  bla := alo.ZUGFeRD_Structure;
  ...
Eigentlich sagt Dir der Kompiler doch schon, was Du ändern musst:

Delphi-Quellcode:
Fehler: inkompatible Typen TOBJECT und ZUGFeRD.


Ersetze in diesem Fall TOBJECT durch ZUGFeRD. Danach sollte der Kompiler zufrieden sein. Bei weiteren Fehlern gehst Du analog vor.

KlausV 24. Jul 2024 18:05

AW: TLB Datei importieren Delphi 7
 
Danke, ist gefühlt 100 Jahre her als ich Delphi noch programmiert hatte. Habe zwar immer Kleinigkeiten gemacht, aber wirklich nicht viel. Hauptsache die Anwendung läuft.

Vlt, eins noch dazu:
Wie muss ich einen Parm angeben, der als var in der Prozedur definiert ist?
alo.SaveXML('c:\temp\test1.xml', LicenseKey, 0);
in der pas Datei ist es so definiert:
function SaveXML(const XMLPath: WideString; const LicenseKey: WideString;
var ZUGFeRDInvoiceStandard: ZUGFeRDVersion): WordBool; safecall;
ZUGFeRDVersion ist als TOleEnum definiert, warum auch immer.

Kas Ob. 24. Jul 2024 18:07

AW: TLB Datei importieren Delphi 7
 
Few things here :
1) Well Delphi.Narium answered this part, Don't trust that every class/type in VB does have the same name in Delphi,
example : in VB an Object is not TObject in Delphi (not even close).

2) In earlier post you did the unthinkable, something you should never ever do with COM, commenting a line !, just for the sake of testing for if it does compile then it is OK, but never leave it commented, the reason for that is ... the methods will be shifted one down ,
example : in you case with commenting line 5840, if you use or access CertBA your code in reality will be calling/accessing CertObj.

3) Uwe answered how when and when in doubt to drop TXML on a form, though i prefer TDataModule to isolate it, but that is irrelevant and up to you, one thing though you still can call CreateOleObject and as per documentation, the parameter from https://docwiki.embarcadero.com/Libr...reateOleObject
Zitat:

ClassName specifies the string representation of the Class ID (CLSID).
So the ClassName (from you uploaded file to dropbox) is one of these
Code:
// *********************************************************************//
// In dieser Typbibliothek deklarierte GUIDS . Es werden folgende        
// Präfixe verwendet:                                                    
//   Typbibliotheken    : LIBID_xxxx                                    
//   CoClasses          : CLASS_xxxx                                    
//   DISPInterfaces     : DIID_xxxx                                    
//   Nicht-DISP-Schnittstellen: IID_xxxx                                      
// *********************************************************************//
const
  // Haupt- und Nebenversionen der Typbibliothek
...

  LIBID_Aloaha_ZUGFeRD: TGUID = '{AF1E54F4-DE27-417C-A34E-9F03B663A22C}';

  IID__INIDatei: TGUID = '{4ECB07A2-B915-3A9F-A543-E8120E8D2F12}';
  IID__EasyIniDatei: TGUID = '{3F574D79-3062-3FB7-87AC-7F494B81E926}';
  IID__IniFileCache: TGUID = '{AF3F5583-F74A-3459-919E-9DE6E93C5019}';
  IID__IniFile: TGUID = '{14629400-4F8C-3548-B141-65473195083D}';
  IID__Win32Cache: TGUID = '{D308DDF8-9038-3331-8C66-AF2163DC1D5F}';
  IID__FileSavedEventHandler: TGUID = '{7C5CAA74-5937-3BEC-9DA3-2820B38EA0CD}';
  IID__IniSection: TGUID = '{BB1EC858-CB3F-3B0D-BC88-2C28E05B70DB}';
  IID__IniKey: TGUID = '{AF7A9D07-1DC1-3477-A204-CEBA63FD55E1}';
  IID__Win32Functions: TGUID = '{BCFCEE28-FDB1-365D-8540-B986865BA477}';
  IID__ReguEx: TGUID = '{99D3C287-24D1-34E7-B77E-D41C718B572E}';
  IID__RegCOMServer: TGUID = '{BCE5A303-6F96-3EE9-8BFB-CE9D79FAB6E2}';
  IID__PlainHelperThreadSafe: TGUID = '{D63EF142-4AAA-3B02-B8A4-4D5824E49884}';
..
..
One you identified your control/class... you can use its declared constant with CreateOleObject

4) You might want to give CnWizard a test with Delphi 7, its autocomplete might works way better than the IDE included one.

Kas Ob. 24. Jul 2024 18:09

AW: TLB Datei importieren Delphi 7
 
Zitat:

Zitat von KlausV (Beitrag 1539185)
Danke, ist gefühlt 100 Jahre her als ich Delphi noch programmiert hatte. Habe zwar immer Kleinigkeiten gemacht, aber wirklich nicht viel. Hauptsache die Anwendung läuft.

Vlt, eins noch dazu:
Wie muss ich einen Parm angeben, der als var in der Prozedur definiert ist?
alo.SaveXML('c:\temp\test1.xml', LicenseKey, 0);
in der pas Datei ist es so definiert:
function SaveXML(const XMLPath: WideString; const LicenseKey: WideString;
var ZUGFeRDInvoiceStandard: ZUGFeRDVersion): WordBool; safecall;
ZUGFeRDVersion ist als TOleEnum definiert, warum auch immer.

What happen if you passed a var declared as TOleEnum ?

jaenicke 24. Jul 2024 20:11

AW: TLB Datei importieren Delphi 7
 
Rein interessehalber:
Kann die Lösung von Aloaha irgendetwas Spezielles? Denn die Lösung ist ja für Delphi technisch nicht sonderlich sinnvoll und macht auch insgesamt einen sehr veralteten Eindruck.

KlausV 25. Jul 2024 07:35

AW: TLB Datei importieren Delphi 7
 
Hallo Sebastian,
ich versuche es mal so zu erklären. Ich benötige ein Tool, welches mir die Arbeit für die XML Erzeugung von ZUGFeRD abnimmt. Es geht hier nicht nur darum, die XML zu erzeugen, sondern anhand von den eingestellten Werten auch die entsprechende ZUGFeRD Variante wie zum Beispiel Extended zu erzeugen. Zusätzlich erfolgt auch noch die Einbindung der XML in die PDF A3.
Ich wollte ursprünglich eine Delphi Komponente nutzen, die war aber leider nicht kompatibel zu Delphi 7.
Aloaha stellt TLB's zu Verfügung, die ich in Delphi dann importiert habe, somit habe ich die Hoffnung, dass ich weiterhin Delphi nutzen kann.
Sollte das nicht funktionieren, dann bleibt noch die Variante der Anbindung von REST API's, da gibt es auch einige tools oder ich gehe einen komplett anderen Weg.
Jetzt möchte ich erst mal versuchen, die demo Anwendung ans laufen zu bekommen, dann sehe ich weiter.

haentschman 25. Jul 2024 08:36

AW: TLB Datei importieren Delphi 7
 
Schau mal hier:
https://www.delphipraxis.net/204583-...xrechnung.html
und hier
https://github.com/LandrixSoftware/XRechnung-for-Delphi

:wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 Uhr.
Seite 2 von 4     12 34      

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