IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Новый символ
manhunt
сообщение 19.01.2011 15:49
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Для программы нужен красивый символ)). Возможно ли создать в паскале символ notx4 токо чтоб было не так "notx4", а Х в нижнем регистре 4 и над иксом отрицание. Возможно ли такое и с помощю каких средств? Спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.01.2011 16:01
Сообщение #2


Гость






Можно попробовать (если Турбо-Паскаль, разумеется) через $10 прерывание (если не ошибаюсь, функция $11), там есть возможность загрузить пользовательский шрифт или его часть... Для этого надо будет описать символ в виде последовательности байтов (одна строка матрицы символа = один байт).

У Фроловых в БСП был пример для ассемблера, так же и на Паскале реализуется...
 К началу страницы 
+ Ответить 
volvo
сообщение 19.01.2011 20:36
Сообщение #3


Гость






Вот так, например:

uses Dos;

procedure Reg_Table (var Table; Where : Integer);
var
Regs : Registers;
begin
with Regs do
begin
AX := $1100;
BX := $0E00;
CX := 1;
DX := Where;
BP := Ofs (Table);
ES := Seg (Table);
Intr ($10, Regs);
end;
end;

const
New_Sym : array[1 .. 14] of Byte =
( $FF, $00, $88, $50, $20, $55, $57, $89,
$00, $00, $00, $00, $00, $00 );

begin
Reg_Table (New_Sym, 254);
WriteLn(Chr(254));
end.
, из-под DOSBox-а выглядит чем-то напоминающим отрицание X4 (художник из меня - никакой, да и в 14 линий по 8 пикселов вряд-ли можно что-то сверхкрасивое уложить. Попробуй, может у тебя получится)

DOSBox:
Прикрепленное изображение

Напрямую из проводника, естественно, работать не будет...
 К началу страницы 
+ Ответить 
manhunt
сообщение 19.01.2011 21:10
Сообщение #4





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Цитата
Попробуй, может у тебя получится

Извините за нелепый вопрос, но где можно прочесть об етом, возможно есть какието разделы о создании новых символов или ето нужно рисовать в модуле graph??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-TarasBer-
сообщение 19.01.2011 21:29
Сообщение #5


Гость






> var
> Regs : Registers;

Никогда не понимал смысл этой конструкции. Код вызова прерывания выглядит с ней ну очень по-уродски. Как раз тут асм и нужен. Это конструкцию ввели какие-то ярые асмофобы.
 К началу страницы 
+ Ответить 
volvo
сообщение 19.01.2011 21:33
Сообщение #6


Гость






Никакой модуль граф не нужен. Если тебе нужен символ в текстовом режиме - то делаешь так: берешь лист бумаги в клетку, и очерчиваешь область размером 8 (ширина) на 14 (высота) клеток. И потом в ней рисуешь. Вот что у меня получилось (точки - пустые пиксели, звездочки - закрашенные) :


********
........
*...*...
.*.*....
..*.....
.*.*.*.*
.*.*.***
*...*..*
........
........
........
........
........
........
(я сначала нарисовал 8 на 8, потом вспомнил, что надо 14 строк, а перерисовывать не хотелось, я просто обнулил все линии). А потом, когда нарисовал все, что хотел, надо перевести это в нужный формат. Каждая строка - байт, т.е., 8 бит. Есть точка - 1, нет точки - 0.

Первая строка: 8 единиц = 11111111 - это $FF.
Вторая строка - 8 нулей, это $00. Третья - 10001000, переводим в 16-ричную форму - получаем $88, и так далее... Записываешь результаты в массив и запускаешь программу, смотришь, что получилось...

Добавлено через 4 мин.
Цитата
Как раз тут асм и нужен
Асм (встроенный) вообще нигде не нужен. Только полностью ассемблерные программы. Он непереносим (ни между ОСями, ни между компиляторами), следовательно очень неудобен... А что больше выглядит по-уродски - Intr($10, Regs) или программа на Паскале, состоящая наполовину из asm/mov/add/sub - это еще подумать надо. По-моему - как раз второе...
 К началу страницы 
+ Ответить 
-TarasBer-
сообщение 19.01.2011 21:51
Сообщение #7


Гость






> Он непереносим (ни между ОСями, ни между компиляторами), следовательно очень неудобен...

Это код почти прямого обращения к функциям системы. Обёртка только - функция Intr. В других компиляторах есть другие её реализации, например, эмулирующие всю таблицу прерываний через функции из dll?

> или программа на Паскале, состоящая наполовину из asm/mov/add/sub

Надо понимать, что хоть применения асма и надо избегать как только можно, но в некоторых местах он смотрится как родной.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 18:41
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"