LINUX.ORG.RU

псевдографика


0

0

Дамы и господа!
Подскажите пожалуйста, как собственноручно вывести в консоль псевдографический символ, и что надо знать, чтобы ответить на этот вопрос?
Вот миднайт, например, выводит же как-то более менее корректно и в xterm и в  konsole под иксами и в том же текстовом режиме...

Ответ на: комментарий от ananas

да, да, есть ещё printf, но только не всё так просто по моему. Не печатает оно псевдографику.

efix
() автор топика
Ответ на: комментарий от efix

Если нужно настраиваться на разные типы терминалов, то оптимальнее всего использовать базу terminfo. А использовать ее проще всего при помощи ncurses.

Не нужно бояться делать настраиваемые программы, пусть у нее даже будет много зависимостей, но и много возможностей тоже.

Кстати, даже bash может использовать ncurses, хотя по умолчанию использует termcap. Но базы terminfo точнее чем termcap, поэтому по умолчанию у bash получается хуже. Так что ничего позорного в использовании ncurses нет.

anonymous
()
Ответ на: комментарий от efix

>> да, да, есть ещё printf, но только не всё так просто по моему.
>> Не печатает оно псевдографику.
Само собой, он выводит по коду символ _загруженного_консольного_шрифта_.
У меня загружены в консоли ДОСовские шрифты, и там псевдографические символы есть.

murla
()
Ответ на: комментарий от anonymous

> Кстати, даже bash может использовать ncurses, хотя по умолчанию > использует termcap. Но базы terminfo точнее чем termcap, поэтому по > умолчанию у bash получается хуже. Так что ничего позорного в > использовании ncurses нет.

Извините, я почитал man terminfo, но не понял, как этим пользоваться? Можно хоть один простенький примерчик? Как писать на "С" с ncurses.h я знаю, но это не подходит, потому что задача стоит сделать это на паскале (Kylix 3)

efix
() автор топика
Ответ на: комментарий от efix

> потому что задача стоит сделать это на паскале (Kylix 3)

Ну с этого и нужно было начинать. Есть несколько оболочек для ncurses, например в составе FreePascal

http://www.freepascal.org/packages/ncurses.html

Да и у Kylix самого, по-моему, была оболочка.

anonymous
()
Ответ на: комментарий от anonymous

>> потому что задача стоит сделать это на паскале (Kylix 3) 

>Ну с этого и нужно было начинать. Есть несколько оболочек для ncurses, >например в составе FreePascal 

Ещё раз прошу прощения, надо добавить, что по условиям задачи нельзя так же использовать лицензию GPL

efix
() автор топика
Ответ на: комментарий от efix

Ну а как ты думаешь сколько библиотек потащит прога, состряпанная под Кулихом? И ведь каждая из них тогда ( судя по условиям задачи ) не должна тащить за собой GPL ( точнее LGPL ). Тут уж с Кулихом накувыркаешься.

PETER ★★
()
Ответ на: комментарий от PETER

Неважно сколько, если Kylix не Open , а купленный и если использовать Delphi-часть. Тем более, что прога консольная.
Так как всё-таки быть?

efix
() автор топика
Ответ на: комментарий от efix

Ну сама-то ncurses LGPL, а что мешает вызывать C-ную библиотеку из программ на pascal'e? Тем более, что нужно всего несколько функций.

А как это делается, можно посмотреть в том же fpc модуле ncurses.

anonymous
()
Ответ на: комментарий от efix

Ну вот я вроде написал программку. С-ная библиотека нужна, так как
Delphi, насколько я понимаю не умеет импортировать глобальные переменные.

-------------------------------Project2.dpj---------------------
program Project;

{$APPTYPE CONSOLE}

type 
 chtype = longint;

procedure initscr; cdecl; external 'libncurses.so';
procedure endwin; cdecl; external 'libncurses.so';
procedure nl; cdecl; external 'libncurses.so';
function  getch: integer; cdecl; external 'libncurses.so';
function  addch(ch: chtype):integer; cdecl; external 'libncurses.so';

function  acs_ulcorner: chtype; cdecl; external './libncurs_bridge.so';
function  acs_llcorner: chtype; cdecl; external './libncurs_bridge.so';
function  acs_urcorner: chtype; cdecl; external './libncurs_bridge.so';
function  acs_lrcorner: chtype; cdecl; external './libncurs_bridge.so';
function  acs_hline: chtype; cdecl; external './libncurs_bridge.so';
function  acs_vline: chtype; cdecl; external './libncurs_bridge.so';

begin

initscr;

addch (acs_ulcorner);
addch (acs_hline);
addch (acs_urcorner);
addch (10);
addch (acs_llcorner);
addch (acs_hline);
addch (acs_lrcorner);


getch;

endwin;

end.

------------------------ncurs_bridge.c------------------
#include <curses.h>

chtype acs_ulcorner ()
{ 
  return ACS_ULCORNER;
}

chtype acs_urcorner ()
{ 
  return ACS_URCORNER;
}

chtype acs_llcorner ()
{ 
  return ACS_LLCORNER;
}

chtype acs_lrcorner ()
{ 
  return ACS_LRCORNER;
}

chtype acs_hline ()
{ 
  return ACS_HLINE;
}

chtype acs_vline ()
{ 
  return ACS_VLINE;
}

--------------------------Makefile--------------------

Project2: Project2.dpr libncurs_bridge.so
	dcc Project2.dpr

libncurs_bridge.so: ncurs_bridge.c
	gcc -shared -lncurses -o libncurs_bridge.so ncurs_bridge.c



anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.