![]() |
Taste einlesen in Konsole - aber wie???
Hi, hi!
wie kann man in einer Konsolen-Anwendung ein einzelnes Zeichen von der Tastaur einlesen (wie readkey unter TP), bzw den Status des Tastaurbuffers abfragen? Vielen Dank für Eure Hilfe doni NO A LA GUERRA |
Delphi-Quellcode:
var s: String;
Read(s); Write('Folgendes wurde eingegeben: ',s); |
Nun ja, dat is leider nisch datte, was ich wollte...
Ich will ein EINZELNES Zeichen einlesen. Nisch'n janzen String... NO A LA GUERRA |
Na ja, ein String kann auch aus einem einzelnen Zeichen bestehen.
Delphi bietet für dasLesen aus Konsolenfenstern eben nur Read und ReadLn. |
Zitat:
|
Hatte gehofft, daß das irgendwie mit den API-Funktionen ReadConsole,
ReadConsoleInput oder ähnlichem zu machen sei, hab´s aber nicht hingekriegt... :( |
Warum willst du kein Read?
|
Nun ja, warum kein Read...
Ich hab ein TurboPascal-Programm, was ich möglichst unkompliziert nach Delphi portieren möchte. Und ist auch eilig. In diesem Programm benutze ich Cursortasten zur Steuerung (Surfen durch die Verzeichnisse...) Da ich von Delphi nicht viel Ahnung hab und mich auch mit den Komponenten nicht so dolle auskenne (bitte, bitte, verbannt mich jetzt nicht gleich von der Seite...) will ich das ganze fast 1 zu 1 als Konsolen-Anwendung schreiben. Und da ist ´n <ENTER> nach jeder Cursor-Taste ´n Dorn im Auge... |
Re: Taste einlesen in Konsole - aber wie???
(uralt thread rauskrammt, falls es doch nochmal jeamnd brauch.)
Von hier geklaut : ![]()
Delphi-Quellcode:
function ReadKey: Char;
var InputBuf: Char; NumRead: DWord; begin InputBuf := #0; If ReadConsole(GetStdhandle(STD_INPUT_HANDLE), @InputBuf, 1, NumRead, nil) then Result := InputBuf else begin WriteLn(Format('ReadConsole failed, reason: %s', [SysErrorMessage(GetLastError)])); Result := #0; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz