Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.08.2007, 14:03   #1
CoDeR
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 76
По умолчанию Кодировки

Как перевести текст из KOI-8 в ANSI?
Можно ли какой-нибудь стандартной командой? Или может есть спецальные компоненты?
http://wmhelpers.narod.ru/ - сайт программ, помогающими получить немного денег.
CoDeR вне форума Ответить с цитированием
Старый 31.08.2007, 14:23   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Посмотри здесь
_SERGEYX_ вне форума Ответить с цитированием
Старый 31.08.2007, 14:30   #3
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

{ **** 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#1 5#16#17#18#19#20#21#22#23#24#25#26# 27#28+
#29#30#31' !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR STUVWXYZ[\]^' +
'_`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;
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 31.08.2007, 21:54   #4
CoDeR
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 76
По умолчанию

_SERGEYX_, спасибо. Но думаю то что Квэнди посоветовал будет немного лучше.
Пытался разобраться, но так и не понял куда это нужно записать?
Код:
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#2 0#21#22#23#24#25#26#27#28+
#29#30#31' !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^' +
'_`abcdefghijklmnopqrstuvwxyz{|}~';

//cmKoi8RToAnsi:
TCodeMatrix = FirstCodes // ver 1.0, ©VEG, 31.10.2003
+ '-¦-¬L-++T++---¦¦---?¦•v??? ?°?·?=¦-ёг㬬¬LLL---¦¦¦¦Ё¦¦TTT¦¦¦+++©юабцдефгх'
+ 'ийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫ ЗШЭЩЧЪ';
http://wmhelpers.narod.ru/ - сайт программ, помогающими получить немного денег.
CoDeR вне форума Ответить с цитированием
Старый 01.09.2007, 01:18   #5
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

в разделы type и const куда же еще
Цитата:
//cmKoi8RToAnsi:
ты зачем это закомментировал?
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 01.09.2007, 21:39   #6
CoDeR
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 76
По умолчанию

Сначала в type к процедурам скопировал, а там ошибку выдавало. Оказывается в новые записать надо было.
Цитата:
Сообщение от mutabor Посмотреть сообщение
ты зачем это закомментировал?
Даже не знаю как так получилось

Со всем теперь разобрался. Спасибо!
http://wmhelpers.narod.ru/ - сайт программ, помогающими получить немного денег.
CoDeR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кодировки BOBAH13 Общие вопросы Delphi 8 29.08.2008 14:20
Считывание из файла, для определения кодировки Arteom Общие вопросы Delphi 6 04.05.2008 10:11
Проблема кодировки DBF из foxpro djinni БД в Delphi 6 29.01.2008 14:36
Помогите-кодировки в IdPOP3 linker13 Работа с сетью в Delphi 1 08.12.2007 18:11