![]() |
IBANKernel.dll Unicode PChar Umwandlung
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; {------------------------------------------------------------------------------------------} |
AW: IBANKernel.dll Unicode PChar Umwandlung
Wenn die Routine so unter Delphi 2007 funktioniert hat, solltest Du mal testhalber alle PChar als PAnsiChar deklarieren.
|
AW: IBANKernel.dll Unicode PChar Umwandlung
PChar ist ab D2009 ein PWideChar.
Was erwartet die Dll? Wenn Ansi, dann musst du statt PChar PAnsiChar verwenden. |
AW: IBANKernel.dll Unicode PChar Umwandlung
[OT] Anis? Netter Typo :) [/OT]
Die Parameter sollten übrigens dann auch AnsiStrings sein. |
AW: IBANKernel.dll Unicode PChar Umwandlung
Nein, nur nach Genuss eines Ousos oder Rakis :lol:
|
AW: IBANKernel.dll Unicode PChar Umwandlung
Hi Delphi-Folks
PChar --> PAnsiChar brachte keine Besserung... Funktion IT_IBANConvert laut Handbuch Hersteller... int IT_IBANConvert(char *pszKonto,// [in] mandatory char *pszBCPC, // [in] mandatory char *pszIBAN, // [in/out] mandatory int nIBANLen, // [in] mandatory char *pszBC, // [in/out] optional int nBCLen, // [in] optional char *pszPC, // [in/out] optional int nPCLen, // [in] optional char *pszRESERVED, // [in/out] optional int nRESERVEDLen); // [in] optional Doch auch hier werde ich nicht schlauer Gruss Roland |
AW: IBANKernel.dll Unicode PChar Umwandlung
Du musst auch bei den casts PAnsiChar verwenden, hast du das gemacht?. z.B.
Delphi-Quellcode:
pszKonto := pAnsiChar(KKonto);
|
AW: IBANKernel.dll Unicode PChar Umwandlung
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Delphi-Folks
Ja, gemacht... pszBCPC := PAnsiChar (CClear); pszKonto := PAnsiChar (KKonto); Funktioniert immer noch nicht. Ich denke, dass es (wie immer) nur an einer Kleinigkeit hängt. Ich erlaube mir einmal das Program als Zip-Datei anzuhängen. Herzliche Grüsse Roland |
AW: IBANKernel.dll Unicode PChar Umwandlung
Und bei
Delphi-Quellcode:
?
function CreateIBAN(CClear,KKonto: AnsiString): String;
|
AW: IBANKernel.dll Unicode PChar Umwandlung
Hi Delphi-Folks
Na hallo... da habe ich wohl wirklich geträumt. (oder eben im Wald verlaufen) Ja, so funktioniert es natürlich. Dank an alle... Herzliche Grüsse Roland |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:48 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