![]() |
AW: SEPA Komponente gesucht
@arnof, @vagtler: merci für die Anregung, hab jetzt auch den anderen thread gefunden:
![]() |
AW: SEPA Komponente gesucht
Es klappt leider nicht, ich stell mich scheint's zu doof mit den Stringtypen an.
ich will erstmal nur die IBAN berechnen, der folgende Code endet immer mit Laufzeitfehler ("Access violation"):
Delphi-Quellcode:
Ich hab's auch am Ende mit ein paar Blanks mehr hie und da versucht, klappt alles nicht.
type TWasBinIchWohl = AnsiString; // klappt nicht
//type TWasBinIchWohl = PAnsiChar; // klappt auch nicht type TSevDTA_Init = function(sInit : TWasBinIchWohl) : longint; stdcall; type TSevDTA_BLZSetPath = function(sPath : TWasBinIchWohl) : longint; stdcall; type TSevSEPA_CalcIBAN = function(blz, kto, bic, iban : TWasBinIchWohl) : longint; stdcall; hSevDTALib : THandle; sevDTA_Init : TSevDTA_Init; sevDTA_BLZSetPath : TSevDTA_BLZSetPath; sevSEPA_CalcIBAN : TSevSEPA_CalcIBAN; ... // versuche, DLL zu laden cmd := '.\sepa\sevdta20.dll'; self.hSevDTALib := LoadLibrary(PChar(cmd)); // lade Funktionspointer @self.sevDTA_Init := GetProcAddress(self.hSevDTALib, 'sevDTA_Init'); @self.sevDTA_BLZSetPath := GetProcAddress(self.hSevDTALib, 'sevDTA_BLZSetPath'); @self.sevSEPA_CalcIBAN := GetProcAddress(self.hSevDTALib, 'sevSEPA_CalcIBAN'); // Initialisierung Handle := self.sevDTA_Init(''); self.sevDTA_BLZSetPath('.\sepa'); ... // bis hierher alles gut, jetzt der CB vom "IBAN_Rechner": sKto, sBlz, sBic, sIban : TWasBinIchWohl; lResult : longint; // IBAN-Kontonummer berechnen sKto := TWasBinIchWohl(self.EditKto.Text); sBlz := TWasBinIchWohl(self.EditBlz.Text); sBic := TWasBinIchWohl(strutils.dupestring(' ', 12)); sIban := TWasBinIchWohl(strutils.dupestring(' ', 23)); lResult := self.sevSEPA_CalcIBAN(skto, sBlz, sBIC, sIBAN); // und tschuess... Jemand eine Idee? Hab ich da was grundsätzliches vergessen bzgl. DLL einbinden mit Funktionen mit >1 Parametern (sevDTA_BLZSetPath klappt ja)? Bei diesem Projekt benutze ich Delphi 2007. |
AW: SEPA Komponente gesucht
Nehm meine Komponente dann geht alles sofort:thumb:
Die kostet nur 1 Entwicklerstunde, bis du die Dll's zum laufen bringst und bis da eine Sepadatei rausfällt dauert sicher noch mind. einen Manntag 5 Zeilen machen aus einem Dataset eine SEPA Datei:cyclops: |
AW: SEPA Komponente gesucht
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
Mach mal so:
type TWasBinIchWohl = AnsiString; // klappt nicht
//type TWasBinIchWohl = PAnsiChar; // klappt auch nicht type TSevDTA_Init = function(sInit : TWasBinIchWohl) : longint; stdcall;
Delphi-Quellcode:
Ich hab mal meinen Wrapper für sevkto angehängt. Das Prinzip hat sich zu sevdta nicht geändert. Ich bin blos noch nicht dazu gekommen sevdta umzusetzen.
TSevDTA_Init = function(sInit: PChar): LongInt; stdcall;
|
AW: SEPA Komponente gesucht
Was bedeutet denn 'Dein-Lizens-Code' ;-)?
Klappt leider auch nicht. Ich versuch's jetzt "nur noch" mit BLZ_FileDate(), die hat nur noch 1 Übergabeparameter (der beschrieben wird):
Delphi-Quellcode:
Vielleicht liegt der Fehler ja ganz woanders, braucht man sowas wie "uses ShareMem..." (_das_ speziell hab ich auch versucht)?
type TWasBinIchWohl = PChar; // klappt auch nicht
//type TWasBinIchWohl = PAnsiChar; // klappt auch nicht ... type TSevDTA_BLZFileDate = function(sDatum : TWasBinIchWohl) : longint; stdcall; ... (diverse inits klappen) s : String; // AnsiString klappt auch nicht setLength(s, 21); // explizites setzen zB s := '(genug blanks)' klappt auch nicht self.sevDTA_BLZFileDate(TWasBinIchWohl(s)); // und tschuess mit "access violation"... Bin stark versucht, die Lösung von @arnof zu nehmen, es ärgert mich nur, dass anscheinend einige die andere benutzen und ich zu doof bin, die zum Laufen zu bekommen. |
AW: SEPA Komponente gesucht
Mich irritiert das "self". Versuchst Du, die DLL-Funktionen an Methoden zu übergeben?
|
AW: SEPA Komponente gesucht
Ja, aber das sind ja nur Funktionspointer.
Die Aufrufe der Initialisierung funzen ja. Egal, ich geb auf und mach den nächsten Versuch mit der Komponente von @arnuf. |
AW: SEPA Komponente gesucht
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mal den Wrapper kurz umgestellt und TSevDTA_BLZFileDate reingeschmissen. Ergebnis wird mit einer Showmessage angezeigt.
Im Projektverzeichnis ist ein Unterverzeichnis "\BLZ", in das die Bankleitzahlendateien von sevdta32 reingehören. Die habe ich natürlich nicht angehängt. Die sevdta32.dll mus im Projekt-Ordner oder system32-Verzeichnis sein. Dann noch alle anderen neuen SEPA-Funktionen rein und fertig. Ich schätze mit Testen und allem drum und dran, werden das 2-3 Tage Arbeit. Zitat:
Solltest Du schon gekauft haben und jetzt auf arnofs Kompo umschwencken, kauf ich Dir sevdta für die Hälfte ab :lol: |
AW: SEPA Komponente gesucht
Ja, das mit dem Lizenzschlüssel hatte ich schon verstanden. Deshalb der Smiley.
Aber "sevdta32.dll"? Ich arbeite mit der Testversion (so wird's auch nix mit dem halben Preis), und zwar "sevdta20.dll 56.320 19.09.2013". Liegts daran? |
AW: SEPA Komponente gesucht
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 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