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

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

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

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





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

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


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


Гость






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

У Фроловых в БСП был пример для ассемблера, так же и на Паскале реализуется...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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:
Прикрепленное изображение

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





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

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


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

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


Гость






> var
> Regs : Registers;

Никогда не понимал смысл этой конструкции. Код вызова прерывания выглядит с ней ну очень по-уродски. Как раз тут асм и нужен. Это конструкцию ввели какие-то ярые асмофобы.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 - это еще подумать надо. По-моему - как раз второе...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






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

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

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

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

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

 





- Текстовая версия 31.10.2020 16:07
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name