Другие языки программирования и технологии
Помогите пожалуйста в Delphi написать программу
Вывести символ "n" в позициях (n,n) цветом n, если это возможно. В противном случае выдать соответствующее сообщение.
program ConsoleApp;
{$APPTYPE CONSOLE}
uses
Windows;
var
n : Char;
x, y : Smallint;
Color : Byte;
procedure GoToXY(X, Y: Smallint);
var
NewPos : TCoord;
begin
NewPos.X := X;
NewPos.Y := Y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), NewPos);
end;
procedure TextColor(Color: Byte);
var
TextAttr : WORD;
begin
TextAttr := (TextAttr and $F0) or (Color and $0F);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), TextAttr);
end;
begin
Write('Symbol: ');
ReadLn(n);
Write('X, Y: ');
ReadLn(x, y);
Write('Color: ');
ReadLn(Color);
GoToXY(x, y);
TextColor(Color); //0-15
Write(n);
ReadLn;
end.
Сообщения об ошибках оставляю тебе. Тут нужно проверить переменную Color(0-15) и координаты чтобы за пределы не выходили (отсчёт от нуля) .
Высоту и ширину экрана можно получить из этой функции:
procedure GetScreenSizes(var Width, Height: Smallint);
var
BufferInfo: TConsoleScreenBufferInfo;
begin
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), BufferInfo);
Width := BufferInfo.srWindow.Right - BufferInfo.srWindow.Left + 1;
Height := BufferInfo.srWindow.Bottom - BufferInfo.srWindow.Top + 1;
end;
ЗЫ: Всё разжевал. Тут только полный дурак не разберётся как всё собрать воедино. Если не разберёшься, то пиши на почту. За 50 руб. напишу готовую ;-)
{$APPTYPE CONSOLE}
uses
Windows;
var
n : Char;
x, y : Smallint;
Color : Byte;
procedure GoToXY(X, Y: Smallint);
var
NewPos : TCoord;
begin
NewPos.X := X;
NewPos.Y := Y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), NewPos);
end;
procedure TextColor(Color: Byte);
var
TextAttr : WORD;
begin
TextAttr := (TextAttr and $F0) or (Color and $0F);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), TextAttr);
end;
begin
Write('Symbol: ');
ReadLn(n);
Write('X, Y: ');
ReadLn(x, y);
Write('Color: ');
ReadLn(Color);
GoToXY(x, y);
TextColor(Color); //0-15
Write(n);
ReadLn;
end.
Сообщения об ошибках оставляю тебе. Тут нужно проверить переменную Color(0-15) и координаты чтобы за пределы не выходили (отсчёт от нуля) .
Высоту и ширину экрана можно получить из этой функции:
procedure GetScreenSizes(var Width, Height: Smallint);
var
BufferInfo: TConsoleScreenBufferInfo;
begin
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), BufferInfo);
Width := BufferInfo.srWindow.Right - BufferInfo.srWindow.Left + 1;
Height := BufferInfo.srWindow.Bottom - BufferInfo.srWindow.Top + 1;
end;
ЗЫ: Всё разжевал. Тут только полный дурак не разберётся как всё собрать воедино. Если не разберёшься, то пиши на почту. За 50 руб. напишу готовую ;-)
В текстовом виде это довольно сложно, поскольку Delphi не умеет управлять прямо очисткой экрана, цветом и положением курсора. А на форме все несколько проще:
OutputPossible:=(n>=0) and (n<=Width) and (n<=Height);
if OutputPossible then
with TLabel.Create(self) do
begin
Caption:='n';
Parent:=self;
Left:=n;
Top:=n;
Font.Color:=n;
end
else
ShowMessage('The output is impossible');
OutputPossible:=(n>=0) and (n<=Width) and (n<=Height);
if OutputPossible then
with TLabel.Create(self) do
begin
Caption:='n';
Parent:=self;
Left:=n;
Top:=n;
Font.Color:=n;
end
else
ShowMessage('The output is impossible');
Похожие вопросы
- Помогите пожалуйста по алгоритмам. Написать программу.
- Помогите пожалуйста! Рекурсия (Delphi).
- Помогите по C# плиз, напишите программу по теме "Циклы". Задание ниже
- помоги пожалуйста! ты можешь через программу fotoshop поменять мне цифру в паспорте с 1999 по 1996?
- Помогите, пожалуйста, найти ошибку в программе сортировки стека (по убыванию ) на Си.
- помогите пожалуйста! блокировался Windows,написано для разблокировки отправить sms на номер 3649. в комп вообще невойти
- Как написать программу на Delphi программа которая бы постоянно висело в памяти и через определенное
- помогите написать программу на Delphi
- помогите пожалуйста составить программу на Delphi/
- Помогите пожалуйста с программой на DELPHI