Einzelnen Beitrag anzeigen

Kill0r

Registriert seit: 5. Jun 2005
Ort: Zürich
50 Beiträge
 
Delphi 2010 Professional
 
#1

ReadLn() für Fensterprogramme?

  Alt 13. Aug 2008, 12:17
Hallo

Ich habe ein Problem welches vielleicht nicht ganz dem normalen Windows-Konzept entspricht und ich bin mir nicht sicher, ob es lösbar ist. Also ich schreibe gerade eine Art Konsolenprogramm, welches aber eigentlich ein normales Windowsprogramm ist mit einem TImage was mir als Anzeige dient (d.h. Ich schreibe den Text welcher ich anzeigen will dort drauf)
Nun möchte ich so etwas wie einen WaitForUserInput Befehl implementieren, welcher solange alle Tastendrücke in einen String speichert, bis die Entertaste gedrückt wurde.
Die Benutzung würde folgendermassen aussehen:
Delphi-Quellcode:
Drawer.AddToWriteBuffer('What''s your name? ');
Nickname := WaitForUserInput;
AskServerOrClient;
AskServerOrClient soll erst dann ausgeführt werden, wenn bei der Eingabe die Entertaste gedrückt wurde und WaitForUserInput den eingegebenen String zurückliefert. Also ziemlich ähnliche Funktionsweise wie der ReadLn() Befehl bei Konsolenprogrammen.

Ich habe mich schon an einer Lösung mittels While Schleife versucht, welche aber logischerweise alle Messages blockierte, so dass nicht mal mehr das Fenster überhaupt angezeigt wurde und dies in einer Endlosschleife endete. Die Tasten habe ich dort über FormKeyPress abgefragt und in einer Variable gespeichert welche dann von WaitForUserInput ausgelesen wurde, was mir nicht sehr sinnvoll und umständlich erscheint... Vielleicht wisst ihr auch da eine bessere Variante? Ich nehme mal an ich müsste dies über einen Thread lösen (damit habe ich bereits Erfahrungen gesammelt ) Aber ich wüsste nicht wie das realisieren soll

Ich möchte anmerken, dass ich keinen vollständigen Code brauche Denkanstösse / Konzepte reichen mir völlig
Danke fürs Durchlesen meines Romans


Cu
Kill0r
  Mit Zitat antworten Zitat