Debug-Modus + Übergabe eines char*
-
Werte Forumsteilnehmer!
Problembeschreibung:
--------------------Deklariert und definiert wird ein char[], indem die werte als hexvalue direkt reingeschrieben werden. Dies ist der sog. APDU-Block der einem Kommando-header bei der Kommunikation mit einer Chipkarte entspricht. Die API die ich verwenden darf verlangt den header und datenblock als char*.
"Leider" entspricht 0x00 bei einem Char dem Terminierungszeichen aufgrund des ASCII-Codes - jedenfalls wird nach dem ersten Haltepunkt das array mf_select_header mit allen hex-werten angezeigt, sobald sich der debugger in der methode MergeHeaderAndData befindet wird der Übergabeparameter nurmehr mit 0x00 angezeigt, wie wenn er nach dem ersten 0x00 den rest kappen würde.Frage: interpretiert der debugger jedes übergebene char[] als String? (Der Unterschied zwischen char* und char[] ist mir nach durchlesen der faq von de.comp.lang.c halbwegs klar erschienen - aber offensichtlich der übergang von theorie auf praxis nicht). dann wäre das verhalten logisch, ansonsten dürfte es an einem denkfehler meinerseits liegen
// Select MF unsigned char mf_select_header[7] = {0x00, 0xA4,0x00,0x0C,0x02,0x3F,0x00}; unsigned char mf_fid[2] = {0x3F, 0x00}; pT->Select(rTComPeg, mf_select_header, mf_fid); ------------------ void CardComm::Select(TCommand_Pegoda *rTComPeg, unsigned char *header, unsigned char *data) { unsigned char* pucData = 0; HALTEPUNKT pucData = MergeHeaderAndData(header, data); unsigned int uiDataLen = 0; // see Commands for ACOS EMV: p2 = 00 for statuswords only unsigned char pucRetData[3] = {0,0,0}; unsigned int puiRetLen[1] = {3}; unsigned int uiRetBufferLen = 3; ... (usw, usf)Borland-Version:
----------------
Ich benutze "den C++ Builder 6uawg
d.e