Probleme im Debug-Modus



  • CStoll schrieb:

    Erstens: Ich habe diesen Beitrag mal aus http://c-plusplus.net/forum/viewtopic-var-t-is-169715.html rausgeschnitten, weil er damit (entgegen deiner Aussage) nichts zu tun hatte.

    Ah, okay da war ich wohl etwas zu schnell. 🤡
    Trotzdem ist genauere Info interessant.

    Und das mit den Warnungen, was CStoll sagt, hab ich mal in extrem gesehen.
    Bei dem Projekt musste ich die Warnungen mit grep erstmal ordnen um halbwegs nen Überblick zu bekommen.
    Der vorvorvor[...]voherige Bearbeiter hatte wohl mal die Warnungen ausgeschaltet, weil er dazwischen nie die Fehler gefunden hatte und niemand hatte sie bis dahin wieder eingeschaltet. Aber alle wunderten sich über die komischten Fehler.
    Zum Glück war ich nur eine Woche bei dem Mutanten-Projekt. 😃



  • jaja is ja gut, ich finde schon das es was miteindnader zu tun hat. aber steht nicht zur diskusion.

    wenn zur klährung füren kann bring ich euch gern mal nen Beispiel:

    SetDlgItemText(IDC_STATIC3,"Das ist ein Test");
    

    bei dem versuch das auf Debug zu erstellen kommt:

    error C2664: 'CWnd::SetDlgItemTextW': Konvertierung des Parameters 2 von 'const char [41]' in 'LPCTSTR' nicht möglich
    Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
    

    ja ich hab den text mal gekürtzt der da gesetzt wird.

    Bei der release erstellung hat er da abe rnichts zu mekern, und der eintrag Funktioniert auch ohne fehler.

    wennich aber zb code aus den faq´s benutze isses wieder anders, da sieht es so aus das ich bei der erstellung mit "kannnicht konvertieren" zugeschmissen werde, obwohl das zeug ja bei euch zu funktionieren scheint.
    ich muss dort eigentlich imemr irgendwelche extre zeilen schreibn um zu konvertieren.



  • Dieser Fehler hat weniger mit "Release vs. Debug" zu tun als mit "UNICODE vs. ANSI" - und offenbar hast du bei der Umstellung auf Releas-Modus die UNICODE-Einstellungen nicht übernommen.

    PS: Die Lösung für das Problem:

    SetDlgItemText(IDC_STATIC3,TEXT("Das ist ein Test"));
    

    PPS: Kauf dir bitte einen Duden.



  • CStoll schrieb:

    PPS: Kauf dir bitte einen Duden.

    Danke, für den Hinweis, leider ist es mir nicht möglich das was du als reschtschreibung bezeichnest richtig zu erlernen.
    Mal auch ganz PS an dich, es gibt auch leute die können sowas aus gesundheitlichen gründen nicht.
    Selbst Einstein gehörte dazu :p

    Aber um beim Thema zu bleiben, was is den da der unterschied für mich?
    gut wenn ich also nen TEXT() angebe hab ich den fehler nicht. Aber ich habe dort ja keinen fehler wenn ich in release erstelle.



  • Diese Leute gehen aber in der Masse der Faulheitsfalschschreiber unter und leiden dann halt unter deren Ruf. 🙄
    Eventuell würden strategisch platzierte Großbuchstaben schon helfen, dass du da nicht reingeschoben wirst. 😉
    (Das war das einzige, was mir aufgefallen war, die Tippfehler hatte ich alle überlesen. 😃 )

    Waren das schon alle Fehlermeldungen? Alle mit Text?
    _T("") müsste übrigens auch gehen, ist was für Tippfaule. 🤡



  • fmotto schrieb:

    Aber um beim Thema zu bleiben, was is den da der unterschied für mich?
    gut wenn ich also nen TEXT() angebe hab ich den fehler nicht. Aber ich habe dort ja keinen fehler wenn ich in release erstelle.

    Dann nimm dir mal dein MSDN und schau nach, was das zum Thema UNICODE ausspuckt (btw hier im Forum war der Unterschied zwischen ASCII und UNICODE auch schon oft genug Thema).



  • CStoll schrieb:

    fmotto schrieb:

    Aber um beim Thema zu bleiben, was is den da der unterschied für mich?
    gut wenn ich also nen TEXT() angebe hab ich den fehler nicht. Aber ich habe dort ja keinen fehler wenn ich in release erstelle.

    Dann nimm dir mal dein MSDN und schau nach, was das zum Thema UNICODE ausspuckt (btw hier im Forum war der Unterschied zwischen ASCII und UNICODE auch schon oft genug Thema).

    Ist blöd zu finden in der MSDN dank des oft vertretenen Namens... 🙄
    http://msdn2.microsoft.com/en-us/library/se784sk6.aspx 🙂



  • hmm Mag ja sein das ich ma jetzt ein bisschen Dumm anstelle, aber warum soll ich _T oder TEXT angeben, wennich es doch einwandfrei erstellen kann ohne Fehlermeldungen, und ohne Funktionsverlust 😕
    Die Frage is da doch eher für mich jetzt was muss ich machen um in modus Debug auch keine fehlermeldungen zu erhalten. Das ich nicht mit unicode arbeite weiss ich ja habs ja selbst abgeschaltet, weil ich in unicode noch mehr Sachen nicht erstellen konnte wie ich es als Beispiel gefunden habe.



  • Offenbar hast du nur in der Release-Version den UNICODE-Modus ausgeschaltet - das mußt du auch in der Debug-Version nacholen, damit der Compiler in beiden Fällen von den selben Voraussetzungen ausgehen kann.

    (aber imho ist es besser, den UNICODE-Modus zu nutzen als ihn auszuschalten, indem du konsequent TCHAR und Konsorten anstelle von char verwendest (und String-Literale in _T() bzw. TEXT() maskierst).



  • ok dann Dankeich für die Ausführungen. ich werd mal auf unicode zurückschalten und den Code überarbeiten.
    Deshalb seit ihr die Profies hier und ich nur nen Anfänger 😃


Anmelden zum Antworten