Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Универсальное и быстрое перекодирование строки из кодировок ANSI, KOI8-R, KOI8-U, OEM-DOS, ISO

Автор: VEG
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Универсальное и быстрое перекодирование строки из кодировок
ANSI, KOI8-R, KOI8-U, OEM/DOS, ISO

В этой функции используется элементарный алгоритм, который по скорости работы
опережает свои аналоги, и позволяет перекодировать текст из различных кодировок.
Для перекодирования строки используется универсальная функция ConvertEncoding,
где в качестве первого параметра выступает строка, которую необходимо
перекодировать, а в качестве второго - матрица перекодирования, которая
определяет из какой кодировки в какую необходимо перекодировать данную строку.

В этой версии имеется 6 видов матриц перекодирования (тип TCodeMatrix):
1. cmAnsiToKoi8R - перекодирует строку из кодировки ANSI в кодировку KOI8-R
2. cmAnsiToKoi8U - перекодирует строку из кодировки ANSI в кодировку KOI8-U
3. cmKoi8RToAnsi - перекодирует строку из кодировки KOI8-R в кодировку ANSI
4. cmKoi8UToAnsi - перекодирует строку из кодировки KOI8-U в кодировку ANSI
5. cmOemDosToAnsi - перекодирует строку из кодировки OEM/DOS в кодировку ANSI
6. cmIsoToAnsi - перекодирует строку из кодировки ISO в кодировку ANSI

Зависимости: System;
Автор:       VEG, veg@tut.by, Республика Беларусь - Слуцк
Copyright:   ©VEG, 31.10.2003
Дата:        31 октября 2003 г.
***************************************************** }

type // Тип матриц перекодировки
  TCodeMatrix = array[1..255] of char;
const // Матрицы перекодировки
  FirstCodes =
    #1#2#3#4#5#6#7#8#9#10#11#12#13#14#15#16#17#18#19#20#21#22#23#24#25#26#27#28+
   #29#30#31' !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^' +
    '_`abcdefghijklmnopqrstuvwxyz{|}~';
  cmAnsiToKoi8R: TCodeMatrix = FirstCodes // ver 1.0, ©VEG, 31.10.2003
  + 'ҖҒ‚ғ„…†ҮҲүҠ‹ҢҚҺҸҗ‘’“”•–—ҳ™ҡ›ңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬­®Ҝ°ұІіҙө¶·Ј—ә»јҪҫҝбвчздецъй'
    + 'клмнопртуфхжигюыэящшьасБВЧЗДЕЦЪЙКЛМНОПРТУФХЖИГЮЫЭЯЩШЬАС';
  cmAnsiToKoi8U: TCodeMatrix = FirstCodes // ver 0.8, ©VEG, 31.10.2003
  + 'ҖҒ‚ғ„…†ҮҲүҠ‹ҢҚҺҸҗ‘’“”•–—ҳ™ҡ›ңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬­®Ҝ°ұІіҙө¶·Ј—ә»јҪҫҝбвчздецъй'
    + 'клмнопртуфхжигюыэящшьасБВЧЗДЕЦЪЙКЛМНОПРТУФХЖИГЮЫЭЯЩШЬАС';
  cmKoi8RToAnsi: TCodeMatrix = FirstCodes // ver 1.0, ©VEG, 31.10.2003
  + '-Ұ-¬L-++T++---ҰҰ---?Ұ•v??? ?°?·?=Ұ-ёг㬬¬LLL---ҰҰҰҰЁҰҰTTTҰҰҰ+++©юабцдефгх'
    + 'ийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ';
  cmKoi8UToAnsi: TCodeMatrix = FirstCodes // ver 1.0, ©VEG, 31.10.2003
  + '-Ұ-¬L-++T++---ҰҰ---?Ұ•v??? ?°?·?=Ұ-ёәгіҝ¬LLL-ҙўҰҰҰҰЁӘҰІҜTҰҰҰ+ҘЎ©юабцдефгх'
    + 'ийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ';
  cmOemDosToAnsi: TCodeMatrix = FirstCodes // ver 1.0, ©VEG, 31.10.2003
  + 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп---Ұ+ҰҰ¬¬ҰҰ¬---¬L+T+-+ҰҰL'
    + 'гҰTҰ=+ҰҰTTLL-г++----ҰҰ-рстуфхцчшщъыьэюяЁёӘәҜҝЎў°•·v№ӨҰ ';
  cmIsoToAnsi: TCodeMatrix = FirstCodes // ver 1.0, ©VEG, 31.10.2003
  + '????????????????????????ҳ??????? ЁҖҒӘҪІҜЈҠҢҺҚ­ЎҸАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШ'
    + 'ЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёҗғәҫіҝјҡңһқ§ўҹ';

function ConvertEncoding(sIn: string; sCoding: string): string;
//sIn - строка для перекодирования
//sCoding - матрица для перекодирования
//result - полученная перекодированная строка
var
  iFtd: integer;
begin
  for iFtd := 1 to length(sIn) do
    result := result + sCoding[ord(sIn[iFtd])];
end; // ver 1.0, (C)Vrublevsky Evgeny Gennadyevich (BELARUS/SLUTSK), 31.10.2003

Пример использования:

var
  sOut: string;
begin
  sOut := ConvertEncoding(ConvertEncoding('Тест!', cmAnsiToKoi8R), cmKoi8RToAnsi);
end;
Проект Delphi World © Выпуск 2002 - 2024
Автор проекта: USU Software
Вы можете выкупить этот проект.