Delphi-PRAXiS
Seite 3 von 4     123 4      

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)

KlausV 25. Jul 2024 08:48

AW: TLB Datei importieren Delphi 7
 
Zitat:

Zitat von haentschman (Beitrag 1539192)

kenne ich und beides passt nicht, leider. Mit dem Entwickler von Landrix hatte ich schon mehrfach gesprochen, leider ist es nicht kompatibel mit D7 und kann seine Klassen/Komponenten nicht einbinden. Über die Funktionalität habe ich dann gar nicht weiter geschaut.

Uwe Raabe 25. Jul 2024 08:50

AW: TLB Datei importieren Delphi 7
 
Ich bin mir ziemlich sicher, dass die Units von Sven eben nicht unter Delphi 7 compilieren - zumindest nicht ohne größeren Änderungsaufwand.

KlausV 25. Jul 2024 09:08

AW: TLB Datei importieren Delphi 7
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1539194)
Ich bin mir ziemlich sicher, dass die Units von Sven eben nicht unter Delphi 7 compilieren - zumindest nicht ohne größeren Änderungsaufwand.

ja, das hat er auch so bestätigt.

Delphi.Narium 25. Jul 2024 10:48

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.

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;

KlausV 25. Jul 2024 11:18

AW: TLB Datei importieren Delphi 7
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1539202)
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.

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.

Delphi.Narium 25. Jul 2024 11:34

AW: TLB Datei importieren Delphi 7
 
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;

KlausV 25. Jul 2024 12:17

AW: TLB Datei importieren Delphi 7
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1539209)
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;

Danke, hat funktioniert. Programm lässt sich nun kompilieren:-D. Im ersten Schritt wurde eine XML erzeugt und auch mit einer bestehenden PDF Datei als PDF/A-3 erzeugt.
Bei einem anderen test bricht das Programm mit einem Speicherfehler ab. Auch das Beenden von Delphi und Start der EXE hat leider nichts gebracht. Jetzt geht es richtig ins eingemachte rein.

Delphi.Narium 25. Jul 2024 12:28

AW: TLB Datei importieren Delphi 7
 
Speicherfehler heißt was?

Fehlermeldung per Strg+C kopieren und hier einfügen, dann können wir (eventuell) sehen, was da schief geht.

Häufigste Ursache:

Es wurde auf eine Variabel zugegriffen, die nicht initialisiert wurde.

Die IDE kann nix dafür, das ist mit (sehr hoher) Wahrscheinlichkeit ein Fehler im Quelltext.

Programm im Debugger starten: im Menü "Tools" den Unterpunkt "Debugger-Optionen..." aufrufen und dort unten Links 'nen Haken bei "Integrierte Fehlersuche" setzen. Programm in der IDE starten und schauen ob bei dem Fehler der Debugger Dir die fehlerhafte Stelle anzeigt.

Wenn nicht: Bei Speicherfehlern / Zugriffsverletzungen steht in der Fehlermeldung immer die Adresse, an der der Fehler auftritt. Diese Adresse nehmen und dann im Menü "Suchen" den Unterpunkt "Laufzeitfehler suchen..." aufrufen und dort die Fehleradresse eingeben. Mit etwas Glück kommst Du dann an die Stelle, an der der Fehler auftritt. Von dort musst Du dann im Quelltext suchen, was da eventuell nicht initialisiert wurde ...

KlausV 26. Jul 2024 10:27

AW: TLB Datei importieren Delphi 7
 
Moin,
zur Fehlermeldung.
Im debug mode gehe ich mit F7 step by step durch.
1. function TXML.Get_ZUGFeRD_Structure: ZUGFeRD;
begin
Result := DefaultInterface.ZUGFeRD_Structure;
end;
Wenn ich mir den Inhalt von Structure anschaue, dann sieht das gut aus.
((0, 1, 'urn:fdc:peppol.eu:2017:poacc:billing:01:1.0'), ('47110815', '', 380, '20240531', '102', 0, ), ('N999-11111-22', 'KundenNummer', ('', ''), 'Muster GmbH', 'Karl Mustermann', 'Einkauf', '+490000', '', 'stefan@aloaha.com', '49479', 'Bahnhofstraße 1', 'Wohnung 2', ), ('4711', ('', ''), 'Aloaha Limited', 'John Doe', 'Sales Department', '+490000', '', 'stefan@aloaha.com', 'PBK1131', 'Helgoland', 'Triq Gio Felice Inglott', ), (('', '', ('', ''), '', '', '', '', '', '', '', '', '', '', '', '', '', nil, ('', '', '', '', '', '', '', ('', '', ''), ''), nil, nil, ('', '')), ('20120608', '102'), ('', '', '', '', '', '', '', ('', '', ''), ''), ('', '', '')), (('', '', ('', ''), '', '', '', '', '', '', '', '', '', '', '', '', '', nil, ('', '', '', '', '', '', '', ('', '', ''), ''), nil, nil, ('', '')), '47110815', '', 'EUR', nil, (('', ''), ('', '')), nil, nil, nil, nil, (('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', '')), ('', '', ''), ('', ''), nil, nil, nil), nil, (0, 0))

2. function TXML.GetDefaultInterface: _XML;
begin
if FIntf = nil then // Inhalt FIntf = Pointer($84D0030) as _XML
Connect;
Assert(FIntf <> nil, 'DefaultInterface ist NULL. Die Komponente ist nicht mit dem Server verbunden. Sie müssen vor dieser Operation ''Connect'' oder ''ConnectTo'' aufrufen');
Result := FIntf;
end;
Nach dem Verlassen der Funktion kommt dann die Fehlermeldung: Eine Exception ist in der Klasse EOlException aufgetreten. Nicht genügend Speicher verfügbar um das Programm weiterhin auszuführen.
Danke schon mal.

KlausV 31. Jul 2024 14:45

AW: TLB Datei importieren Delphi 7
 
Nun läuft das Beispiel Projekt mit allen Funktionen, selbst late oder early binding ist möglich.
Bei early binding habe ich das Problem, dass neue Versionen der DLL immer Probleme verursacht haben, d.h. TLB importieren und Projekt neu umwandeln. Leider gehen bei late binding alle Vorteiler vom Editor flöten, kein Hint, kein Syntax Check, etc.
Muss nun überlegen, was die bessere Wahl ist.
Evt. unter early binding entwickeln aber unter late binding ausliefern, mindestens mal so lange bis alle Kinderkrankheiten beseitigt sind.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:39 Uhr.
Seite 3 von 4     123 4      

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