Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.032 c
4-1095284915
Wind
2004-09-16 01:48
2004.10.17
Буфер обмена


14-1096293438
QuasiLamo
2004-09-27 17:57
2004.10.17
Пинг


3-1095536017
dron-s
2004-09-18 23:33
2004.10.17
Как добавить одинаковые данные в две базы


3-1095229040
Доктор наук
2004-09-15 10:17
2004.10.17
dbExpress


4-1094996368
Sem
2004-09-12 17:39
2004.10.17
Перекодировка DOS -> Windows и обратно





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский