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

> Правила раздела!

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

6 страниц V « < 4 5 6 >  
Closed Topic Открыть новую тему 
> Паскаль + русские слова
сообщение
Сообщение #89





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

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


Народ помогите плиз. У мя такая проблема. Мне надо чтобы дос-программа загружала с файла текст и выводила его на экран. Проблема в том что текст в файле набран кириллицей, пробовал и на русском и на украинском, а прога написанная мною в паскале выводит на экран всякую абракадабру.... пробовал и кб16 запускать, и кейрус, и укр рус, и как еще не пробовал не идет. А при запуске кейруса через бат файл, выскакивает досовское окно, грузит кейрус, потом пытается загрузить мою прогу, загружает ее и все символы пропадают, и ниче нельзя сделать... mega_chok.gif . ПОМОГИТЕ хоть-както wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #90





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

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


Народ у меня проблема!!!

Написал программу "Тест". Компилировал в ехе фаил. Когда я его открываю, окно раскрывается не на весь экран!!! Я добавил в программу следующее:
drivervar:=vga;
initgraph(drivervar,modevar,'\TP\GRAPH');
settextstyle(4,1,1)
closegraph;


И все стало открываться как я того хотел (во весь экран), но вот не задача весь русско-язычный шрифт в программе превратился в АБРУ-КАДАБРУ!!!

Как мне сохранить русские буквы при этом, чтобы программа открывалась во весь экран???

Сообщение отредактировано: E.S. TOR -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #91


Профи
****

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

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


Какой компилятор? если fpc, то никак.. он в оконном и полноэкранном режиме работает с разными кодировками, насколько я знаю..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #92





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

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


Цитата
Какой компилятор? если fpc, то никак.. он в оконном и полноэкранном режиме работает с разными кодировками, насколько я знаю..


Не совсем понял фразу "Какой компилятор?". Прогу я написал в Turbo Pascal, компилировал встроенным в Turbo Pascal компилятором.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #93


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


В экранном режиме изображение символов определяется Виндой, а полноэкранном - загружаемым знакогенератором EGA/VGA.
Наиболее радикальный метод лечения - перепрошивка VideoBIOS. Можно загружать знакогенератор с кириллицей и из программы, но это геморрой и, опять же, будет влиять только на полноэкранный ежим, а не на оконный, так что добиться идентичности в двух режимах - остается под вопросом.
В Win9x можно было загрузить кириллический знакогенератор в формате DOS-драйвера.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #94


Профи
****

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

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


Цитата
Не совсем понял фразу "Какой компилятор?"

компиляторы (ну может если я скажу среда разработки, понятнее будет): FPC, borland turbo pascal, turbo pascal for windows, их куча всяких разных..

Сообщение отредактировано: Айра -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #95





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

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


Цитата
компиляторы (ну может если я скажу среда разработки, понятнее будет): FPC, borland turbo pascal, turbo pascal for windows, их куча всяких разных..


Turbo Pascal 7.0 . Есть ли шрифты форматы *.CHR поддерживающие русские буквы, если да то где их можно достать?! Потому что мне так кажется, что сами стандартные шрифты не поддерживают русские буквы.

Может если удасться найти выше указанное и вставить вот сюда settextstyle(A,1,1), где "А" название шрифта... Как вы считаете???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #96


Гость






Цитата
Есть ли шрифты форматы *.CHR поддерживающие русские буквы

Русифицированные шрифты - подключай и используй...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #97


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Цитата(Айра @ 18.06.2008 23:03) *

компиляторы (ну может если я скажу среда разработки, понятнее будет): FPC, borland turbo pascal, turbo pascal for windows, их куча всяких разных..

Возможно вопрос продиктован тем обстоятельством, что отображение кириллици никак не связано с компилятором. Отображение букв - дело ОС или BIOS, но никак не компилятора.

Добавлено через 16 мин.
Цитата(E.S. TOR @ 18.06.2008 23:40) *
Есть ли шрифты форматы *.CHR поддерживающие русские буквы, если да то где их можно достать?
Шрифты-то есть, но они будут отображаться только в графическом режиме функциями модуля graph. В текстовом же и при помощи write/writeln это вряд ли поможет.

В принципе, можно написать модуль, который будет загружать кириллические таблицы в знакогенератор, притом, через секцию инициализации, так что ничего явно из программы вызывать не нужно будет, только вот при использовании конструкции
drivervar:=vga;
initgraph(drivervar,modevar,'\TP\GRAPH');
settextstyle(4,1,1)
closegraph;
знакогенератор будет возвращаться в исходный режим.
Можно, правда, использовать и дополнительную точку входа, через которую вызывать после closegraph, можно переопределить обработчик прерывания смены видеорежима и снова загружать кириллицу, только кто этим будет заниматься? DOS умер... А когда был жив, существовали русификаторы ОС, при которых какие-либо дополниельные действия в Паскале были попросту не нужны.

P.S. В принципе, если бы я вел курс на основе ТР, то для своих студентов я бы написал и паскалевский русификатор, поэтому совсем не исключено, что кому-то из преподавателей так же может прийти в голову такая идея, и подобный русификатор, не смотря на свою, казалось бы, бесполезность, в природе и существует. Надо только как следует поискать в академической среде (т.к. за ее пределами такое вряд ли существует, ибо никому не нужно).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #98





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

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


Цитата
Русифицированные шрифты - подключай и используй...


Огромное СПАСИБО!!! Но чтобы задействовать шрифты нужно знать его полное имя!!!
Например: фаил TRIP.CHR его полное имя TriplexFont, значит чтобы его (фаил) прога написанная в Паскале задействовала нужно добавить следующее settextstyle(TriplexFont,1,1), а как быть с теми шрифтами, что вы мне дали?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #99


Гость






Цитата
а как быть с теми шрифтами, что вы мне дали?
Я ж написал: подключай и используй smile.gif

var myFont: integer;
...
myFont = InstallUserFont('TRIP.CHR');
if myFont <> 0 then begin
SetTextStyle(myFont, 1, 1);
OutTextXY(...); { <--- Выводить текст через OutText или OutTextXY, не Write(Ln) }
...
end
else { Упс, таблица шрифтов переполнена ... }
 К началу страницы 
+ Ответить 
сообщение
Сообщение #100


Профи
****

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

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


Цитата
Возможно вопрос продиктован тем обстоятельством, что отображение кириллици никак не связано с компилятором.

Насколько мне известно, fpc в оконном режиме работает с кодировкой win, а в полноэкранном - dos. А turbo pascal - всегда dos. По-моему, связь с компилятором очевидна..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #101


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Цитата(Айра @ 19.06.2008 11:07) *

Насколько мне известно, fpc в оконном режиме работает с кодировкой win, а в полноэкранном - dos. А turbo pascal - всегда dos. По-моему, связь с компилятором очевидна..

Увы, ни то, ни другое - неверно.
Нрограмма, работающая в консольном режиме вообще не работает с кодировкой. Никак. Потому, что не может.
Кодировка - это, по сути, соответствие между кодом символа и картинкой, отображаемой на экране. Человек видит эту картинку, узнает в ней очертания знакомой буквы и считает, что определеннному номеру соответствует определенный символ.
Другими словами, соответствие:
число->картинка - определяется компьютером,
картинка->символ - определяется человеком (узнавание).
Так вот, какому числу соответствует какая картинка на экране определяется не прикладной программой, а либо Windows при работе программы в оконном режиме, либо BIOS - при работе в полноэкранном. Любая же консольная программа лишь определяет код последовательность кодов, выводимых на экран.

Русская версия Windows, либо паневропейская с настройкой на русский язык в оконном режиме консольной программы использует кодировку 866, которая в Windows называется OEM, а в полноэкранном - Windows в вывод на экран никак не вмешивается и кодировка определяется тем, что устанавливает VideoBIOS по умолчанию, т.е. расширенный IBM вариант ASCII (номер не помню).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #102


Новичок
*

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

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


Подскажите как мне сделать так что бы в графическом режиме, компилятор Free Pascal, вместо эльфийских каракулей были нормальные русские буквы.

Сразу говорю шрифты менять не советуйте, если только у вас нет стандартного(нулевого шрифта) с русскими буквами.

Любому совету буду рад.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #103


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Цитата(Александр-7300 @ 22.06.2008 20:11) *
Любому совету буду рад.
Я, кажется, уже советовал: рисовать буковки самому.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #104


Новичок
*

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

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


Цитата(andriano @ 22.06.2008 20:57) *

Я, кажется, уже советовал: рисовать буковки самому.


Рисовать эт конечно хорошо, но нуторно.

В TP7 у меня была токая проблема, но я ее решил при помощи запуска через бат {EN_DRV.COM и свой программы} Здесь этот фокус не прошел.

Шрифты я использую что здесь(FRP) что там(TP7) одинаковые, там русский язык работает здесь нет, следовательно русский язык там уже заложен.

Вопрос как разобрать шрифт на составляющие? при помощи чего?
И соотвественно при помощи чего создать свой шрифт?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #105


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Фонты могут браться из двух разных мест:
- из собственного файла со шрифтами,
- из того, что установлено в системе.
соответственно, и способы борьбы зависят от того, какой именно способ используется.
Кроме того, второй способ, как нетрудно догадаться, зависит еще и от используемой ОС.
Поэтому надеяться, что в двух разных продуктах, работающих в разных ОС, можно единообразно осуществлять системно зависимые вызовы, скажем так, слишком оптимистично.

PS. Кстати, чем тебе не нравится выводить текст стандатрными виндовыми средствами? Практика показывает, что любое "упрощенное" решение является тем самым и менее универсальным. И в данном случае это проявляется как раз в проблемах с кириллицей. Так что вполне вероятно, что наиболее простым способом будет самый прямой - т.е. использование функций WinAPI.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #106


Новичок
*

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

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


Цитата(andriano @ 22.06.2008 21:45) *

Фонты могут браться из двух разных мест:
- из собственного файла со шрифтами,
- из того, что установлено в системе.
соответственно, и способы борьбы зависят от того, какой именно способ используется.
Кроме того, второй способ, как нетрудно догадаться, зависит еще и от используемой ОС.
Поэтому надеяться, что в двух разных продуктах, работающих в разных ОС, можно единообразно осуществлять системно зависимые вызовы, скажем так, слишком оптимистично.

PS. Кстати, чем тебе не нравится выводить текст стандатрными виндовыми средствами? Практика показывает, что любое "упрощенное" решение является тем самым и менее универсальным. И в данном случае это проявляется как раз в проблемах с кириллицей. Так что вполне вероятно, что наиболее простым способом будет самый прямой - т.е. использование функций WinAPI.


Я в Freepascale ноль, так что не удивляйся,

можешь привести пример с использованием WinAPI?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #107


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Я советую WinAPI именно потому, что Freepascal к нему не имеет никакого отношения. Поэтому работа через WinAPI осуществляется совершенно одинаково при использовании любого компилятора и, более того, любого языка программирования.
см.описания к:
CreateFont
SelectObject
SetTextColor
TextOut

вызывается примерно так:
  f := CreateFont(14,0,0,0,FW_NORMAL,0,0,0,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, 0{34}, 'MS San Serif');
oldf := SelectObject(dc,f);
SetTextColor(dc,0);
TextOut(dc,r1.left,r1.top,@s1[1],length(s1));
SelectObject(dc,oldf);
DeleteObject(f);
естественно, создание и уничтожения фонта делается не на каждую строку.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #108


Новичок
*

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

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


вернемся к варианту а.
ты говорил что сам рисовал буковки.
вопрос: в чем?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

6 страниц V « < 4 5 6 >
Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





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