Pfeiltasten für Menü



  • gotoxy und das mit den background color ist in der Improved Console, schau mal den ersten thread im Konsolen Forum an.

    greetz



  • Nein, das ist definitiv nicht die Improved Console. Hierbei handelt es sich wohl um Code für einen Compiler der noch eine vollständige <conio.h> mitliefert.

    Diese Zeile funktioniert nicht:

    cCommand = getch();
    if(cCommand == 0) {
    

    1. cCommand muss für eine solche Prüfung vom Typ "int" sein
    2. Bei vielen Compilern musst du im if auf mehr als auf == 0 prüfen, siehe auch FAQ ("getch(), getche(), getchar(), kbhit()")

    Sollte also so aussehen:

    int cCommand;
    ...
    cCommand = getch();
    if(cCommand == 0 || cCommand == 0xE0) {
    

    MfG SideWinder



  • AlSO:
    1. richtig die gotoxy und das textbackground ist aus conio.h
    2. @noob 1: du kannst die farben auch ändern indem du den befehl

    system("COLOR ...");
    

    aufrufst.. für die ... setzt du einfach eine farbkombination ein, die du bei cmd.exe help COLOR findest.

    3. ich habe das cCommand in int umgewandelt.. es tut sich nichts.. auch nicht, wenn ich die 1. if-abfrage änder bzw. weglasse....

    mfg



  • 2. Schlecht. Weil system() schlecht ist. Weil unportabel und langsam. Weil siehe auch warum system("cls") Mist ist.

    3. Dann gib die int-Zahl direkt nach getch() und vor dem if aus. Wenn du Pfeil-Nach-Oben drückst, müssten da zwei Werte kommen. Sag mir bitte die beiden Werte.

    MfG SideWinder



  • leider gibt er mir keinen wert aus.. 😕



  • nCommand muss int sein!!

    nCommand = _getch();
    cout << nCommand << endl;
    
    if(...) {
    

    Müsste zwei Werte ausgeben. Sonst ist etwas im Argen...

    MfG SideWinder



  • nein es gibt nichts aus.
    welchen header muss ich für die _getch(); benutzen, da ich nur die getch(); nehme vllt. gehts dann

    mfg



  • getch() passt schon, _getch() ist nur MSVC...wenn der nichts ausgibt ist das verdächtig. Kaum vorstellbar. Was macht folgendes Programm bei Eingabe von "Pfeil-Nach-Oben":

    #include <iostream>
    #include <conio.h>
    using namespace std;
    
    int main ()
    {
        int a = getch();
        int b = getch();
    
        cout << "A: " << a << "END" << endl;
        cout << "B: " << b << "END" << endl;
    
        return 0;
    }
    

    Ausgabe bei mir:

    A: 224END
    B: 72END
    

    Daher weiß ich. Ins if gehört if(ch == 0x0E) und dann kann ich auf 72 überprüfen - wie bei dir auch.

    MfG SideWinder



  • ja das ist schon richtig, aber wir wissen immer noch nicht woran es liegt, dass an dem prog nichts funktioniert!! ... 😞

    mfg



  • Ja, und was wird nun ausgegeben? Genau dasselbe?

    MfG SideWinder



  • SideWinder schrieb:

    Ausgabe bei mir:

    A: 224END
    B: 72END
    

    Daher weiß ich. Ins if gehört if(ch == 0x0E) und dann kann ich auf 72 überprüfen - wie bei dir auch.

    MfG SideWinder

    Bist du sicher, daß da kein Zahlendreher reingekommen ist? 224 == 0xE0



  • Ja, der ist wohl drinnen.

    MfG SideWinder


Anmelden zum Antworten