Hexwerte richtig Augeben lassen - bekomme nur kryptisches



  • Matthias_ schrieb:

    Haben den ganzen Rest aus meiner "Vorgeschichte" rausgenommen um erstmal nur den Fehler zu korrigieren.

    Habe den Code so komplett aus meinem Programm kopiert.

    Ich verstehe das ja leider auch nicht 😞

    Also es liegt nicht am VS 6. Den habe ich hier noch für alte Projekte, und mit dem geht es ganz wunderbar. Sowohl mit printf als auch mit cout .

    Vielleicht passiert vorher was, mit dem Du Dir den Stack oder den Framepointer zerballerst, so dass die Ausgabefunktionen nicht mehr richtig funktionieren.

    Probiere Deinen Code mal ohne alles Weitere in einer ansonsten leeren main-Funktion aus (also in einem neuen Projekt zum Testen).

    @Nukularfüsiker: Passiert mal. 😉 Ich schreibe dafür regelmäßig Halbwissen hin, und tue so, als wäre das der Weisheit letzter Schluss... 🤡



  • Habe jetzt ein neues Projekt erstellt mit nur dem Text und bekomme im Debug Modus immernoch die selben Sachen angezeigt.

    Liegt das am Debug Modus??

    Wie bekomme ich denn sonst meine Werte in eine Textbox Kopiert?



  • Matthias_ schrieb:

    Habe jetzt ein neues Projekt erstellt mit nur dem Text und bekomme im Debug Modus immernoch die selben Sachen angezeigt.

    Liegt das am Debug Modus??

    Wie bekomme ich denn sonst meine Werte in eine Textbox Kopiert?

    Wie, jetzt "Textbox"? Von Textboxen war nirgends die Rede...

    PS: Am Debug liegt es nicht...

    PPS: Zeig nmal den Code Deines Testprojekts. Und zwar komplett, bitte.



  • Ja, von Textbox war bisher auch nie die rede.

    Deshalb ja jetzt meine Frage, wie bekomme ich meine Ergebnisse in eine Textbox?
    Vielleicht liegt ja auch der Fehler in der bisherigen Ausgabe.

    Danke aber an alle, die sich um diesen Fehler bemühen!!!



  • #include "stdafx.h"
    #include "neu.h"
    #include "neuDlg.h"
    #include <iostream>
    #include <iostream.h>
    
    void CNeuDlg::OnOK() 
    {
      char buf[8] = { 0 };
    
      buf[0]=0x11;
      buf[1]=0x31;
      buf[2]=0x55;
      buf[3]=0x03;
      buf[4]=0x72;
      buf[5]=0x14;
      buf[6]=0x13;
      buf[7]=0x30;
    
      DWORD read =8;
    
      for(int i=0; i<read; i++)
      {
          unsigned int value = static_cast<unsigned int>(buf[i]);
          std::cout << std::hex << value << std::endl; 
      }
    }
    

    /edit pumuckl: cpp-tags


  • Mod

    Matthias_ schrieb:

    Danke aber an alle, die sich um diesen Fehler bemühen!!!

    Du machst es uns nicht gerade einfach. Zeig doch mal ein (minimales aber compilierbares) Beispiel, welches den Fehler aufweist. Der bisherige Code zeigt nämlich keinen Fehler und deinen Angaben zufolge ist das aber gar nicht dein Code, sondern du machst etwas ganz anderes.



  • Ich möchte nur über eine Com Schnittstelle etwas auslesen.
    Das ist der Hintergedanke.

    ZUVOR versuche ich mit diesem ersten Schritt zu schauen, ob ich mir irgendwie vernünftig HEX Werte anzeigen lassen kann.

    Und dieser erste Schritt haut schon leider nicht hin.

    Der Code den ich gepostet habe steht so in meinem Programm und im Moment nichts anderes.
    Über einen "OK" Button wird das ausgeführt. Das war es auch schon! (OnOK())

    Aber im Dubug bekomme ich nur komische Werte. (wie ich vorher schon gepostet habe)

    Kann ja auch gut sein, dass ich einfach einen dummen Fehler irgendwo gemacht habe oder ich auf diese Weise garnicht zur Ziel komme.....

    THX Anyway


  • Mod

    Betonung liegt auf compilierbar. Wenn man deinen Code von oben nämlich compilierbar macht, dann funktioniert das wunderbar. Da dein Code aber nicht compilierbar ist, hast du höchstwahrscheinlich an anderer Stelle noch mehr Code und dort könnte der Fehler liegen. Eine compilierbare Version deines Codes könnte zum Beispiel so aussehen:

    #include <iostream>
    
    void OnOK()
    {
      char buf[8] = { 0 };
    
      buf[0]=0x11;
      buf[1]=0x31;
      buf[2]=0x55;
      buf[3]=0x03;
      buf[4]=0x72;
      buf[5]=0x14;
      buf[6]=0x13;
      buf[7]=0x30;
    
      int read =8;
    
      for(int i=0; i<read; i++)
      {
          unsigned int value = static_cast<unsigned int>(buf[i]);
          std::cout << std::hex << value << std::endl;
      }
    }
    
    int main()
    {
      OnOK();
    }
    

    Und jetzt sag mir, ob dieser Code bei dir den beschriebenen Fehler erzeugt. Höchstwahrscheinlich nicht (Falls doch, hast du ein wirklich übles Problem). Und das obwohl ich nichts entscheidendes geändert habe. Da siehst du, wie wichtig es ist, bei Fehlern ein komplettes Beispiel zu bringen.



  • Alles klar, habs verstanden, danke dir.

    Hier also nochmal:

    #include <iostream>
    
    void CNeuDlg::OnOK() 
    {
    char buf[8] = { 0 };
    
    buf[0]=0x11;
    buf[1]=0x31;
    buf[2]=0x55;
    buf[3]=0x03;
    buf[4]=0x72;
    buf[5]=0x14;
    buf[6]=0x13;
    buf[7]=0x30;
    
    DWORD read =8;
    
    for(int i=0; i<read; i++)
    {
        unsigned int value = static_cast<unsigned int>(buf[i]);
    	std::cout << std::hex << value << std::endl; 
    }
    }
    
    int main()
    {
    	CNeuDlg::OnOK();
    }
    

    Bekomme hier Fehler wie folgt:

    error C2248: Kein Zugriff auf protected Element



  • Matthias_ schrieb:

    Alles klar, habs verstanden

    Nicht so richtig. Nimm doch bitte genau den Code von SeppJ, ohne etwas hinzuzufügen oder wegzulassen.



  • glaub dein problem liegt an anderer stelle 😞
    lies dir doch den thread mal durch



  • warning C4508: 'main' : Funktion sollte einen Wert zurueckgeben; Ergebnistyp 'void' angenommen



  • Matthias_ schrieb:

    warning C4508: 'main' : Funktion sollte einen Wert zurueckgeben; Ergebnistyp 'void' angenommen

    ...unwichtig. Und was ist nun das Ergebnis, klappt die Ausgabe oder nicht...?



  • bekomme keine Ausgabe.

    hier noch der 2te Fehler (sorry, hatte ich eben noch vergessen dazu zu kopieren)

    fatal error LNK1120: unaufgeloeste externe Verweise



  • Dir muss man aber auch alles aus der Nase ziehen...

    Welche Verweise fehlen?
    Simon



  • error LNK2001: Nichtaufgeloestes externes Symbol "protected: virtual void __thiscall CSdDlg::OnOK(void)" (?OnOK@CSdDlg@@MAEXXZ)
    Debug/sd.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise

    sorry, dachte das hätte so schon gereicht 😞



  • Nukularfüsiker schrieb:

    Matthias_ schrieb:

    Alles klar, habs verstanden

    Nicht so richtig. Nimm doch bitte genau den Code von SeppJ, ohne etwas hinzuzufügen oder wegzulassen.

    Das bedeutet vor allem ohne irgendwelche Textboxen!



  • Der Linker sagt CSdDlg::OnOK(..) ist deklariert, aber nicht implementiert.
    Implementiere es.. kann auch ein Schreibfehler sein.



  • Ach ja, nur so nebenbei:
    Mit cout und Konsorten bekommt man typischweise keine Ausgaben in eine Textbox oder sonstwelche GUI Text-Widgets.



  • @Tachyon: habe keine Textboxen drin

    @theta: habs implementiert und habe jetzt lediglich noch 1 Warnung und kann den Dedug starten. Bekomme aber keine Werte.

    zur sicherheit hier die Implentierung:

    void CSdDlg::OnOK()
    {
    
    }
    

Anmelden zum Antworten