AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SEPA Komponente gesucht

Ein Thema von Kostas · begonnen am 11. Mär 2013 · letzter Beitrag vom 21. Mär 2016
Antwort Antwort
Seite 12 von 23   « Erste     2101112 131422     Letzte »    
schotti65

Registriert seit: 4. Sep 2010
Ort: Berlin
53 Beiträge
 
Delphi XE5 Enterprise
 
#111

AW: SEPA Komponente gesucht

  Alt 29. Okt 2013, 16:22
@arnof, @vagtler: merci für die Anregung, hab jetzt auch den anderen thread gefunden: http://www.delphipraxis.net/1228335-post10.html

Geändert von schotti65 (29. Okt 2013 um 16:25 Uhr)
  Mit Zitat antworten Zitat
schotti65

Registriert seit: 4. Sep 2010
Ort: Berlin
53 Beiträge
 
Delphi XE5 Enterprise
 
#112

AW: SEPA Komponente gesucht

  Alt 29. Okt 2013, 18:17
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.
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.254 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#113

AW: SEPA Komponente gesucht

  Alt 29. Okt 2013, 19:50
Nehm meine Komponente dann geht alles sofort

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
  Mit Zitat antworten Zitat
VCLControls

Registriert seit: 14. Aug 2013
31 Beiträge
 
Delphi 7 Professional
 
#114

AW: SEPA Komponente gesucht

  Alt 30. Okt 2013, 08:30
Delphi-Quellcode:
type TWasBinIchWohl = AnsiString; // klappt nicht
//type TWasBinIchWohl = PAnsiChar; // klappt auch nicht

type TSevDTA_Init = function(sInit : TWasBinIchWohl) : longint; stdcall;
Mach mal so:
 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.
Angehängte Dateien
Dateityp: pas checkkto.pas (8,0 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
schotti65

Registriert seit: 4. Sep 2010
Ort: Berlin
53 Beiträge
 
Delphi XE5 Enterprise
 
#115

AW: SEPA Komponente gesucht

  Alt 30. Okt 2013, 09:13
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#116

AW: SEPA Komponente gesucht

  Alt 30. Okt 2013, 10:28
Mich irritiert das "self". Versuchst Du, die DLL-Funktionen an Methoden zu übergeben?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
schotti65

Registriert seit: 4. Sep 2010
Ort: Berlin
53 Beiträge
 
Delphi XE5 Enterprise
 
#117

AW: SEPA Komponente gesucht

  Alt 30. Okt 2013, 12:13
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.
  Mit Zitat antworten Zitat
VCLControls

Registriert seit: 14. Aug 2013
31 Beiträge
 
Delphi 7 Professional
 
#118

AW: SEPA Komponente gesucht

  Alt 30. Okt 2013, 12:32
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
Angehängte Dateien
Dateityp: zip sevdta.zip (4,5 KB, 11x aufgerufen)
  Mit Zitat antworten Zitat
schotti65

Registriert seit: 4. Sep 2010
Ort: Berlin
53 Beiträge
 
Delphi XE5 Enterprise
 
#119

AW: SEPA Komponente gesucht

  Alt 30. Okt 2013, 12:49
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?
  Mit Zitat antworten Zitat
VCLControls

Registriert seit: 14. Aug 2013
31 Beiträge
 
Delphi 7 Professional
 
#120

AW: SEPA Komponente gesucht

  Alt 30. Okt 2013, 12:57
"sevdta20.dll 56.320 19.09.2013". Liegts daran?
Nein. War mein Fehler, hab mich verschrieben.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 12 von 23   « Erste     2101112 131422     Letzte »    


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 11:05 Uhr.
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