AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TLB Datei importieren Delphi 7

Ein Thema von KlausV · begonnen am 18. Jul 2024 · letzter Beitrag vom 28. Nov 2024
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.652 Beiträge
 
Delphi 12 Athens
 
#1

AW: TLB Datei importieren Delphi 7

  Alt 24. Jul 2024, 16:42
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.

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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
KlausV

Registriert seit: 29. Aug 2017
Ort: 68809 Neulußheim
88 Beiträge
 
Delphi 7 Professional
 
#2

AW: TLB Datei importieren Delphi 7

  Alt 24. Jul 2024, 16:54
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.
----------------------------------------------
Klaus
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#3

AW: TLB Datei importieren Delphi 7

  Alt 24. Jul 2024, 17:39
Du musst in D7 alle Parameter angeben. Const heißt, dass Du bei 'nem String einfach '' an der Stelle angeben kannst.

Sinngemäß sowas:
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:

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.
  Mit Zitat antworten Zitat
KlausV

Registriert seit: 29. Aug 2017
Ort: 68809 Neulußheim
88 Beiträge
 
Delphi 7 Professional
 
#4

AW: TLB Datei importieren Delphi 7

  Alt 24. Jul 2024, 18:05
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.
----------------------------------------------
Klaus
  Mit Zitat antworten Zitat
Kas Ob.

Registriert seit: 3. Sep 2023
412 Beiträge
 
#5

AW: TLB Datei importieren Delphi 7

  Alt 24. Jul 2024, 18:09
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 ?
Kas
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.962 Beiträge
 
Delphi 12 Athens
 
#6

AW: TLB Datei importieren Delphi 7

  Alt 24. Jul 2024, 20:11
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
KlausV

Registriert seit: 29. Aug 2017
Ort: 68809 Neulußheim
88 Beiträge
 
Delphi 7 Professional
 
#7

AW: TLB Datei importieren Delphi 7

  Alt 25. Jul 2024, 07:35
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.
----------------------------------------------
Klaus
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#8

AW: TLB Datei importieren Delphi 7

  Alt 25. Jul 2024, 10:48
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.
Delphi-Quellcode:
var
  ZUGFeRDInvoiceStandard : TOleEnum;
begin
  if SaveXML(XMLPath, LicenseKey, ZUGFeRDInvoiceStandard) then begin
    // Hier mit dem weitermachen, was nach dem Speichern der XML geschehen soll.
    // Muss mit ZUGFeRDInvoiceStandard irgendwas passieren oder kann der Rückgabewert
    // in ZUGFeRDInvoiceStandard ignoriert werden ...?
    ShowMessage('SaveXML erfolgreich ausgeführt.');
  end else begin
    // Hier näturlich eine sinnvolle Fehlerbehandlung einbauen.
    ShowMessage('SaveXML war nicht erfolgreich.');
  end;
end;
  Mit Zitat antworten Zitat
KlausV

Registriert seit: 29. Aug 2017
Ort: 68809 Neulußheim
88 Beiträge
 
Delphi 7 Professional
 
#9

AW: TLB Datei importieren Delphi 7

  Alt 25. Jul 2024, 11:18
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.
Delphi-Quellcode:
var
  ZUGFeRDInvoiceStandard : TOleEnum;
begin
  if SaveXML(XMLPath, LicenseKey, ZUGFeRDInvoiceStandard) then begin
    // Hier mit dem weitermachen, was nach dem Speichern der XML geschehen soll.
    // Muss mit ZUGFeRDInvoiceStandard irgendwas passieren oder kann der Rückgabewert
    // in ZUGFeRDInvoiceStandard ignoriert werden ...?
    ShowMessage('SaveXML erfolgreich ausgeführt.');
  end else begin
    // Hier näturlich eine sinnvolle Fehlerbehandlung einbauen.
    ShowMessage('SaveXML war nicht erfolgreich.');
  end;
end;
so hatte ich es auch schon versucht, aber es kommt [Fehler] Form1_.pas(53): Undefinierter Bezeichner: 'TOleEnum'.

In der aloaha pas Datei ist das so definiert:

// Konstanten für enum ZUGFeRDVersion
type
ZUGFeRDVersion = TOleEnum;
const
ZUGFeRDVersion_auto = $00000000;
ZUGFeRDVersion_ZUGFeRD = $00000001;
ZUGFeRDVersion_xInvoice = $00000002;

function SaveXML(const XMLPath: WideString; const LicenseKey: WideString;
var ZUGFeRDInvoiceStandard: ZUGFeRDVersion): WordBool; safecall;

Zusätzlich habe ich noch das problem, dass die ZUGFeRD Version ein optionaler Parm ist, d.h. wenn ich jetzt hier etwas mitgebe, dann wird das ja entsprechend umgesetzt. Bei den anderen optionalen Params war es ja einfach mit '', aber hier, was macht wohl die Funktion dann daraus? Normalerweise müsste hier auch etwas wie '' mitgegeben werden.
----------------------------------------------
Klaus

Geändert von KlausV (25. Jul 2024 um 11:34 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#10

AW: TLB Datei importieren Delphi 7

  Alt 25. Jul 2024, 11:34
Naja: Cursor auf TOleEnum setzen, F1 drücken und in der Hilfe nachschauen, in welcher Unit TOleEnum definiert ist. Diese Unit in der Uses-Klausel hinzufügen.
Delphi-Quellcode:
uses
  ..., Activex;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:11 Uhr.
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