Некорректно отображаются русские символы

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Некорректно отображаются русские символы

Сообщение BamsikPotapov » 10.02.2012 02:29:08

Как при запуске написанного кода так и при запуске скомпилированного файла некорректно отображаются русские символы. Можно ли это исправить?
Код: Выделить всё
Program Test;
Uses wincrt,Graph;
Var gd,gm:integer;
Begin
gd:=D8bit;
gm:=m800x600;
initgraph(gd,gm,'');
if graphresult <>grOk then halt;
outtextxy(5,5,'Русский текст');
setColor ( cyan ) ;
rectangle (0 ,0 , getmaxx , getmaxy );
readkey;
closegraph;
End.
Аватара пользователя
BamsikPotapov
новенький
 
Сообщения: 54
Зарегистрирован: 31.12.2011 19:30:39
Откуда: Меня в капусте нашли

Re: Некорректно отображаются русские символы

Сообщение SSerge » 10.02.2012 05:10:36

1. Windows в полноэкранных графических режимах никаких действий с русификацией знакогенератора BIOS не предусматривает. Это не имеет отношения к free pascalю, а скорее особенность вообще. Что характерно, подавляющее большинство русификаторов для DOS тоже графические режимы не русифицирует. Из работающих - драйвер UniScr.

2. Не определен шрифт для вывода outtextxy. Строго говоря, ни один из .BGI шрифтов русские буквы отображать не обязан, но в данном случае - насколько помню - вывод идет через вызов функций BIOS, см п.1.

3. Под Windows пользуйтесь средствами Windows GDI и забудьте о существовании модуля Graph. Это - наследие давно забытых дней.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Некорректно отображаются русские символы

Сообщение BamsikPotapov » 10.02.2012 09:54:24

Понятно че такое Windows GDI, где на него описание найти. На стандартные модули инструкция на английском и написана она по простому. Я классы плохо понимаю, а точнее ваще ничера. Поэтому дай поконкретней информацию по Windows GDI и я попробую.
Аватара пользователя
BamsikPotapov
новенький
 
Сообщения: 54
Зарегистрирован: 31.12.2011 19:30:39
Откуда: Меня в капусте нашли

Re: Некорректно отображаются русские символы

Сообщение haword » 10.02.2012 10:13:42

Конвертируй в OEM текстовую строку и будет тебе счастье.
haword
постоялец
 
Сообщения: 301
Зарегистрирован: 02.03.2006 11:34:40

Re: Некорректно отображаются русские символы

Сообщение BamsikPotapov » 10.02.2012 15:27:53

А по подробней можно. А то я честно очень не хочу изучать дополнительные премудрости. Я не программист.
И если получится, то напишите пример.

Добавлено спустя 9 часов 32 минуты 28 секунд:
Я в общем почитал об этой проблеме и многие на форуах предлагают такую штуку как Geany. Говорят что с русским у компилятора fpc все норм, только вот среда его отвратительно понимает при компилляции. Но после установки Geany я так и не смог решить проблему, менял кодировки но это ни к чему не привело.

Добавлено спустя 1 час 6 минут 35 секунд:
Все я нашел решение, но только скомпилированные файлы по прежнему отображают шрифты неверно. Может кто-нибудь поможет их привинтить как следует, а о сам не могу.
http://mojainformatika.ru/uroki-paskal- ... zhime.html
Последний раз редактировалось BamsikPotapov 11.02.2012 02:37:19, всего редактировалось 1 раз.
Аватара пользователя
BamsikPotapov
новенький
 
Сообщения: 54
Зарегистрирован: 31.12.2011 19:30:39
Откуда: Меня в капусте нашли

Re: Некорректно отображаются русские символы

Сообщение Сквозняк » 11.02.2012 02:27:28

Проблема в том, что твой код такой антиквариат, что его не в каждой операционке можно запустить. Нужен специальный русский шрифт, такие где-то валялись но как их проверишь, если модуль graph не собирается из-за особенностей видеосистемы. Лучше не мучайся а попробуй вместо модуля graph использовать 2Д движок на паскале http://zengl.org/ http://wiki.freepascal.org/ZenGL_Tutorial/ru Компилировать можно без лазаруса, он там лишняя сущность. Там есть демки с русскими коментами в исходниках, в том числе вывод текста на экран, русский и английский шрифт прилагается.
Сквозняк
энтузиаст
 
Сообщения: 1126
Зарегистрирован: 29.06.2006 22:08:32

Re: Некорректно отображаются русские символы

Сообщение BamsikPotapov » 11.02.2012 02:42:56

Я посмотрел этот Zengl и не понял как его в минимальной комплектации использовать, напиши пример с выводом текста на экран. Все установил, все примеры кроме первого для Fpc не работают. Нашел уже скомпилированные файлы(на все те примеры которые не работают), конечно там все красиво. А сам не смог.
И еще я установил русские шрифты и при запуске кода они отображаются корректно, а после компилляции и загрузки exe файла они не просто не отображаются а даже одного стиля крокозябры получаются можно их заставить и в скомпилированном файле работать?
Аватара пользователя
BamsikPotapov
новенький
 
Сообщения: 54
Зарегистрирован: 31.12.2011 19:30:39
Откуда: Меня в капусте нашли

Re: Некорректно отображаются русские символы

Сообщение Сквозняк » 11.02.2012 23:55:19

BamsikPotapov писал(а):Я посмотрел этот Zengl и не понял как его в минимальной комплектации использовать, напиши пример с выводом текста на экран.

Держи zengl в минимальной комплектации, для 4 платформ. http://kran100.narod.ru/1/zengl_min.tar.gz Но поскольку виндовс далеко, в корне лежит пара сборочных скриптов только для linux_x86-64 такого содержания:
Код: Выделить всё
#!/bin/sh

#вначале удалим бинарники от прошлой компиляции
rm *.a
rm *.o
rm *.ppu
rm zengl/*.a
rm zengl/*.o
rm zengl/*.ppu

#теперь соберём демку, нужно указать путь к исходникам движка и библиотекам той платформы, для которой собираем, в примере указан путь к либам linux_x86-64
fpc demo02.pas -Fu\lib/x86_64-linux/* -Fu\zengl  -CX -O3 -Mfpc

#теперь перенесём собранный файл в bin/binarniki, оттуда его будем запускать чтобы он нашёл путь к своим картинкам и прочим файлам в каталоге bin/data
mv demo02 bin/binarniki

read -p "Нажмите Enter для продолжения..."

Напиши по этому образцу виндовый батник и будет тебе счастье.
Сквозняк
энтузиаст
 
Сообщения: 1126
Зарегистрирован: 29.06.2006 22:08:32

Re: Некорректно отображаются русские символы

Сообщение BamsikPotapov » 12.02.2012 00:25:14

Да короче уже желание пропало, столько гемороя, пойду лучше книжку почитаю или есть еще лучше занятие - лежать на диване. Спасибо всем кто помогал, видимо нужно увлекаться программированием, а по скольку я не программист для меня это так муторно. У меня терпежу не хватает, уже столько времени угрохал, думаю дальше не стоит, а то так и застрелитьс можно. Если есть маньяки напишите мне личное сообщение и по скайпу застрелимся и покажете как это все у вас просто получается, а так у меня не прокатывает. Я по своей натуре не могу изучать сверху вниз, мне всегда хочется с основ, а для этого я видимо мало читал по программированию.
Аватара пользователя
BamsikPotapov
новенький
 
Сообщения: 54
Зарегистрирован: 31.12.2011 19:30:39
Откуда: Меня в капусте нашли

Re: Некорректно отображаются русские символы

Сообщение v-t-l » 12.02.2012 10:35:37

BamsikPotapov писал(а):Я по своей натуре не могу изучать сверху вниз, мне всегда хочется с основ

Ваш код - это основы, но не для современных ОС.
v-t-l
энтузиаст
 
Сообщения: 740
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Некорректно отображаются русские символы

Сообщение BamsikPotapov » 12.02.2012 15:24:16

Я не с кем не спорю.
Но для меня современнный компиллятор это:
Фигня которая может:
1. выполнять математические операции
2. работать с файлами на простом уровне, открывать, изменять создавать файлы и папки
3. писать слова на русском языке, изменять высоту символов
4. рисовать кружки и квадратики,линии, закрашивать объекты
5. использовать мышку
И все это должно быть в стандартных модулях.
К тому же мне уже надоело что все проблемы решаются сторонними библиотеками, да блин там даже примеры на языке С. Если человек задает вопрос о модуле Graph с ним надо разговаривать как с человеком который в школьное время работал на Турбо Паскале.
У меня например нефига не получается с этой Zengl, там даже примеры вставлены с ошибками, компилятор постоянно ругается, я даже их код не могу рассмотреть и попытаться на его основе что-либо сделать.
Как я уже посмотрел в интернете примерно 5 лет обсуждается вопрос как уйти от модуля Graph и большинство полудурков на форумах советует в помощь Google, как с такими советчиками перейти от Graph на что-то другое. А про SDL так вообще скачал его с оффициального сайта, так там dll файл ну блин как я его смогу использовать, это опять околачивать форумы.
Аватара пользователя
BamsikPotapov
новенький
 
Сообщения: 54
Зарегистрирован: 31.12.2011 19:30:39
Откуда: Меня в капусте нашли

Re: Некорректно отображаются русские символы

Сообщение SSerge » 12.02.2012 16:12:24

Вы уж как то отделяйте мух от котлет... А конкретно - задача компилятора - преобразовать код на каком-то языке программирования в машинно-исполняемый код (или в какой-то промежуточный). Всё остальное - делается как раз библиотеками времени исполнения - теми самыми сторонними библиотеками. К числу прочих сторонних библиотек и относится модуль GRAPH. Который на большинстве платформ, поддерживаемых FPC, либо вообще не работает, либо работает абы как. Это - модуль для программирования в среде DOS, наследие turbo pascal 4,5,6 и 7. Как вы наверное знаете, компилятор free pascal неспособен с версии 1.02 кажется, генерировать код, способный выполняться в "чистом DOS". Если вас привлекают костылики в виде GRAPH - да ради бога! Ищите шрифты .BGI с поддержкой кириллицы, сделайте их сами в конце концов. В своё время много этому вопросу посвятил Фаронов в одной из своих книжек по Turbo Pascalю. Самый простой способ я вам озвучивал - вгрузить в консоль DOS русификатор UniScr. Для Turbo/Borland Pascal срабатывало, для fpc - не уверен, ибо процесс не является DOS-процессом.

Современное представление о всем этом следующее:

- Есть операционная система с поддержкой оконной графики. Любой вывод графики помимо средств, предусмотренных для этого операционной системой, либо запрещен либо не приветствуется.
- Язык программирования работает для вывода графики либо непосредственно с API функциями операционной системы (unit windows), либо через специально сделанные программно-интерфейсные прослойки (The Lazarus Project), упрощающие взаимодействия ввиду в первую очередь того, что API Windows - вещь абсолютно чуждая по идеологии и по реализации для языка программирования Pascal.

- если необходимы обходные пути, требующие быстрой графики либо работ с трехмерными построениями - в руки вам библиотеки для OpenGL и DirectX. Одна неприятность - это C/C++ SDK, опять же чуждые паскалесвким методам вызова.
Это - все легальные пути для получения графики в Windows. Напрямую с устаревшими режимами графического адаптера, которые, вообще то могут и не поддерживаться, ибо это всего лишь ответвление стандарта - VESA VGA (и не работали, кстати во времена DOS, иногда) работать теоретически можно, до определенных версий операционных систем. Windows 7, по теории, должна вышвырнуть вас из режима прямого запроса доступа к памяти адаптера и сообщить, что это запрещено.

Хотите перейти от Graph на что то другое? Ради бога! Прочтите какую-нибудь книжку про Delphi, в большинстве из них есть главы, посвященные тому, как выводить графику.

На компьютерах типа Spectrum вообще не было стандартного русскоязычного знакогенератора, ну и что? Кому надо было, легко решали задачу методом написания собственных процедур для вывода... Пора уж привыкнуть, что русский язык по востребованности в каких либо системных библиотеках отстоит далее чем Зулу и Санскрит. :)
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Некорректно отображаются русские символы

Сообщение BamsikPotapov » 12.02.2012 17:41:58

А почему никто не может проситать предыдущие сообщения, я же написал что поставил русские шрифты, они работают, но при создании exe файла снова перестают отображаться, может кто скажет почему.
Скажу иначе если не до кого не допирает. Мое мнение что человек который обладает примитивными знаниями программирования(модули Graph,Crt) вряд ли с особым усердием будет изучать стороннюю библиотеку. Да я напишу программу и может потом год не буду подходить к компьютеру, и что мне из-за разового применения читать книгу.
В конце концов могли сказать кто знает как запустить русские шрифты, я же выложил ссылку где их скачать. Помогите, ведь у всех советчиков вроде ума достаточно. Либо напишите конкретно пример использования какой-нибудь библиотеки. А то я установил Zengl и при запуске примеров для fpc по меньшей мере 5 ошибок на каждый пример, и как их решить я не понимаю. Кругом примеры на С для библиотек. Я не могу разобраться, пришел домой после работы и думаю куда мне тратить вечер на свои увлечения или сидеть у монитора и чесать репу. Вместо этого кто-нибудь мог бы поконкретней написать, а то вся эта пурга с перекодировкой с форумов вставляешь код и ошибка за ошибкой.
Я не хочу чтобы тратиь все свободное время на компьютер. А хочу чтобы мне помогли таким образом
1. скачай такой-то файл, положи его в папку unit
2. напиши uses superpupergraph;
begin
initsuperpuper(2,4,9);
superrectangle(0,0,78,78)
supertext(50,50,'Ура русский')
end.
Примерно в таком виде.
Я вообще электрик и сидеть у монитора без дела мне прикола нет. У вас эти решения отработаны, почему нельзя объяснить как школьнику.
Аватара пользователя
BamsikPotapov
новенький
 
Сообщения: 54
Зарегистрирован: 31.12.2011 19:30:39
Откуда: Меня в капусте нашли

Re: Некорректно отображаются русские символы

Сообщение Padre_Mortius » 12.02.2012 18:22:55

BamsikPotapov писал(а):А почему никто не может проситать предыдущие сообщения, я же написал что поставил русские шрифты, они работают, но при создании exe файла снова перестают отображаться, может кто скажет почему.


Используемые шрифты положите в папку с вашим exe-файлом и все будет работать
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Некорректно отображаются русские символы

Сообщение BamsikPotapov » 12.02.2012 18:32:37

Только сейчас допер. Что шрифты нужно положить в папку с моим exe файлом, а я их ложил в папку где fpc.exe. Все теперь идет, я думал что он их сразу прикрутит к файлу.
И еще читал на других форумах что Graph модуль который идет с FPC нефига не Борландовский, а чисто FPC-шный, и он только по синтаксису похож на Борландовский. Это так или все пишут что не так это из-за того что все так говорят или это так и есть.
А как скомпилировать программу к примеру под Linux? Я это попытался сделать но появилась ошибка что не найден модуль System, в своем fpc я открыл папку модули и там папка для win32, значит мне туды нужно еще положить и для Linux, если так то как это сделать, или так просто компилировать под разные системы нельзя.
Аватара пользователя
BamsikPotapov
новенький
 
Сообщения: 54
Зарегистрирован: 31.12.2011 19:30:39
Откуда: Меня в капусте нашли

След.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru