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

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

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

6 страниц V « < 4 5 6  
Closed Topic Открыть новую тему 
> Паскаль + русские слова
andriano
сообщение 19.06.2008 18:23
Сообщение #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 
 К началу страницы 
+ Ответить 
Александр-7300
сообщение 22.06.2008 19:11
Сообщение #102


Новичок
*

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

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


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

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

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


Гуру
*****

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

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


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


Новичок
*

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

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


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

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


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

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

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

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


Гуру
*****

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

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


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

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


Новичок
*

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

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


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

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

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


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

можешь привести пример с использованием WinAPI?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
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');
oldf := SelectObject(dc,f);
SetTextColor(dc,0);
TextOut(dc,r1.left,r1.top,@s1[1],length(s1));
SelectObject(dc,oldf);
DeleteObject(f);
естественно, создание и уничтожения фонта делается не на каждую строку.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Александр-7300
сообщение 25.06.2008 12:05
Сообщение #108


Новичок
*

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

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


вернемся к варианту а.
ты говорил что сам рисовал буковки.
вопрос: в чем?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 26.07.2008 20:28
Сообщение #109


Гуру
*****

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

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


Цитата(Александр-7300 @ 25.06.2008 13:05) *

вернемся к варианту а.
ты говорил что сам рисовал буковки.
вопрос: в чем?

Я рисовал буковки в экранном буфере, а по завершении - перебрасывал его на экран.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
internet
сообщение 16.04.2009 13:00
Сообщение #110


Новичок
*

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

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


Цитата(Ivs @ 12.01.2003 1:53) *

Ребята, а вы Ctrl+Shift(правый) пробовали ?  ;D

теперь попробовал. ВО всё получилось,спасибо!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
RathaR
сообщение 23.07.2009 20:18
Сообщение #111


Знаток
****

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

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


эм... была у меня проблема с русской кодировкой в TP, благо эта тема помогла - решил её, но вот возникла точно такаяже проблема в Turbo Delphi Explorer - работаю в ней в консольном режиме, на языке паскаль smile.gif
Всё тоже самое что и в паскале, вместо слов пишет иерохлифы и буквы врозброс...
Подскажите как с этим быть rolleyes.gif


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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