![]() |
AW: TLB Datei importieren Delphi 7
Zitat:
|
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.
|
AW: TLB Datei importieren Delphi 7
Zitat:
|
AW: TLB Datei importieren Delphi 7
Zitat:
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; |
AW: TLB Datei importieren Delphi 7
Zitat:
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. |
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; |
AW: TLB Datei importieren Delphi 7
Zitat:
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. |
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 ... |
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. |
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. |
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