Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.12;
Скачать: CL | DM;

Вниз

перехват нажатия клавиши в консольном приложении   Найти похожие ветки 

 
Дева ©   (2006-02-22 19:48) [0]

Здравствуйте мастера, подскажите пожалуйста. В Паскале процедура ReadKey считывала с клавиатуры вводимый символ. Однако это процедура относиться к модулю CRT, а в Дельфи вообще не принимается. Каким образом считывать с клавиатуры в консольном приложении? И есть ли возможность как-то привязать паскалевский модуль с расширением tpu, или может где взять его?
Заранее спасибо


 
umbra ©   (2006-02-22 19:55) [1]

а чем не устраива.т функции read/readln из модуля System делфи?


 
Дева ©   (2006-02-22 19:58) [2]

Что эта функция делает?
Мне нужно перехват каждой клавиши произвести, то есть настроить фильтр ввода...


 
Джо ©   (2006-02-22 20:02) [3]

ReadConsole
ReadConsoleInput.


 
Дева ©   (2006-02-22 20:02) [4]

Эта процедура разве не с файлом работает?


 
Дева ©   (2006-02-22 20:07) [5]

2 Джо

ReadConsole
ReadConsoleInput


А это что за процедуры? Из какого модуля?


 
Джо ©   (2006-02-22 20:08) [6]

> [5] Дева ©   (22.02.06 20:07)
> ReadConsole
> ReadConsoleInput
> А это что за процедуры? Из какого модуля?

Это WinAPI-функции для работы с консолью. Делфи-прототипы объявлены в Windows.pas.


 
Дева ©   (2006-02-22 20:12) [7]

А с клавиатурой что работает?
Меня просто интересует аналог ReadKey, быстро и сердито
Мне курсовую надо сделать на Паскале, только у меня паскаль не хочет работать с русским шрифтом напрочь! Вот и решила его сделать на Дельфи, в консоле.
Надо как-то так, чтобы долго не заморачиваясь...


 
sunwheel1   (2006-02-23 09:42) [8]

>Дева ©   (22.02.06 20:12) [7]

Только учти, что при выводе русских букв в консоли тебе придеться использовать CharToOem, иначе увидишь одни коряги вместо русских букв.


 
Tonich ©   (2006-02-23 10:57) [9]

ну вот как у меня сделано


var
Continue:BOOL;
iBuf:TInputRecord;
iEvent:DWORD;

function GetConInputHandle : THandle;
begin
 Result := GetStdHandle(STD_INPUT_HANDLE)
end;

procedure .....;
begin
  ReadConsoleInput(GetConInputHandle,iBuf,1,iEvent);
  case iBuf.EventType of

    KEY_EVENT:
             begin
               if (iBuf.Event.KeyEvent.bKeyDown) and
                  (iBuf.Event.KeyEvent.wVirtualKeyCode = VK_ESCAPE)
               then Continue := False;
             end;
  end;
end;


ну и собственно цикл обработки сообщение


 Continue := True;
 while Continue do   ProcessedEvents;


да и насчет вывода русских букв в консоле

> sunwheel1   (23.02.06 09:42) [8]



Страницы: 1 вся ветка

Текущий архив: 2006.03.12;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.011 c
2-1139552998
Ksenom
2006-02-10 09:29
2006.03.12
Проблема с TFrame


2-1140669848
Silver__Dragon
2006-02-23 07:44
2006.03.12
Выделение цветом в TLIstBox


4-1135073467
davinchi
2005-12-20 13:11
2006.03.12
Как дождаться окончания загрузки Win98


2-1140438880
Рафик
2006-02-20 15:34
2006.03.12
ntext


1-1139233538
parovoZZ
2006-02-06 16:45
2006.03.12
Файл во временную папку





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский