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 6

    uawg
    d.e


Anmelden zum Antworten