Jürgen R.: Turbo C++ Problem

Ich weiß das gehört hier eigentlich nicht hin aber ich weiß nicht wo ich wo ich sonst fragen sollte.

Folgendes :
Ich will ein Schleife schreiben die, die ganze zeit Befehle ausführt und bei Tastendruck ein paar Meldungen dazu machen soll. DAs ist eigentlich alles kein Problem jedoch wenn ich den Tastendruck mit getche(); einlesen will, bleibt das Programm an der stelle stehen und wartet darauf das eine Taste gedrückt wird. Giebt es eine möglichkeit das zu umgehen ?   alla if (keypressed) asd=getche();   oder so ?

Ich hoffe da kann mir jemmand Helfen.

Danke im Vorraus.

  1. Hallo Jürgen,

    Ich hoffe da kann mir jemmand Helfen.

    Mein C++ ist zu lange her, aber was Du da machen willst, nennst sich Polling (im Gegensatz zum Interrupt-Verfahren). Vielleicht reicht das Stichwort schon, um eine Anleitung oder ein Beispiel zu finden.

    HtH-Gruß, Thoralf

    --
    Sic Luceat Lux!
  2. Hallo,

    Ich will ein Schleife schreiben die, die ganze zeit Befehle ausführt und bei Tastendruck ein paar Meldungen dazu machen soll. DAs ist eigentlich alles kein Problem jedoch wenn ich den Tastendruck mit getche(); einlesen will, bleibt das Programm an der stelle stehen und wartet darauf das eine Taste gedrückt wird. Giebt es eine möglichkeit das zu umgehen ?

    In Turbo C (ohne ++) gab es ein Library, in der eine Funktion namens kbhit() oder so versteckt war. Diese prüfte, ob eine Tastatureingabe abgeholt werden konnte oder nicht. Ich denke das sie auhc irgendwie den Weg nach TurboC++ gefunden hat.

    Grüße
      Klaus

    1. Danke. Ich bin mir sicher das die übernommen wurde, jetzt muss sie nur noch finden.

  3. Hallo Jürgen,

    [...] DAs ist eigentlich alles kein Problem jedoch wenn ich den Tastendruck mit getche();
    einlesen will, bleibt das Programm an der stelle stehen und wartet darauf das eine Taste
    gedrückt wird.

    Das nennt man 'blockierendes lesen'.

    Giebt es eine möglichkeit das zu umgehen ?   alla if (keypressed) asd=getche();   oder so ?

    Du musst dem OS bekannt geben, dass von dem Filehandle nicht blockierend gelesen werden
    soll. Unter UNIX würde ich dazu fcntl() benutzen. Wie das unter Windows geht, weiss ich
    nicht. Ist das bekannt gegeben worden, kehrt getchar() mit einer Fehlermeldung (errno dürfte
    auf EAGAIN oder auf EWOULDBLOCK gesetzt werden) zurück.

    Grüße,
     CK

    --
    Sich erinnern bedeutet, aus einer Erfahrung nicht ausreichend gelernt zu haben.