Delphi-PRAXiS
Seite 12 von 23   « Erste     2101112 131422     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   SEPA Komponente gesucht (https://www.delphipraxis.net/173688-sepa-komponente-gesucht.html)

schotti65 29. Okt 2013 15:22

AW: SEPA Komponente gesucht
 
@arnof, @vagtler: merci für die Anregung, hab jetzt auch den anderen thread gefunden: http://www.delphipraxis.net/1228335-post10.html

schotti65 29. Okt 2013 17:17

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:
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...
Ich hab's auch am Ende mit ein paar Blanks mehr hie und da versucht, klappt alles nicht.
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.

arnof 29. Okt 2013 18:50

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:

VCLControls 30. Okt 2013 07:30

AW: SEPA Komponente gesucht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
type TWasBinIchWohl = AnsiString; // klappt nicht
//type TWasBinIchWohl = PAnsiChar; // klappt auch nicht

type TSevDTA_Init = function(sInit : TWasBinIchWohl) : longint; stdcall;
Mach mal so:
Delphi-Quellcode:
 TSevDTA_Init = function(sInit: PChar): LongInt; stdcall;
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.

schotti65 30. Okt 2013 08:13

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:
  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"...
Vielleicht liegt der Fehler ja ganz woanders, braucht man sowas wie "uses ShareMem..." (_das_ speziell hab ich auch versucht)?
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.

DeddyH 30. Okt 2013 09:28

AW: SEPA Komponente gesucht
 
Mich irritiert das "self". Versuchst Du, die DLL-Funktionen an Methoden zu übergeben?

schotti65 30. Okt 2013 11:13

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.

VCLControls 30. Okt 2013 11:32

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:

Was bedeutet denn 'Dein-Lizens-Code' ?
Ich habe die Testversion von sevdta32 verwendet und bei der Initialisierung nur Nullen reingemacht. Wenn Du die die DLL gekauft hast, mach Deinen Lizenzschlüssel rein.

Solltest Du schon gekauft haben und jetzt auf arnofs Kompo umschwencken, kauf ich Dir sevdta für die Hälfte ab :lol:

schotti65 30. Okt 2013 11:49

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?

VCLControls 30. Okt 2013 11:57

AW: SEPA Komponente gesucht
 
Zitat:

Zitat von schotti65 (Beitrag 1233784)
"sevdta20.dll 56.320 19.09.2013". Liegts daran?

Nein. War mein Fehler, hab mich verschrieben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:37 Uhr.
Seite 12 von 23   « Erste     2101112 131422     Letzte »    

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