Понадобилось сделать что-то типа такого:
Файл уже существует. Заменить? [Y/N]
Вспомнил, что в Турбопаскале была функция ReadKey
из модуля Crt
, а вдруг и во FreePascal есть?
Есть, но модуль Crt
делает глюк русскому языку:
program TestCrt; uses Crt; var Ch:char; begin WriteLn('Нажмите любую клавишу...'); Ch:=ReadKey; end.
Ладно, пробуем заменить Crt
на WinCrt
.
Глюк с русским языком пропал, но функция ReadKey
на нажатие клавиш не реагирует, да пиздец, еб твою мать!
В общем, долго плевался, реализовал через TKeyEvent
из модуля Keyboard
:
uses SysUtils,Keyboard; function Ask(FilePath:UnicodeString):boolean; var K: TKeyEvent; KS:String; begin WriteLn ('File ', FilePath, ' is exists! Replace file? [Y/N]'); InitKeyBoard; while true do begin K:=GetKeyEvent; K:=TranslateKeyEvent(K); KS:=KeyEventToString(K); if (KS='Y') or (KS='y') then begin DoneKeyBoard; exit(true); end; if (KS='N') or (KS='n') then begin DoneKeyBoard; exit(false); end; end; DoneKeyBoard; exit(false); end;