c++ *char == '='



  • @Mittagspause Auch, wenn mich das in keiner Weise stresst oder nervt muss ich sagen, ich merke jetzt erst, dass C++ wirklich viel viel schwerer ist als Java. Aber das ist ja in etwa der Grund, weshalb ich es lernen will, weil ich die ganze selber bilden möchte.


  • Mod

    @PCGirl sagte in c++ *char == '=':

    @Mittagspause Auch, wenn mich das in keiner Weise stresst oder nervt muss ich sagen, ich merke jetzt erst, dass C++ wirklich viel viel schwerer ist als Java. Aber das ist ja in etwa der Grund, weshalb ich es lernen will, weil ich die ganze selber bilden möchte.

    Ich weiß ja nicht, womit du lernst, aber auf jeden Fall machst du oder dein Lehrmaterial dir das Leben unnötig schwer. Alles was dir hier im Thread erklärt wurde, was du falsch gemacht hast, wäre eigentlich gar nicht nötig gewesen. Denn das was du da machst ist ein schlechter Mischmasch aus C und Java. Technisch gesehen ist es zwar C++, aber vom Stil her halt ganz anders als vom Erfinder vorgesehen. Das ist selbstverständlich schwer und unhandlich.



  • @PCGirl sagte in c++ *char == '=':

    muss ich sagen, ich merke jetzt erst, dass C++ wirklich viel viel schwerer ist als Java.

    @manni66 sagte in c++ *char == '=':

    Warum benutzt du nicht std::string und std::wstring?



  • @manni66 Dem Fenster muss zumindest ein ein Parameter wchar_t übergeben werden, das Fenster wird hier erzeugt:HWND hwnd = CreateWindowEx(0, // extended styles
    classname.c_str(), // name: wnd 'class'
    title, // wnd title
    WS_OVERLAPPEDWINDOW, // wnd style
    desktopwidth / 4, // position:left
    desktopheight / 4, // position: top
    desktopwidth / 2, // width
    desktopheight / 2, // height
    0, // parent wnd handle
    0, // menu handle/wnd id
    hInst, // app instance
    0); // user defined info
    title ist ein wchar_t. Aber ich denke ich, werde mich mal in string und wstring und die umwandlung in wchar_t einlesen.



  • @SeppJ Das musst du mir genauer erklären.



  • nimm doch CreateWindowExA......



  • @SeppJ *genau erklären.



  • Was ist an wchar_t anders als char? Da weißt du ja auch wie es geht: classname.c_str().



  • @manni66 Habe eben auf deinen Rat hin versucht es zu ändern, aber da kommt jetzt die Meldung "Das Argument vom Typ char ist mit dem Parameter vom Typ 'LPCWSTR' inkompatibel".



  • @PCGirl sagte in c++ *char == '=':

    @manni66 Habe eben auf deinen Rat hin versucht es zu ändern, aber da kommt jetzt die Meldung "Das Argument vom Typ char ist mit dem Parameter vom Typ 'LPCWSTR' inkompatibel".

    Nein du hast irgendetwas gemacht, aber nicht meinen Rat befolgt.



  • @manni66 Da fällt mir ein, ich habe gestern irgendwo gelesen, dass damit zu tun hat, wenn man windows.h includiert. Ich weiß nicht, worum ich das drin habe, benutze Microsoft Visual Studio mit Windows 10, werde mal probieren, wie's ohne ist.



  • @manni66 Du hast mir geraten dem Fenster char statt wchar_t zu geben. Habe ich auch versucht, klappt aber nicht.



  • Nach der Änderung von "for (i < strlen(line); i++; l++)" in "for (; i < strlen(line); i++, l++)" funktioniert es auf einmal. Allerdings wird als Titel "TerminverwaltungIIIIIIIIIIIIIIIIIIIIIIIIIII...." (mit Strich über jedem I) ausgeben. Hat das vielleicht etwas mit dem "i als Variablenname" zu tun, wovon Mittagspause geredet hat? Ich muss sagen, ich finde das hochinteressant, gerade weil es von Java so gar nicht kenne. Auch das mit dem Garbage Collector, was Quiche Lorrain gesagt hat, und anderes, was hier so in den Antworten steht.



  • @manni66 Habe jetzt versucht, windows.h rauszunehmen, aber dann werden ein paar meiner Klassentypen, z. B. "LRESULT" nicht mehr erkannt. Ich muss zugeben, dass Microsoft Visual Studio verwende, wo man sich einiges generieren lassen kann, und dann habe ich eine Open Source-Lösung aus dem Internet kopiert, um mir ein Fenster mit Tabs machen zu lassen.


  • Mod

    @PCGirl value ist nicht nullterminiert.



  • @PCGirl sagte in c++ *char == '=':

    @manni66 Du hast mir geraten dem Fenster char statt wchar_t zu geben.

    Nein!



  • @PCGirl Wie kommst du darauf, Windows.h zu entfernen? Manni hat dir außerdem nicht geraten, dem Fenster char statt wchar_t zu geben.

    std::wstring hat wide chars, std::string chars. Auf die unterliegenden Daten kommst du jeweils mit .c_str().

    Lies vielleicht mal das hier dazu: https://stackoverflow.com/questions/402283/stdwstring-vs-stdstring


  • Mod

    @PCGirl sagte in c++ *char == '=':

    @SeppJ Das musst du mir genauer erklären.

    Was soll man da genauer erklären? Du hast leider Mist gelernt, vermutlich aufgrund schlechten Materials anstatt aus eigener Dummheit. So sieht C++ nicht aus. So sieht eigentlich nicht einmal C aus, wenn man es richtig macht. Was du da programmiert hast, ist schlechtes C, bei dem man malloc mit new ersetzt hat, damit es irgendwie mehr wie C++ aussieht. Was zeigt, dass der Lehrer nicht nur schlecht C spricht, sondern auch nicht weiß, dass ein sichtbares new in C++ ein Alarmsignal für schlechten Code ist. Ebenso deine Einleseschleife, die wie schon gesagt in jeder Sprache falsch ist. Und ganz viele weitere Sachen. Eigentlich so ziemlich alles in deinem kurzen Code.

    Da kann man jetzt nicht im Details ausbessern. In richtigem C++ würde man das ganze Programm komplett anders aufziehen und dann würde auch keines deiner bekannten Probleme (und die vielen unbekannten, die du noch gar nicht bemerkt hast) überhaupt eine Chance haben, aufzutreten. Ich kann dir daher nur raten, dein Lehrbuch wegzuwerfen oder den VHS-Kurs zu kündigen. Auf jeden Fall werd deinen aktuellen Lehrer los! Von schlechten Lehrern lernt man halt nur Mist. Je tiefer du dir den Mist angewöhnst, desto schwerer wirst du ihn wieder lost. Schlimmstenfalls gibst du frustriert auf, weil aus deiner Sicht alles furchtbar umständlich und frickelig aussieht. Was es mit dieser Programmierweise ja auch ist.



  • @SeppJ sagte in c++ *char == '=':

    @PCGirl sagte in c++ *char == '=':

    @SeppJ Das musst du mir genauer erklären.

    Was soll man da genauer erklären? Du hast leider Mist gelernt, vermutlich aufgrund schlechten Materials anstatt aus eigener Dummheit. So sieht C++ nicht aus. So sieht eigentlich nicht einmal C aus, wenn man es richtig macht. Was du da programmiert hast, ist schlechtes C, bei dem man malloc mit new ersetzt hat, damit es irgendwie mehr wie C++ aussieht. Was zeigt, dass der Lehrer nicht nur schlecht C spricht, sondern auch nicht weiß, dass ein sichtbares new in C++ ein Alarmsignal für schlechten Code ist. Ebenso deine Einleseschleife, die wie schon gesagt in jeder Sprache falsch ist. Und ganz viele weitere Sachen. Eigentlich so ziemlich alles in deinem kurzen Code.

    Da kann man jetzt nicht im Details ausbessern. In richtigem C++ würde man das ganze Programm komplett anders aufziehen und dann würde auch keines deiner bekannten Probleme (und die vielen unbekannten, die du noch gar nicht bemerkt hast) überhaupt eine Chance haben, aufzutreten. Ich kann dir daher nur raten, dein Lehrbuch wegzuwerfen oder den VHS-Kurs zu kündigen. Auf jeden Fall werd deinen aktuellen Lehrer los! Von schlechten Lehrern lernt man halt nur Mist. Je tiefer du dir den Mist angewöhnst, desto schwerer wirst du ihn wieder lost. Schlimmstenfalls gibst du frustriert auf, weil aus deiner Sicht alles furchtbar umständlich und frickelig aussieht. Was es mit dieser Programmierweise ja auch ist.

    Also, ich meinte eigentlich nur, dass mich das sehr interessiert, was du gesagt hast. Ich habe jetzt ein Jahr Java gelernt und bin auf eigene Entscheidung auf C++ umgestiegen, die Ausbilder haben es erlaubt, aber ich bringe es mir selbst bei, und du musst nicht gleich von "Mist" reden, weil macht ja gar nichts, dass es momentan noch zu Fehlern kommt.


  • Mod

    @PCGirl Erwirb erstmal ein gutes Fachbuch, z.B. den C++-Primer. Ohne wirst Du mit Deinen mediokren Java-Kenntnissen nur voellig muelliges C++ fabrizieren. Wie oben. Ist nicht persönlich gemeint, genauso wie @SeppJ es nicht persönlich gemeint hat, Deinen Code als Mist abzustempeln. Aber man merkt, dass Du nicht in der Lage bist, mit der Diskussion hier richtig Trab zu halten, deshalb bedarf es nach guter, literarischer Fundierung. Wir können noch 20 Beitraege ueber irgendwelche flüchtigen Fehler austauschen, die sich in Deinen Code einschleichen. Aber das wird dir langzeitlich nicht zum Erfolg helfen.


Anmelden zum Antworten