Паскаль + русские слова |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Паскаль + русские слова |
McAngel |
Сообщение
#89
|
Группа: Пользователи Сообщений: 1 Пол: Мужской Репутация: 0 |
Народ помогите плиз. У мя такая проблема. Мне надо чтобы дос-программа загружала с файла текст и выводила его на экран. Проблема в том что текст в файле набран кириллицей, пробовал и на русском и на украинском, а прога написанная мною в паскале выводит на экран всякую абракадабру.... пробовал и кб16 запускать, и кейрус, и укр рус, и как еще не пробовал не идет. А при запуске кейруса через бат файл, выскакивает досовское окно, грузит кейрус, потом пытается загрузить мою прогу, загружает ее и все символы пропадают, и ниче нельзя сделать... . ПОМОГИТЕ хоть-както
|
E.S. TOR |
Сообщение
#90
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Сергей Репутация: 0 |
Народ у меня проблема!!!
Написал программу "Тест". Компилировал в ехе фаил. Когда я его открываю, окно раскрывается не на весь экран!!! Я добавил в программу следующее: drivervar:=vga; initgraph(drivervar,modevar,'\TP\GRAPH'); settextstyle(4,1,1) closegraph; И все стало открываться как я того хотел (во весь экран), но вот не задача весь русско-язычный шрифт в программе превратился в АБРУ-КАДАБРУ!!! Как мне сохранить русские буквы при этом, чтобы программа открывалась во весь экран??? Сообщение отредактировано: E.S. TOR - |
Айра |
Сообщение
#91
|
Профи Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: 25 |
Какой компилятор? если fpc, то никак.. он в оконном и полноэкранном режиме работает с разными кодировками, насколько я знаю..
|
E.S. TOR |
Сообщение
#92
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Сергей Репутация: 0 |
Цитата Какой компилятор? если fpc, то никак.. он в оконном и полноэкранном режиме работает с разными кодировками, насколько я знаю.. Не совсем понял фразу "Какой компилятор?". Прогу я написал в Turbo Pascal, компилировал встроенным в Turbo Pascal компилятором. |
andriano |
Сообщение
#93
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
В экранном режиме изображение символов определяется Виндой, а полноэкранном - загружаемым знакогенератором EGA/VGA.
Наиболее радикальный метод лечения - перепрошивка VideoBIOS. Можно загружать знакогенератор с кириллицей и из программы, но это геморрой и, опять же, будет влиять только на полноэкранный ежим, а не на оконный, так что добиться идентичности в двух режимах - остается под вопросом. В Win9x можно было загрузить кириллический знакогенератор в формате DOS-драйвера. |
Айра |
Сообщение
#94
|
Профи Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: 25 |
Цитата Не совсем понял фразу "Какой компилятор?" компиляторы (ну может если я скажу среда разработки, понятнее будет): FPC, borland turbo pascal, turbo pascal for windows, их куча всяких разных.. Сообщение отредактировано: Айра - |
E.S. TOR |
Сообщение
#95
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Сергей Репутация: 0 |
Цитата компиляторы (ну может если я скажу среда разработки, понятнее будет): FPC, borland turbo pascal, turbo pascal for windows, их куча всяких разных.. Turbo Pascal 7.0 . Есть ли шрифты форматы *.CHR поддерживающие русские буквы, если да то где их можно достать?! Потому что мне так кажется, что сами стандартные шрифты не поддерживают русские буквы. Может если удасться найти выше указанное и вставить вот сюда settextstyle(A,1,1), где "А" название шрифта... Как вы считаете??? |
volvo |
Сообщение
#96
|
Гость |
Цитата Есть ли шрифты форматы *.CHR поддерживающие русские буквы Русифицированные шрифты - подключай и используй... |
andriano |
Сообщение
#97
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
компиляторы (ну может если я скажу среда разработки, понятнее будет): FPC, borland turbo pascal, turbo pascal for windows, их куча всяких разных.. Возможно вопрос продиктован тем обстоятельством, что отображение кириллици никак не связано с компилятором. Отображение букв - дело ОС или BIOS, но никак не компилятора. Добавлено через 16 мин. Есть ли шрифты форматы *.CHR поддерживающие русские буквы, если да то где их можно достать? Шрифты-то есть, но они будут отображаться только в графическом режиме функциями модуля graph. В текстовом же и при помощи write/writeln это вряд ли поможет.В принципе, можно написать модуль, который будет загружать кириллические таблицы в знакогенератор, притом, через секцию инициализации, так что ничего явно из программы вызывать не нужно будет, только вот при использовании конструкции drivervar:=vga;знакогенератор будет возвращаться в исходный режим. Можно, правда, использовать и дополнительную точку входа, через которую вызывать после closegraph, можно переопределить обработчик прерывания смены видеорежима и снова загружать кириллицу, только кто этим будет заниматься? DOS умер... А когда был жив, существовали русификаторы ОС, при которых какие-либо дополниельные действия в Паскале были попросту не нужны. P.S. В принципе, если бы я вел курс на основе ТР, то для своих студентов я бы написал и паскалевский русификатор, поэтому совсем не исключено, что кому-то из преподавателей так же может прийти в голову такая идея, и подобный русификатор, не смотря на свою, казалось бы, бесполезность, в природе и существует. Надо только как следует поискать в академической среде (т.к. за ее пределами такое вряд ли существует, ибо никому не нужно). |
E.S. TOR |
Сообщение
#98
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Сергей Репутация: 0 |
Цитата Русифицированные шрифты - подключай и используй... Огромное СПАСИБО!!! Но чтобы задействовать шрифты нужно знать его полное имя!!! Например: фаил TRIP.CHR его полное имя TriplexFont, значит чтобы его (фаил) прога написанная в Паскале задействовала нужно добавить следующее settextstyle(TriplexFont,1,1), а как быть с теми шрифтами, что вы мне дали? |
volvo |
Сообщение
#99
|
Гость |
Цитата а как быть с теми шрифтами, что вы мне дали? Я ж написал: подключай и используй var myFont: integer; |
Айра |
Сообщение
#100
|
Профи Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: 25 |
Цитата Возможно вопрос продиктован тем обстоятельством, что отображение кириллици никак не связано с компилятором. Насколько мне известно, fpc в оконном режиме работает с кодировкой win, а в полноэкранном - dos. А turbo pascal - всегда dos. По-моему, связь с компилятором очевидна.. |
andriano |
Сообщение
#101
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Насколько мне известно, fpc в оконном режиме работает с кодировкой win, а в полноэкранном - dos. А turbo pascal - всегда dos. По-моему, связь с компилятором очевидна.. Увы, ни то, ни другое - неверно. Нрограмма, работающая в консольном режиме вообще не работает с кодировкой. Никак. Потому, что не может. Кодировка - это, по сути, соответствие между кодом символа и картинкой, отображаемой на экране. Человек видит эту картинку, узнает в ней очертания знакомой буквы и считает, что определеннному номеру соответствует определенный символ. Другими словами, соответствие: число->картинка - определяется компьютером, картинка->символ - определяется человеком (узнавание). Так вот, какому числу соответствует какая картинка на экране определяется не прикладной программой, а либо Windows при работе программы в оконном режиме, либо BIOS - при работе в полноэкранном. Любая же консольная программа лишь определяет код последовательность кодов, выводимых на экран. Русская версия Windows, либо паневропейская с настройкой на русский язык в оконном режиме консольной программы использует кодировку 866, которая в Windows называется OEM, а в полноэкранном - Windows в вывод на экран никак не вмешивается и кодировка определяется тем, что устанавливает VideoBIOS по умолчанию, т.е. расширенный IBM вариант ASCII (номер не помню). |
Александр-7300 |
Сообщение
#102
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Реальное имя: Саша Репутация: 0 |
Подскажите как мне сделать так что бы в графическом режиме, компилятор Free Pascal, вместо эльфийских каракулей были нормальные русские буквы.
Сразу говорю шрифты менять не советуйте, если только у вас нет стандартного(нулевого шрифта) с русскими буквами. Любому совету буду рад. |
andriano |
Сообщение
#103
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
|
Александр-7300 |
Сообщение
#104
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Реальное имя: Саша Репутация: 0 |
Я, кажется, уже советовал: рисовать буковки самому. Рисовать эт конечно хорошо, но нуторно. В TP7 у меня была токая проблема, но я ее решил при помощи запуска через бат {EN_DRV.COM и свой программы} Здесь этот фокус не прошел. Шрифты я использую что здесь(FRP) что там(TP7) одинаковые, там русский язык работает здесь нет, следовательно русский язык там уже заложен. Вопрос как разобрать шрифт на составляющие? при помощи чего? И соотвественно при помощи чего создать свой шрифт? |
andriano |
Сообщение
#105
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Фонты могут браться из двух разных мест:
- из собственного файла со шрифтами, - из того, что установлено в системе. соответственно, и способы борьбы зависят от того, какой именно способ используется. Кроме того, второй способ, как нетрудно догадаться, зависит еще и от используемой ОС. Поэтому надеяться, что в двух разных продуктах, работающих в разных ОС, можно единообразно осуществлять системно зависимые вызовы, скажем так, слишком оптимистично. PS. Кстати, чем тебе не нравится выводить текст стандатрными виндовыми средствами? Практика показывает, что любое "упрощенное" решение является тем самым и менее универсальным. И в данном случае это проявляется как раз в проблемах с кириллицей. Так что вполне вероятно, что наиболее простым способом будет самый прямой - т.е. использование функций WinAPI. |
Александр-7300 |
Сообщение
#106
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Реальное имя: Саша Репутация: 0 |
Фонты могут браться из двух разных мест: - из собственного файла со шрифтами, - из того, что установлено в системе. соответственно, и способы борьбы зависят от того, какой именно способ используется. Кроме того, второй способ, как нетрудно догадаться, зависит еще и от используемой ОС. Поэтому надеяться, что в двух разных продуктах, работающих в разных ОС, можно единообразно осуществлять системно зависимые вызовы, скажем так, слишком оптимистично. PS. Кстати, чем тебе не нравится выводить текст стандатрными виндовыми средствами? Практика показывает, что любое "упрощенное" решение является тем самым и менее универсальным. И в данном случае это проявляется как раз в проблемах с кириллицей. Так что вполне вероятно, что наиболее простым способом будет самый прямой - т.е. использование функций WinAPI. Я в Freepascale ноль, так что не удивляйся, можешь привести пример с использованием WinAPI? |
andriano |
Сообщение
#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');естественно, создание и уничтожения фонта делается не на каждую строку. |
Александр-7300 |
Сообщение
#108
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Реальное имя: Саша Репутация: 0 |
вернемся к варианту а.
ты говорил что сам рисовал буковки. вопрос: в чем? |
Текстовая версия | 26.04.2024 21:51 |