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...