Einzelnen Beitrag anzeigen

gullatrulla

Registriert seit: 11. Mai 2004
Ort: Malans (Schweiz)
43 Beiträge
 
Delphi 11 Alexandria
 
#1

IBANKernel.dll Unicode PChar Umwandlung

  Alt 22. Jan 2015, 13:53
Hi Delphi Folks

Im Moment quäle ich mich mit einer "alten" Delphi 2007-Routine, welche in
Unicode übersetzt werden sollte. Es geht um die Umrechnung einer Konto-Nr in
ein Banken IBAN-Format.

Im Moment sehe ich vor lauter PChar, PAnsiChar, PWideChar den Wald vor lauter Bäumen
nicht mehr.

Ich habe schon versucht alle PChar in PWideChar zu übersetzen. Doch leider funktioniert
die Routine immer noch nicht.

Um einen Geistesblitz wäre ich Euch sehr dankbar.

Evtl. hat jemand diese Routine in Delphi 2009 oder grösser schon im Einsatz und
würde mich dankbarerweise erleuchten

Herzlichen Dank zum voraus
Roland



{------------------------------------------------------------------------------------------}
function CreateIBAN(CClear,KKonto: String): String;
type
TIBANProc = function(pszKonto: PChar;
pszBCPC: PChar;
pszIBAN: PChar;
nIBANLen: Integer;
pszBC: PChar;
nBCLen: Integer;
pszPC: PChar;
nPCLen: Integer;
pszBIC: PChar;
nBICLen: Integer): Integer; cdecl;

var
HandleDLL: Cardinal;
ErgebnisDll: integer;
FarProc: TIBANProc;
pszKonto,pszBCPC,pszIBAN,pszBC,pszPC,pszBIC: PChar;
nIBANLen,nBCLen,nPCLen,nBICLen: integer;
begin
Result := '';

HandleDLL := LoadLibrary('IBANKernel.dll');

try
nIBANLen := 21;
nBCLen := 10;
nPCLen := 10;
nBICLen := 10;
{-------------------------------------------}
pszIBAN := nil;
pszIBAN := StrAlloc(64);

pszBC := nil;
pszBC := StrAlloc(32);

pszPC := pChar('100');
pszPC := StrAlloc(32);

pszBIC := nil;
pszBIC := StrAlloc(32);
{-------------------------------------------}
pszBCPC := pChar(CClear);
pszKonto := pChar(KKonto);
{-------------------------------------------}
ErgebnisDll := 0;
@FarProc := GetProcAddress(HandleDLL, 'IT_IBANConvert');

if Assigned(@FarProc) then begin
ErgebnisDll := FarProc(pszKonto,pszBCPC,pszIBAN,nIBANLen,pszBC,nB CLen,pszPC,nPCLen,pszBIC,nBICLen);
Result := pszIBAN;
end;

Case ErgebnisDll of
10..31: Result := 'Fehler - [E]Code=' + IntToStr(ErgebnisDll);
end;

except
showmessage('Funktion der DLL konnte nicht ausgeführt werden.');
end;

FreeLibrary(HandleDLL);
end;
{------------------------------------------------------------------------------------------}
  Mit Zitat antworten Zitat