Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Перекодировка текста из Win кодировки в КОИ-8 и обратно

Delphi , Синтаксис , Преобразования



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

{ **** UBPFD *********** by delphibase.endimus.com ****
>> 

Зависимости: НЕТ :-)
Автор:       Balu, balusoft@mail.ru, Харьков
Copyright:   Balu
Дата:        26 июня 2002 г.
***************************************************** }

const
  Koi: array[0..66] of Char = ('T', 'Ё', 'ё', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж',
    'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р',
    'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ',
    'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д',
    'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о',
    'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш',
    'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
  Win: array[0..66] of Char = ('ё', 'Ё', 'T', 'ю', 'а', 'б', 'ц', 'д', 'е', 'ф',
    'г', 'х', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п',
    'я', 'р', 'с', 'т', 'у', 'ж', 'в', 'ь', 'ы', 'з',
    'ш', 'э', 'щ', 'ч', 'ъ', 'Ю', 'А', 'Б', 'Ц', 'Д',
    'Е', 'Ф', 'Г', 'Х', 'И', 'Й', 'К', 'Л', 'М', 'Н',
    'О', 'П', 'Я', 'Р', 'С', 'Т', 'У', 'Ж', 'В', 'Ь',
    'Ы', 'З', 'Ш', 'Э', 'Щ', 'Ч', 'Ъ');

function WinToKoi(Str: string): string;
var
  i, j, Index: Integer;
begin
  Result := '';

  for i := 1 to Length(Str) do
  begin
    Index := -1;
    for j := Low(Win) to High(Win) do
      if Win[j] = Str[i] then
      begin
        Index := j;
        Break;
      end;

    if Index = -1 then
      Result := Result + Str[i]
    else
      Result := Result + Koi[Index];
  end;
end;

function KoiToWin(Str: string): string;
var
  i, j, Index: Integer;
begin
  Result := '';

  for i := 1 to Length(Str) do
  begin
    Index := -1;
    for j := Low(Win) to High(Win) do
      if Koi[j] = Str[i] then
      begin
        Index := j;
        Break;
      end;

    if Index = -1 then
      Result := Result + Str[i]
    else
      Result := Result + Win[Index];
  end;
end;

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

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Text := WinToKoi(Memo2.Text);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Memo1.Text := KoiToWin(Memo2.Text);
end;

Приведенный код на Delphi предназначен для конвертации текста из Windows (CP-1251) в KOI-8 и обратно. Вот подробное описание кода:

Определения массивов В коде определены два массива: Koi и Win. Эти массивы содержат символы, которые будут использоваться для перевода.

  • Koi: Этот массив содержит набор символов KOI-8, используемый в России.
  • Win: Этот массив содержит набор символов Windows (CP-1251).

Функции В коде определены две функции:

  • WinToKoi(Str: string): string; - Функция конвертирует текст из Windows (CP-1251) в KOI-8. Она перебирает каждый символ входной строки и проверяет, существует ли он в массиве Win. Если да, она заменяет символ соответствующим значением из массива Koi.
  • KoiToWin(Str: string): string; - Функция конвертирует текст из KOI-8 в Windows (CP-1251). Она перебирает каждый символ входной строки и проверяет, существует ли он в массиве Koi. Если да, она заменяет символ соответствующим значением из массива Win.

Процедура Предоставленные процедуры (Button1Click и Button2Click) демонстрируют, как использовать эти функции. Они просто вызывают конвертирующую функцию с текстом из Memo2 в качестве входных данных и устанавливают результат в текст Memo1.

Ограничения Код не обрабатывает ошибки или исключения. Если в ходе процесса перевода встречается недопустимый символ, он будет оставлен неизменным в строке вывода.

Предложения по улучшению

  • Добавьте обработку ошибок для обработки недопустимых символов.
  • Рассмотрите использование более эффективного алгоритма для процесса перевода, например, используя хеш-таблицу вместо перебора массивов.
  • Вы можете также использовать встроенные функции Delphi UTF8ToCP1251 и CP1251ToUTF8 для конвертации между CP-1251 и UTF-8.

В статье описана реализация функций WinToKoi и KoiToWin для перекодировки текста из Win кодировки в КОИ-8 и обратно, написанных на Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Преобразования ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 05:49:38/0.0034360885620117/0