|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.11.2006, 08:34 | #1 |
Пользователь
Регистрация: 13.11.2006
Сообщений: 11
|
Аналог ClrScr & KeyPressed в Delphi
Аналог ClrScr & KeyPressed в Delphi
День добрый! Если кто знает помогите пожалуста! Как в консольном приложении в Delphi реализовать такие простые вещи как: ClrScr т.е. очистка экрана keypresssed : bool; т.е. нажатие кнопки например repeat until keypressed; В старом добром паскале задумываться об этом не приходилось! А в Delphi для для замены keypressed нашел только громозкие процедуры и функции с использованием: ReadConsoleInput(GetStdHandle(STD_O UTPUT_HANDLE), IBuff, 1, IEvent); GetNumberOfConsoleInputEvents(Conso leInput, NumberOfEvents) а для CLS такая процедура но она у меня не чистит экран: procedure Cls; var MaxX, MaxY : Word; Coord : TCoord; NOAW : DWord; begin // Получаем дескриптор вывода (output) ConsoleInput := GetStdHandle(STD_INPUT_HANDLE); // Получаем максимальные размеры окна Coord := GetLargestConsoleWindowSize(Console Input); MaxX := Coord.X; MaxY := Coord.Y; // Очистка экрана - заполнение его пробелами Coord.X := 0; Coord.Y := 0; FillConsoleOutputCharacter(ConsoleI nput, ' ', MaxX * MaxY, Coord, NOAW); // Установка курсора в координаты X, Y : Coord.X := 0; Coord.Y := 0; SetConsoleCursorPosition(ConsoleInp ut, Coord); end; НЕУЖЕЛИ НЕТ БОЛЕЕ ПОСТОГО ВАРИАНТА !?!?!? |
25.11.2006, 08:24 | #2 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
наверно нет
просто раньше в досе за это отвечали прерывания надо было просто вызвать эти прервания и всё они очищали экран и ждали нажатия клавиши, а теперь в винде в User mode нет прерываний поэтому надо использовать Api функции |
01.12.2006, 18:19 | #3 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Вот что удалось найти для консоли.
1. Очистка экрана: Нужно просто использовать GetConsoleScreenBufferInfo() для ввода нескольких пустых строк. program Project1; {$APPTYPE CONSOLE} uses Windows; {$R *.RES} var sbi : TConsoleScreenBufferInfo; i : integer; begin Writeln('A Console Applicaiton'); Writeln('Press Enter To Clear The Screen'); GetConsoleScreenBufferInfo(GetStdHa ndle(STD_OUTPUT_HANDLE), sbi); Readln; GetConsoleScreenBufferInfo(GetStdHa ndle(STD_OUTPUT_HANDLE), sbi); for i := 0 to sbi.dwSize.y do writeln; Writeln('Press Enter To End'); Readln; end. 2. Keypress: //----Этот пример отлавливает нажатие клавиши "A" //Этот код необходимо поместить в процедуру обработки таймера if GetAsyncKeyState(65)<>0 then ShowMessage('A - pressed'); Последний раз редактировалось mihali4; 01.12.2006 в 18:25. |
18.12.2007, 16:54 | #4 |
Пользователь
Регистрация: 05.07.2007
Сообщений: 29
|
И мне помогло! Спасибо! :-)
Если бы строители строили дома так, как программисты пишут программы, тогда первая залётная птичка разрушела весь город
|
19.12.2007, 12:26 | #5 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
А если воспользоваться CLS консольной коммандой Win ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
gotoxy() и clrscr() в VC ? | cout | Общие вопросы C/C++ | 7 | 24.11.2008 17:57 |
Аналог KillWatcher на Delphi | Dmitriy_ZDO | Работа с сетью в Delphi | 3 | 28.09.2008 21:42 |
Аналог with на С++. | Иллидан | Общие вопросы C/C++ | 1 | 16.05.2008 21:41 |
Keypressed | RealSHELS | Общие вопросы Delphi | 3 | 06.05.2008 21:01 |
Аналог mbsplit.ocx vb в Delphi | Арт | БД в Delphi | 1 | 11.03.2007 14:30 |