Паскаль + русские слова |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Паскаль + русские слова |
andriano |
19.06.2008 18:23
Сообщение
#101
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Насколько мне известно, fpc в оконном режиме работает с кодировкой win, а в полноэкранном - dos. А turbo pascal - всегда dos. По-моему, связь с компилятором очевидна.. Увы, ни то, ни другое - неверно. Нрограмма, работающая в консольном режиме вообще не работает с кодировкой. Никак. Потому, что не может. Кодировка - это, по сути, соответствие между кодом символа и картинкой, отображаемой на экране. Человек видит эту картинку, узнает в ней очертания знакомой буквы и считает, что определеннному номеру соответствует определенный символ. Другими словами, соответствие: число->картинка - определяется компьютером, картинка->символ - определяется человеком (узнавание). Так вот, какому числу соответствует какая картинка на экране определяется не прикладной программой, а либо Windows при работе программы в оконном режиме, либо BIOS - при работе в полноэкранном. Любая же консольная программа лишь определяет код последовательность кодов, выводимых на экран. Русская версия Windows, либо паневропейская с настройкой на русский язык в оконном режиме консольной программы использует кодировку 866, которая в Windows называется OEM, а в полноэкранном - Windows в вывод на экран никак не вмешивается и кодировка определяется тем, что устанавливает VideoBIOS по умолчанию, т.е. расширенный IBM вариант ASCII (номер не помню). |
Александр-7300 |
22.06.2008 19:11
Сообщение
#102
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Реальное имя: Саша Репутация: 0 |
Подскажите как мне сделать так что бы в графическом режиме, компилятор Free Pascal, вместо эльфийских каракулей были нормальные русские буквы.
Сразу говорю шрифты менять не советуйте, если только у вас нет стандартного(нулевого шрифта) с русскими буквами. Любому совету буду рад. |
andriano |
22.06.2008 19:57
Сообщение
#103
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
|
Александр-7300 |
22.06.2008 20:15
Сообщение
#104
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Реальное имя: Саша Репутация: 0 |
Я, кажется, уже советовал: рисовать буковки самому. Рисовать эт конечно хорошо, но нуторно. В TP7 у меня была токая проблема, но я ее решил при помощи запуска через бат {EN_DRV.COM и свой программы} Здесь этот фокус не прошел. Шрифты я использую что здесь(FRP) что там(TP7) одинаковые, там русский язык работает здесь нет, следовательно русский язык там уже заложен. Вопрос как разобрать шрифт на составляющие? при помощи чего? И соотвественно при помощи чего создать свой шрифт? |
andriano |
22.06.2008 20:45
Сообщение
#105
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Фонты могут браться из двух разных мест:
- из собственного файла со шрифтами, - из того, что установлено в системе. соответственно, и способы борьбы зависят от того, какой именно способ используется. Кроме того, второй способ, как нетрудно догадаться, зависит еще и от используемой ОС. Поэтому надеяться, что в двух разных продуктах, работающих в разных ОС, можно единообразно осуществлять системно зависимые вызовы, скажем так, слишком оптимистично. PS. Кстати, чем тебе не нравится выводить текст стандатрными виндовыми средствами? Практика показывает, что любое "упрощенное" решение является тем самым и менее универсальным. И в данном случае это проявляется как раз в проблемах с кириллицей. Так что вполне вероятно, что наиболее простым способом будет самый прямой - т.е. использование функций WinAPI. |
Александр-7300 |
23.06.2008 7:42
Сообщение
#106
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Реальное имя: Саша Репутация: 0 |
Фонты могут браться из двух разных мест: - из собственного файла со шрифтами, - из того, что установлено в системе. соответственно, и способы борьбы зависят от того, какой именно способ используется. Кроме того, второй способ, как нетрудно догадаться, зависит еще и от используемой ОС. Поэтому надеяться, что в двух разных продуктах, работающих в разных ОС, можно единообразно осуществлять системно зависимые вызовы, скажем так, слишком оптимистично. PS. Кстати, чем тебе не нравится выводить текст стандатрными виндовыми средствами? Практика показывает, что любое "упрощенное" решение является тем самым и менее универсальным. И в данном случае это проявляется как раз в проблемах с кириллицей. Так что вполне вероятно, что наиболее простым способом будет самый прямой - т.е. использование функций WinAPI. Я в Freepascale ноль, так что не удивляйся, можешь привести пример с использованием WinAPI? |
andriano |
23.06.2008 19:41
Сообщение
#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 |
25.06.2008 12:05
Сообщение
#108
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Реальное имя: Саша Репутация: 0 |
вернемся к варианту а.
ты говорил что сам рисовал буковки. вопрос: в чем? |
andriano |
26.07.2008 20:28
Сообщение
#109
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
|
internet |
16.04.2009 13:00
Сообщение
#110
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Мужской Реальное имя: Сергей Репутация: 0 |
|
RathaR |
23.07.2009 20:18
Сообщение
#111
|
Знаток Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: Иван Репутация: 7 |
эм... была у меня проблема с русской кодировкой в TP, благо эта тема помогла - решил её, но вот возникла точно такаяже проблема в Turbo Delphi Explorer - работаю в ней в консольном режиме, на языке паскаль
Всё тоже самое что и в паскале, вместо слов пишет иерохлифы и буквы врозброс... Подскажите как с этим быть -------------------- Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик! Я - системный аналитик! |
Текстовая версия | 17.11.2024 14:24 |