Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
21.12.2002, 01:14
t4rg3t



Tach zusammen,

Ich habe ein Proggy das im Moment ca. so aussieht:
Quellcode:
do
{
gets(chString);
//eigentliche Schleife
}while();

Das Problem ist aber, dass die Schleife aber natürlich immer beim gets() stehenbleibt und auf die Eingabe wartet. Die Schleife müsste aber auch in dieser Zeit laufen. Das ganze ist eine Konsolenanwendung, es muss doch eine Möglichkeit geben das wie z.B. bei der HL dedicated server-konsole zu lösen ?
thx im Voraus !

--

Kann das denn so schwer sein ?? compilen, kompilieren, includen, inkludieren !!
---
cu
t@rg3t

zum Seitenanfang zum Seitenende Profil || Suche
001
21.12.2002, 11:45
Mazze



Ja wenn er nicht auf die Eingabe wartet, dann wird auch nichts eingegeben...

cu
Matze

--

BattleTech-MOD:
http://bthl.unitedgaming.net/

zum Seitenanfang zum Seitenende Profil || Suche
002
21.12.2002, 12:29
theDon



mit threads geht sowas, allerdings ist das ziemlich kompliziert...

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
003
21.12.2002, 12:47
Diablo_bth



oder man bediehnt sich der Windoofapi und fängt in nem Wndproc das WM_CHAR nzw WM_KEYDOWN - WM_KEYUP Signal auf (dazu braucht man aber ein Fenster oder?)

--

zum Seitenanfang zum Seitenende Profil || Suche
004
21.12.2002, 15:42
TheTinySteini



Die einzige Möglichkeit, sowas in ner Konsolen-App zu bewerkstelligen ist, sich auf die guten alten Dos-Zeiten zu besinnen, bzw. genau das Konzept zu kopieren, das Windows mit seiner Message-Loop macht:
Quellcode:
while( true )
{
    if( _kbhit() )
    {
        char ch = _getch();
        /* Hier z.B. ne switch-Anweisung oder sowas */
    } else {
        /* ganz normaler Programmablauf, z.B. Timer, Ausgaben... */
    }
}

Diese strikte Trennung zwischen Eingabe und Programmablauf verhindert übrigens auch ein Überlaufen des Input-Buffers (sollte jedenfalls...) - es werden nämlich solange alle Zeichen eingelesen, bis wirklich nix mehr da ist, dann erst wird das Programm weiter ausgeführt. Wenn der else-Teil sehr zeitkritisch ist, sollte man sich natürlich etwas anderes überlegen, aber dann muss es wirklich schon auf Millisekunden ankommen.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
005
21.12.2002, 18:33
dp
Administrator


man kann das auch einfach mit select() usw. realisieren.

dabei ist stdin ein file descriptor, wenn man noch sockets hat, kann man die ensprechend dazubauen.

--

zum Seitenanfang zum Seitenende Profil || Suche
006
21.12.2002, 18:56
t4rg3t



ich hab mich jetzt dafür entschlossen es mit SDL zu lösen.

@Darth Paul: das mit select(0, ...) hat bei mir nicht gefunzt, is immer in die Schleife rein, egal ob ich was gedrückt hatte oder nciht. Kannst du nen Beispiel / Link posten plz ?

--

Kann das denn so schwer sein ?? compilen, kompilieren, includen, inkludieren !!
---
cu
t@rg3t

zum Seitenanfang zum Seitenende Profil || Suche