Konsole vs Stdin_ - auslesen ohne freeze?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

PhillipK

Betreff: Konsole vs Stdin_ - auslesen ohne freeze?

BeitragDi, Aug 16, 2011 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Heyho!
Im zuge meiner Debugoffensive an meinen programmen versuche ich grade, eine art input OHNE Freeze zu realisieren.
Stundenlanges googlen brachten nicht den gewünschten erfolg.

Ich würde gerne die Konsole auslesen, am besten nur den Input.
Wenn das nicht möglich ist, kann ich evtl den Stdout_ stream auch readable machen?

Jegliche möglichkeit, an den Text ranzukommen, soll mir recht sein. Zur not tuts auch ein Pointer zum Consolen Handle, wo ich händlich den speicher durchwühle Sad

Irgendwelche ideen? Bin leider sogut wie garnicht C/C++ versiert. Über ein simples Hello world / Text-4-gewinnt ging es nicht heraus.

DaysShadow

BeitragDi, Aug 16, 2011 23:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich verstehe irgendwie nicht ganz was du mit Freeze meinst.
Willst du Eingaben für Namen usw. ohne Konsole?

Ich habe das sonst immer mit GetChar und Chr gelöst, so z.B.:

BlitzMax: [AUSKLAPPEN]
SuperStrict

Global char:Byte
Global in:String
Global out:String

Graphics( 800, 600, 0, 60 )

Repeat

Cls()

char = GetChar( ) 'Gibt letzte gedrückte Taste zurück, nur ASCII(?), siehe ASCII-Tabelle

If( char > 0 ) 'Wenn kein ASCII Char kam, ist char 0 ansonsten > 0

in:+ Chr(char) 'Füge Input-String das Zeichen hinzu, Chr gibt einen String zurück

'Weitere Spielerei, wenn 6 Zeichen eingegeben wurde, gib den Inhalt an out und
'lösche in

If( in.length = 6 )

out = in
in = ""

End If

End If

'Zeichne out
DrawText( out, 0, 0 )

Flip()

Until( KeyHit( KEY_ESCAPE ) Or AppTerminate( ) )


Damit kann man sich dann weiter etwas basteln, bloß Dinge wie die Pfeiltasten oder Bild-Ab usw. musst du mit KeyHit/KeyDown abfragen, für ein Eingabefeld z.B.
Jedenfalls soweit ich das weiß und getan habe.
Blessed is the mind too small for doubt
 

PhillipK

BeitragMi, Aug 17, 2011 0:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein Very Happy

Konsole == Dosbox etc. Eine eingabe daraus, abfrage etc, ohne das der programmfluss gestoppt wird.
Eine normale Stdin_ abfrage hält das programm an, bis ein Zeilenumbruch ausgelesen wurde. So muss man immer erst einen text eingeben und mit enter bestätigen, was allerdings für meinen geplanten server nicht weiter hilfreich ist Sad
Alternativ arbeite ich halt über eine abgespeckte gui >.<

BtbN

BeitragMi, Aug 17, 2011 0:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst u.a. mit select oder ioctl FIONREAD gucken, ob und wie viel zum lesen bereit ist.
Es ist jedoch nicht ohne Platformspezifischen und durchaus komplizierten Code zu bewerkstelligen, dass das newline-buffereing nicht mehr aktiv ist.
Unter Linux muss man dazu das TTY in den raw mode schalten, was andere ungewünschte effekte mit sich bringt.
 

PhillipK

BeitragMi, Aug 17, 2011 10:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Win only reicht mir. Mir gehts ums debuggen, ohne externe GUI.

Der sinn dahinter ist strittig. Vielleicht ists auch mal wieder meine verbissenheit, das nun UMBEDINGT so lösen möchte Smile
Ich werde mir nacher mal die genannten stichpunkte anschauen und durchgooglen. Kommt sicher intressantes zu tage Very Happy

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group