AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi IBANKernel.dll Unicode PChar Umwandlung

IBANKernel.dll Unicode PChar Umwandlung

Ein Thema von gullatrulla · begonnen am 22. Jan 2015 · letzter Beitrag vom 23. Jan 2015
Antwort Antwort
gullatrulla

Registriert seit: 11. Mai 2004
Ort: Malans (Schweiz)
41 Beiträge
 
Delphi 10.4 Sydney
 
#1

IBANKernel.dll Unicode PChar Umwandlung

  Alt 22. Jan 2015, 14: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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.286 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: IBANKernel.dll Unicode PChar Umwandlung

  Alt 22. Jan 2015, 15:06
Wenn die Routine so unter Delphi 2007 funktioniert hat, solltest Du mal testhalber alle PChar als PAnsiChar deklarieren.
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
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.802 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: IBANKernel.dll Unicode PChar Umwandlung

  Alt 22. Jan 2015, 15:08
PChar ist ab D2009 ein PWideChar.

Was erwartet die Dll? Wenn Ansi, dann musst du statt PChar PAnsiChar verwenden.
Markus Kinzler

Geändert von mkinzler (22. Jan 2015 um 15:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.286 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: IBANKernel.dll Unicode PChar Umwandlung

  Alt 22. Jan 2015, 15:16
[OT] Anis? Netter Typo [/OT]
Die Parameter sollten übrigens dann auch AnsiStrings sein.
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
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.802 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: IBANKernel.dll Unicode PChar Umwandlung

  Alt 22. Jan 2015, 15:26
Nein, nur nach Genuss eines Ousos oder Rakis
Markus Kinzler
  Mit Zitat antworten Zitat
gullatrulla

Registriert seit: 11. Mai 2004
Ort: Malans (Schweiz)
41 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: IBANKernel.dll Unicode PChar Umwandlung

  Alt 22. Jan 2015, 15:46
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
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: IBANKernel.dll Unicode PChar Umwandlung

  Alt 22. Jan 2015, 15:52
Du musst auch bei den casts PAnsiChar verwenden, hast du das gemacht?. z.B.

pszKonto := pAnsiChar(KKonto);
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
gullatrulla

Registriert seit: 11. Mai 2004
Ort: Malans (Schweiz)
41 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: IBANKernel.dll Unicode PChar Umwandlung

  Alt 22. Jan 2015, 16:13
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
Angehängte Dateien
Dateityp: zip IBAN.ZIP (1,75 MB, 10x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.286 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: IBANKernel.dll Unicode PChar Umwandlung

  Alt 22. Jan 2015, 16:44
Und bei
function CreateIBAN(CClear,KKonto: AnsiString): String; ?
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
gullatrulla

Registriert seit: 11. Mai 2004
Ort: Malans (Schweiz)
41 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: IBANKernel.dll Unicode PChar Umwandlung

  Alt 23. Jan 2015, 14:08
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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf