Byte Array als Hexadezimal in Listbox ausgeben



  • Hallo,
    ich möchte ein Byte Array in einer Listbox in einem Dialog ausgeben.
    Habe dafür eine Ausgabe programmiert, verstehe aber nicht ganz warum sie nicht funktioniert.

    void CHexAnzeige::OnDatenAnzeigen() 
    {
    		char str[1000];
    		int i;
    		for(i=0;i<1000;i++)
    		{
    			sprintf(str, "%02x", datenFeld[i]);
    			m_Listbox.AddString(str);
    		}
    		m_Listbox.SetCurSel(1000);
    }
    

    Der Fehler ist immer:
    error C2039: 'AddString' : Ist kein Element von 'CString'
    error C2039: 'SetCurSel' : Ist kein Element von 'CString'

    habe aber doch gar nix mit CString in der Funktion drin.
    Hat jemand ne Idee?

    Gruß Gabele



  • ähm was macht denn m_Listbox? Sieht schwer nach ner Globalen Variable aus. Schätze mal, die ist der Verursacher.



  • Ne war keine Globale sondern ne Membervariable. Der Fehler war das ich die Membervariable als CString deklariert habe. Hab´s behoben! Danke

    Gruß gabele



  • sagmal hast du kein problem damit?

    ich habe soetwas ähnliches probiert, und in bestimmten fällen bekomme ich ffffff dazwischen.
    ich habe es mal mit deinem code nachgestellt und etwas angepasst und da passiert das gleiche:

    char str[1000]; 
     int j=0;
     for(int i=0;i<10;i++)
     {
       j += sprintf(str + j,"%02x", ch[i]);
     }
     cout << (const TCHAR*)str << endl;
    

    hier noch der ausgangswert von ch im richtigen hex format:
    167300261c5c4d5cac12

    ausgegeben wird aber immer:

    167300261c5c4d5cffffffac12
    

    wieso macht er die ffffff dazwischen? weil die stelle mit 5c ein backslash ist? davor tut er es aber auch nicht 😕



  • mist, das passiert immer vor 0xac

    ich habe einfach mal einen punkt nach jedem byte eingefügt, aber das hilft auch nicht:

    j += sprintf(str + j,"%02x.", ch[i]);
    

    ausgabe:

    16.73.00.26.1c.5c.4d.5c.ffffffac.12.
    

    wie kann ich das verhindern?



  • ok, habs selber gefunden. die daten kommen aus einem character array. ich dachte immer ein char ist auch ein byte 😕

    na egal. nachdem ich jeden nun in ein byte schiebe funktioniert es 🙂

    for(int i=0;i<10;i++)
     {
       byte ich = ch[i];
       j += sprintf(str + j,"%02X", ich);
     }
    

Anmelden zum Antworten