Kann mir jemand den Quellentext erklären ?



  • also,

    Sleep ist eine blockierende WINAPI Funktion zum warten. Hättest du googlen können.

    keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
    

    Das simuliert einen Key-Release der Shift-taste. Zeile 35 ist IMO völlig schwachsinnig. Und in Zeile 42 wird der ASCII-Code eines übergebenen char 's geprüft, ob er größer 64 und kleiner 95 ist. Den kannst du googlen.

    1. Sieht ein kleines bissel nach schlechtem Code aus, denn z.B.

    if(letter>0x40 && letter<0x5B) // <- ??????????
            return true;
        return false;
    

    ist

    return letter >= 'A' && letter <= 'Z';
    

    2. Ist WINAPI und nicht C++ (oder reines Standard-C++)
    3. Und das hättest du googlen können.

    Edit: Zeile 30 bis 33
    ist blöd!! Da kann man doch einfach eine initializer_list mit den Buchstaben füllen und eine <algorithm> -funktion benutzen um auf Gleichheit zu prüfen, z.B. remove_if mit einem Lambda und dann Größe > 0 prüfen.



  • Hacker schrieb:

    Edit: Zeile 30 bis 33
    ist blöd!! Da kann man doch einfach eine initializer_list mit den Buchstaben füllen und eine <algorithm> -funktion benutzen um auf Gleichheit zu prüfen, z.B. remove_if mit einem Lambda und dann Größe > 0 prüfen.

    Dein Vorschlag ist blöd!
    Da kann man doch einfach return strchr("!\"§$%&/()=?>;:_*°'", c) schreiben.

    Zeile 35 ist wirklich witzig, der Autor muss wohl einen Weg gesucht haben, ' als Character zu schreiben. std::string("'")[0] geht zwar, "'"'[0] geht aber genauso und '\'' geht noch besser. Dieser Fall ist oben in meinem return-Ausdruck schon verarbeitet.



  • Hacker schrieb:

    Edit: Zeile 30 bis 33
    ist blöd!! Da kann man doch einfach eine initializer_list mit den Buchstaben füllen und eine <algorithm> -funktion benutzen um auf Gleichheit zu prüfen, z.B. remove_if mit einem Lambda und dann Größe > 0 prüfen.

    so einfach kann das gehen. oder man nimmt den umständlichen weg: standard-funktionen um zu gucken, ob es eine zahl oder eine nummer ist... klingt jetzt eigentlich gar nicht mehr so umständlich - erst recht nicht mehr, wenn man std::isalnum aus <locale> nimmt.

    bb



  • OMG, ich hab jetzt erst verstanden wofür diese Funktion da ist. Es ist einfach unglaublich, dass er nicht unskilled's Funktion genommen hat! Meine Güte, in diesem Fall ist Nicht-Prüfen völlig bescheuert. Ich dachte, er will einfach (aus einem unersichtlichen Grund) Den Buchstaben auf Gleichheit mit einem dieser Zeichen prüfen.



  • Hacker schrieb:

    Edit: Zeile 30 bis 33
    ist blöd!! Da kann man doch einfach eine initializer_list mit den Buchstaben füllen und eine <algorithm> -funktion benutzen um auf Gleichheit zu prüfen, z.B. remove_if mit einem Lambda und dann Größe > 0 prüfen.

    Und vergiss nicht noch ein paar lexical_cast einzubauen. Bzw. vielleicht könntest du es vorher noch in ein File schreiben und wieder zurücklesen. 🙄



  • hustbaer schrieb:

    Hacker schrieb:

    Edit: Zeile 30 bis 33
    ist blöd!! Da kann man doch einfach eine initializer_list mit den Buchstaben füllen und eine <algorithm> -funktion benutzen um auf Gleichheit zu prüfen, z.B. remove_if mit einem Lambda und dann Größe > 0 prüfen.

    Und vergiss nicht noch ein paar lexical_cast einzubauen. Bzw. vielleicht könntest du es vorher noch in ein File schreiben und wieder zurücklesen. 🙄

    Das Mindeste. Wo ist volkard? Ich brauche volkard! Der hätte jetzt Bock auf sowas. Wo ist der räudige alte volkard hin? Der war geil.

    Edit: Ich bin sicher, ich muss beim Datei- Lesen und Schreiben chiffrieren, damit die Teile nicht abgefangen, und spezifisch verfälscht schnell zurück-überschrieben werden können.

    Edit²: Oder PI! Der macht doch immer sowas, oder?



  • usernetz schrieb:

    if(msg[i]==msg[i-1])
                Sleep(100);        //Warum hier Sleep ???
    

    Eventuell werden die beiden Tastendrücke sonst nicht separat, sondern als ein einzelner Tastendruck aufgefasst.



  • else if(no_letter_or_number(buffer) || capital_letter(buffer))

    Logischer Unsinn.



  • Ethon schrieb:

    else if(no_letter_or_number(buffer) || capital_letter(buffer))

    Logischer Unsinn.

    Nein, perfekt logisch.
    Denk dir statt "no_letter_or_number" einfach "special".
    if (special || capital_letter)
    Was ist da jetzt logisch unsinnig?



  • Hacker schrieb:

    Edit²: Oder PI! Der macht doch immer sowas, oder?

    Ich frickle nur Sprachfeatures mit Makros nach -> falsche Baustelle


Anmelden zum Antworten