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

Вниз

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

 
Artemka   (2004-10-05 01:30) [0]

Очень терзает меня такой вопрос: как в консольном приложении сменить цвет символов? Без ассемблера не обойтись?


 
GanibalLector ©   (2004-10-05 02:02) [1]

http://www.delphimaster.ru/articles/console.html

Там все есть.И еще,ТУДА надо почаще заходить!


 
П7   (2004-10-05 11:12) [2]

Прочитал статью, только у меня там что-то не всё получается. Кто разобрался - не могли бы привести простенький РАБОТАЮЩИЙ примерчик вывода разноцветных символов? А то что бы не делал, либо какая-то бодяга отображается, либо стандартные цвета... ):


 
Amoeba ©   (2004-10-05 11:22) [3]

Если поискать в сети, то можно даже найти библиотеки для написания консольных приложений эмулирующие ф-ии  и процедуры модуля CRT из TurboPascal.


 
DiamondShark ©   (2004-10-05 11:24) [4]

program Project1;
{$APPTYPE CONSOLE}
uses SysUtils, Windows;

const
 Text: PChar = "Однажды в студёную зимнюю пору..."#13#10;
var
 hOut: THandle;
 Dummy: DWORD;
begin
 hOut := GetStdHandle(STD_OUTPUT_HANDLE);
 WriteConsole(hOut, Text, StrLen(Text), Dummy, nil);
 SetConsoleTextAttribute(hOut, BACKGROUND_BLUE or FOREGROUND_GREEN);
 WriteConsole(hOut, Text, StrLen(Text), Dummy, nil);
 readln;
end.

А вообще-то, справка, раздел Console Functions


 
П7   (2004-10-05 11:27) [5]


> DiamondShark ©   (05.10.04 11:24) [4]

Спасибо. А чё там за трабла с выводим букв? Он, вероятно хочет в DOS"кодировке выводить? Можно ли настроить, чтобы он выводил в Win или изменить кодировку IDE-редактора?


 
DiamondShark ©   (2004-10-05 12:19) [6]


> А чё там за трабла с выводим букв? Он, вероятно хочет в
> DOS"кодировке выводить?

Да.


> Можно ли настроить, чтобы он выводил в Win или изменить
> кодировку IDE-редактора?

Можно, конечно, набирать в OEM кодировке.
Можно перед выводом преобразовывать.


 
П7   (2004-10-05 15:39) [7]

Ясно, единственный нормальный способ решения этой проблемы, который я сейчас вижу, это хранение всей текстовой информации в отдельном файле в DOS кодировке.

У меня возникла проблема с вводом. Взял из статьи исходник функции ввода, у меня олна выглядит вот так:

function P7Console.Read() : string;
var
 a : byte;
 Wr : Cardinal;
 // InpStr объявлена в самом классе, как и hInp
begin
 repeat
   a := 0;
   WaitForSingleObjectEx( hInp, INFINITE, True );
   ReadConsole( hInp, @a, 1, Wr, nil );
   if a > 31 then
     InpStr := InpStr + chr(a);
   if a = 8 then
   begin
     Delete( InpStr, Length( InpStr ), 1 );
     if Length( InpStr ) > 0 then
WriteConsole( hOut, @BckSpSeq, Length(BckSpSeq), Wr, nil );
   end
   else
     WriteConsole( hOut, @a, 1, Wr, nil );
 until a = 13;
 Result := InpStr;
end;

В статье она была явно либо Char либо String, но тут это не важно, хотя я так тоже пробовал.
Проблема в следующем, при нажатии ENTER (#13), если нажития уже производились (InpStr <> ""), возвращается странное значение...
В общем что-то с ReadConsole, но что? Я не знаю...

Опять же, есть ли готовый пример НОРМАЛЬНОЙ работы с ReadConsole, т.к. использовать низкоуровневый ввод я не хочу... ):

Извиняюсь за настырность, заранее благодарен.. (:


 
П7   (2004-10-05 16:08) [8]

Мастера, ну очень нужно, подскажите... (:


 
П7   (2004-10-05 16:17) [9]

И ещё вот, когда выводишь символы с помощью WriteConsole, то он автоматически делает перевод каретки на новую строку. Как выводить символ так, чтобы курсор оставался на месте?


 
panov ©   (2004-10-05 19:02) [10]

>П7   (05.10.04 16:17) [9]
Свои вопросы в других ветках.



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

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

Наверх




Память: 0.49 MB
Время: 0.04 c
3-1095674888
Nick-From
2004-09-20 14:08
2004.10.17
Firebird 1.0 спотыкается на TIME


1-1096560226
Никита
2004-09-30 20:03
2004.10.17
Извлечь цифру из строки


1-1096490039
Jus
2004-09-30 00:33
2004.10.17
Как при сохранении файла проверить наличие файла с этим же именем


1-1096754760
delphi-coder
2004-10-03 02:06
2004.10.17
Перевод любого файла в HEX


4-1094634349
TeNY
2004-09-08 13:05
2004.10.17
Как получить список анимации у Анимированного персонажа Microsoft