Форум: "Основная";
Текущий архив: 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.038 c