Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2006, 08:34   #1
NovaC
Пользователь
 
Регистрация: 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;
НЕУЖЕЛИ НЕТ БОЛЕЕ ПОСТОГО ВАРИАНТА !?!?!?
NovaC вне форума Ответить с цитированием
Старый 25.11.2006, 08:24   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

наверно нет
просто раньше в досе за это отвечали прерывания надо было просто вызвать эти прервания и всё они очищали экран и ждали нажатия клавиши, а теперь в винде в User mode нет прерываний поэтому надо использовать Api функции
rpy3uH вне форума Ответить с цитированием
Старый 01.12.2006, 18:19   #3
mihali4
*
Старожил
 
Регистрация: 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.
mihali4 вне форума Ответить с цитированием
Старый 18.12.2007, 16:54   #4
Aslan
Пользователь
 
Регистрация: 05.07.2007
Сообщений: 29
По умолчанию

И мне помогло! Спасибо! :-)
Если бы строители строили дома так, как программисты пишут программы, тогда первая залётная птичка разрушела весь город
Aslan вне форума Ответить с цитированием
Старый 19.12.2007, 12:26   #5
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

А если воспользоваться CLS консольной коммандой Win ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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