<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=41972&amp;view=findpost&amp;p=690195</guid>
        <pubDate>Thu, 21 Apr 2005 10:52:38 +0000</pubDate>
        <title>Кириллизация в Паскале</title>
        <link>https://forum.sources.ru/index.php?showtopic=41972&amp;view=findpost&amp;p=690195</link>
        <description><![CDATA[Romtek: <span class="tag-color tag-color-named" data-value="blue" style="color: blue"><strong class='tag-b'><span class='tag-size' data-value='11' style='font-size:11pt;'>Перевод из одной кодировки в другую</span></strong></span><br>
<br>
Иногда мы сталкиваемся с необходимостью перевода из одной кодировки в другую. Например, когда надо сгенерировать программой отчёт, который можно было бы читать в Notepad&#39;e и других приложениях Windows (DOS -&gt; WIN).<br>
Или, наоборот, прочитать файл, сохранённый в Notepad&#39;e. Тогда нужно перевести из WIN -&gt; DOS.<br>
<br>
<strong class='tag-b'>Примечание</strong>:<br>
<em class='tag-i'>DOS</em> = OEM = CP866<br>
<em class='tag-i'>WIN</em> = ANSI = Windows-1251<br>
<br>
Перевод осуществляется такими функциями:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Function OemToAnsi(S:String):String;</div><div class="code_line">{ DOS -&#62; WIN }</div><div class="code_line">Function AnsiToOem(S:String):String;</div><div class="code_line">{ WIN -&#62; DOS }</div><div class="code_line">Function OemToKoi(S:String):String;</div><div class="code_line">{ DOS -&#62; KOI8r }</div><div class="code_line">Function KoiToOem(S:String):String;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
В приведённом примере в файл <em class='tag-i'>output.txt</em> записываются 2 строки: одна в кодировке DOS (никаких функций не нужно), другая - WIN (функция <em class='tag-i'>OemToAnsi</em>)<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">(* Автор программы неизвестен *)</div><div class="code_line">&nbsp;</div><div class="code_line">uses Objects;</div><div class="code_line">&nbsp;</div><div class="code_line">const</div><div class="code_line">&nbsp;&nbsp;XlatTable: array[0..2] of String[66] = (</div><div class="code_line">{DOS}&#39;ЂЃ‚ѓ„…†‡?‰Љ‹ЊЌЋЏђ‘’“”•–—&#732;™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Їабвгдежзийклмнопрс&#39;,</div><div class="code_line">{WIN}&#39;АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяЁё&#39;,</div><div class="code_line">{KOI}&#39;бвчздецъйклмнопртуфхжигюыэшщшьасБВЧЗДЕЦЪЙКЛМНОПРТУФХЖИГЮЫЭЯЩШЬАСеЕ&#39;</div><div class="code_line">&nbsp;&nbsp;);</div><div class="code_line">&nbsp;</div><div class="code_line">{ ID`s of conversion tables }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;xTblDos=0; xTblWin=1; xTblKoi=2;</div><div class="code_line">&nbsp;</div><div class="code_line">{--------------------------------------------}</div><div class="code_line">function XltStr(S: String; SourTable,DestTable: Integer): String;</div><div class="code_line">var I, Idx: Integer;</div><div class="code_line">&nbsp;&nbsp; &nbsp;SourceChars, DestChars: PString;</div><div class="code_line">begin</div><div class="code_line">&nbsp;if not(SourTable in [0..2]) or not(DestTable in [0..2]) then</div><div class="code_line">&nbsp;&nbsp;begin XltStr:=S; exit; end;</div><div class="code_line">&nbsp;SourceChars:= @XlatTable[SourTable];</div><div class="code_line">&nbsp;DestChars &nbsp;:= @XlatTable[DestTable];</div><div class="code_line">&nbsp;for I:= 1 to Length(S) do</div><div class="code_line">&nbsp;&nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; Idx:= Pos(S[I],SourceChars^);</div><div class="code_line">&nbsp;&nbsp; &nbsp; if Idx &#60;&#62; 0 then S[I]:= DestChars^[Idx];</div><div class="code_line">&nbsp;&nbsp; end;</div><div class="code_line">&nbsp;XltStr:= S;</div><div class="code_line">end;</div><div class="code_line">{--------------------------------------------}</div><div class="code_line">Function OemToAnsi(S:String):String;</div><div class="code_line">begin</div><div class="code_line">&nbsp;OemToAnsi:=XltStr(S,xTblDos,xTblWin);</div><div class="code_line">end;</div><div class="code_line">{--------------------------------------------}</div><div class="code_line">Function AnsiToOem(S:String):String;</div><div class="code_line">begin</div><div class="code_line">&nbsp;AnsiToOem:=XltStr(S,xTblWin,xTblDos);</div><div class="code_line">end;</div><div class="code_line">{--------------------------------------------}</div><div class="code_line">Function OemToKoi(S:String):String;</div><div class="code_line">begin</div><div class="code_line">&nbsp;OemToKoi:=XltStr(S,xTblDos,xTblKoi);</div><div class="code_line">end;</div><div class="code_line">{--------------------------------------------}</div><div class="code_line">Function KoiToOem(S:String):String;</div><div class="code_line">begin</div><div class="code_line">&nbsp;KoiToOem:=XltStr(S,xTblKoi,xTblDos);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; Assign (Output, &#39;output.txt&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; Rewrite (Output);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; { DOS (OEM) }</div><div class="code_line">&nbsp;&nbsp; &nbsp; writeln (&#39;Test ’Ґбв&#39;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; { Win (ANSI) }</div><div class="code_line">&nbsp;&nbsp; &nbsp; writeln (OemToAnsi(&#39;Test ’Ґбв&#39;));</div><div class="code_line">&nbsp;&nbsp; &nbsp; Close (Output);</div><div class="code_line">end.</div></ol></div></div></div></div>]]></description>
        <author>Romtek</author>
        <category>Pascal: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=41972&amp;view=findpost&amp;p=491181</guid>
        <pubDate>Sun, 24 Oct 2004 12:25:42 +0000</pubDate>
        <title>Кириллизация в Паскале</title>
        <link>https://forum.sources.ru/index.php?showtopic=41972&amp;view=findpost&amp;p=491181</link>
        <description><![CDATA[KiRiK: Есть фенька попроще. Скачиваем програмку <a class='tag-url' href='http://pascal.sources.ru/incoming/windowsxp.zip' target='_blank'>http://pascal.sources.ru/incoming/windowsxp.zip</a>., запускаем ее, ищем кнопочку &quot;Русификация DOS&quot;. Все должно работать.]]></description>
        <author>KiRiK</author>
        <category>Pascal: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=41972&amp;view=findpost&amp;p=274044</guid>
        <pubDate>Fri, 02 Jan 2004 04:08:12 +0000</pubDate>
        <title>Кириллизация в Паскале</title>
        <link>https://forum.sources.ru/index.php?showtopic=41972&amp;view=findpost&amp;p=274044</link>
        <description><![CDATA[@Hgpeu: &quot;А что сделать, чтобы помощь была русская&quot;(про tp7)<br>
Заменить файл turbo.tph на <a class='tag-url' href='http://pascal.sources.ru/docs/tp7hlp_r.zip' target='_blank'>этот</a><br>
<br>
ps Вначале закачивал файл вручную не посмотрев на размер. Вывелось сообщение &quot;Вы не можите закачать такой файл&quot;. Писали бы, что размер сильно большой (364 кб), а то до меня только после 2ого раза дошло.]]></description>
        <author>@Hgpeu</author>
        <category>Pascal: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=41972&amp;view=findpost&amp;p=274021</guid>
        <pubDate>Fri, 02 Jan 2004 00:45:37 +0000</pubDate>
        <title>Кириллизация в Паскале</title>
        <link>https://forum.sources.ru/index.php?showtopic=41972&amp;view=findpost&amp;p=274021</link>
        <description><![CDATA[Some1: Если у Вас возникла такая проблема: Вы не можете включить русский язык в Паскале, то Вам нужно сюда %)<br>
<br>
Всё зависит от того, какой у Вас Паскаль, и какой Windows. <br>
<br>
<span class="tag-color tag-color-named" data-value="blue" style="color: blue"><span class='tag-size' data-value='12' style='font-size:12pt;'>Borland (Turbo) Pascal</span></span><br>
<br>
Стандартными комбинациями переключения раскладки в оболочке этих компиляторов являются:<br>
LeftCTRL+LeftShift - английская раскладка<br>
RightCTRL+RightShift - русская раскладка<br>
<br>
Если они не работают, то у вас скорее всего Windows (XP/2000/NT)<br>
Для этих разновидностей операционных систем есть такой способ:<br>
1) средствами Windows 2000<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Откройте ключ реестра: <br>
<br>
HKLM&#092;SYSTEM&#092;CurrentControlSet&#092;Control&#092;Keyboard Layout&#092;DosKeybCodes<br>
Измените значение строковой переменной 00000409 с &quot;us&quot; на &quot;ru&quot; <br>
<br>
В файле С:&#092;WINNT&#092;System32&#092;autoexec.nt пpописываете следующую стpоку:<br>
lh %SystemRoot%&#092;System32&#092;kb16 ru,866<br>
После перезагрузки системы переключение раскладки клавиатуры в DOS-приложениях будет производиться комбинациями Ctrl+Left Shift (английская) и Ctrl+Right Shift (русская).</div></div><br>
2) поставьте внешний русификатор, например, проверенный временем RKM v.3.0<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Удобнее всего прописать его в файле c:&#092;windows&#092;sytem32&#092;autoexec.nt (аналогично kb16). Можно взять здесь:<br>
<a class='tag-url' href='http://adsh.ukrweb.net/win2k/soft/rkm.php' target='_blank'>http://adsh.ukrweb.net/win2k/soft/rkm.php</a><br>
После того, как вы его выкачаете, распакуйте его куда-нибудь. А после в файле autoexec.nt впишите строчку<br>
&lt;путь_к_rkm&gt;&#092;rkm.com<br>
Например c:&#092;utils&#092;rkm&#092;rkm.com<br>
Раскладка должна переключаться по клавише RightCTRL<br>
Если это дело не работает как следует, или вы хотите переключать привычными клавишами, то можно попробовать и другие русификаторы. Например, keyrus (прикреплён к сообщению). С ним действовать аналогично, а переключается - как описано чуть выше</div></div>http://www.3dnews.ru/reviews/software/win-xp-faq/index05.htm#1<br>
<br>
<span class="tag-color tag-color-named" data-value="blue" style="color: blue"><span class='tag-size' data-value='12' style='font-size:12pt;'>TMT Pascal 3.5(9) lite</span></span><br>
<br>
Если у вас TMT Pascal 3.5(9) lite, и в Паскале можно писать русскими, но при выводе на экран появляются каракули. Знайте, так у всех, у кого стоит этот паскаль. Это один из самых известных глюков этого компилятора. Видимо разработчики не думали, что компилятор будет пользоваться успехом у русскоязычных пользователей. Все русские буквы обычно есть в том или ином месте таблицы ASCII. Их место в этой таблице скорее всего зависит от операционной системы. Для всех ОС семейства Windows русские буквы в таблице ASCII (OEM) имеют следующие порядковые номера:<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>128-159 - А-Я<br>
160-175 - а-п<br>
224-239 - р-я<br>
240 - Ё<br>
241 - ё<br>
Для украинского языка:<br>
242 - Є<br>
243 - є<br>
244 - Ї<br>
245 - ї</div></div><br>
А в ТМТ при написании программы используется кодировка Windows (ANSI), в которой русские буквы, которые вы вводите имеют другие порядковые номера.<br>
<br>
Если очень нужно писать на русском в ТМТ паскале есть два способа - универсальный, и одноразовый (если вам нужно сделать только сейчас, и потом уже не нужно будет).<br>
<strong class='tag-b'>Универсальный способ</strong> заключается в том, чтобы написать функцию - конвертер, которая конвертирует русские буквы из Windows таблицы в DOS таблицу.<br>
Вот она (Украинские буквы тоже конвертируются):<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">function ANSI_to_OEM(s: string): string;</div><div class="code_line">var p: byte;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;for p := 1 to length(s) do</div><div class="code_line">&nbsp;&nbsp;case s[p] of</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;А&#39;..&#39;п&#39;: dec (s[p], 64);</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;р&#39;..&#39;я&#39;: dec (s[p], 16);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &#39;Ё&#39;,&#39;Є&#39;: inc (s[p], 72);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &#39;ё&#39;,&#39;є&#39;: inc (s[p], 57);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &#39;Ї&#39;: inc (s[p], 69);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &#39;ї&#39;: inc (s[p], 54);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;ANSI_to_OEM := s;</div><div class="code_line">end;</div></ol></div></div></div></div><br>
И пользоваться ей к примеру так:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">write(ANSI_to_OEM(&#39;Привет ВСЕМ. Это ДЕМО прогрАММА: ЁёЄєЇї&#39;));</div></ol></div></div></div></div><br>
<strong class='tag-b'>Одноразовый способ</strong> - вам нужно разик отконвертировать, и забыть:<ul class="tag-list"><li>откройте вашу программу FAR&#39;ом на редактирование.</li><li>Убедитесь, что сейчас у вас отображены русские буквы. Расскладка (Windows/DOS) выбирается клавишей F8.</li><li>Выделите весь текст (Ctrl+A).</li><li>Скопируйте его в буфер обмена и удалите(Ctrl+X или Ctrl+Del(на цифровой клав.)).</li><li>Смените раскладку нажав F8</li><li>Вставьте текст назад (Ctrl+Ins или Ctrl+V)</li><li>Сохраните файл</li><li>Загрузите в ТМТ этот файл</li></ul>В ТМТ паскале русский текст будет отображён загогулинами. Но при запуске на экран всё будет выводиться нормально.]]></description>
        <author>Some1</author>
        <category>Pascal: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	