Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.25;
Скачать: CL | DM;

Вниз

Koi в Win   Найти похожие ветки 

 
Игорь ©   (2008-04-23 12:07) [0]

Есть функция конвертирующая Koi в Win и наоборот, не подскажете где надыбать таблицу символов для ISO, DOS  и так далее или как самому сделать?

type
 TConvertChars = array [ #128..#255] of char;

const
 Win_KoiChars: TConvertChars = (
 #128,#129,#130,#131,#132,#133,#134,#135,#136,#137,#060,#139,#140,#141,#142,#143,
 #144,#145,#146,#147,#148,#169,#150,#151,#152,#153,#154,#062,#176,#157,#183,#159,
 #160,#246,#247,#074,#164,#231,#166,#167,#179,#169,#180,#060,#172,#173,#174,#183,
 #156,#177,#073,#105,#199,#181,#182,#158,#163,#191,#164,#062,#106,#189,#190,#167,
 #225,#226,#247,#231,#228,#229,#246,#250,#233,#234,#235,#236,#237,#238,#239,#240,
 #242,#243,#244,#245,#230,#232,#227,#254,#251,#253,#154,#249,#248,#252,#224,#241,
 #193,#194,#215,#199,#196,#197,#214,#218,#201,#202,#203,#204,#205,#206,#207,#208,
 #210,#211,#212,#213,#198,#200,#195,#222,#219,#221,#223,#217,#216,#220,#192,#209) ;

 Koi_WinChars: TConvertChars = (
 #128,#129,#130,#131,#132,#133,#134,#135,#136,#137,#138,#139,#140,#141,#142,#143,
 #144,#145,#146,#147,#148,#149,#150,#151,#152,#153,#218,#155,#176,#157,#183,#159,
 #160,#161,#162,#184,#186,#165,#166,#191,#168,#169,#170,#171,#172,#173,#174,#175,
 #156,#177,#178,#168,#170,#181,#182,#175,#184,#185,#186,#187,#188,#189,#190,#185,
 #254,#224,#225,#246,#228,#229,#244,#227,#245,#232,#233,#234,#235,#236,#237,#238,
 #239,#255,#240,#241,#242,#243,#230,#226,#252,#251,#231,#248,#253,#249,#247,#250,
 #222,#192,#193,#214,#196,#197,#212,#195,#213,#200,#201,#202,#203,#204,#205,#206,
 #207,#223,#208,#209,#210,#211,#198,#194,#220,#219,#199,#216,#221,#217,#215,#218) ;

function Win_KoiConvert(const St: string): string;
var
 i: integer;
begin
 Result:= St;
 for i:= 1 to Length(St) do
   if St[i] > #127 then
     Result[i]:= Koi_WinChars[St[i]];
end;


 
{RASkov} ©   (2008-04-23 12:19) [1]

Дос:
const
    DosWin: Array[0..255] Of Byte =
    (0,  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,
    32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
    48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
    64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
    80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
    96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
    112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
    192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
    208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
    224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
    136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
    152,153,154,129,156,157,158,159,160,161,162,163,164,165,166,167,
    168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,
    240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,
    130,132,135,134,128,133,131,155,184,185,186,187,188,189,190,191);

    WinDos: Array[0..255] of Byte=
    (0,  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,
    32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
    48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
    64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
    80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
    96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
    112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
    244,195,240,246,241,245,243,242,176,177,178,179,180,181,182,183,
    184,185,186,187,188,189,190,191,192,193,194,247,196,197,198,199,
    200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,
    216,217,218,219,220,221,222,223,248,249,250,251,252,253,254,255,
    128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
    144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
    160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
    224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239);


 
Leonid Troyanovsky ©   (2008-04-23 12:34) [2]


> Игорь ©   (23.04.08 12:07)  

http://www.rsdn.ru/Forum/?mid=485320

See also: OemToChar* & CharToOem*

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2008-04-23 12:35) [3]

> Игорь  (23.04.2008 12:07:00)  [0]

Этот код выкинуть, и смотреть следующий ответ, или ко мне на сайт за

http://www.podgoretsky.com/Redir.aspx?id=41&DownloadFile=~/ftp/Language/nps/charcvt.zip

И если там нет нужной таблицы, то делаешь сам по образцу и подобию.

Хинт: не экономь, делай всегда таблицы размером в 256 байт и не в байтах, а так

CvtTable[Char] of Char;


 
Игорь ©   (2008-04-23 13:08) [4]


> {RASkov} ©   (23.04.08 12:19) [1]
> Leonid Troyanovsky ©   (23.04.08 12:34) [2]
> Anatoly Podgoretsky ©   (23.04.08 12:35) [3]


Спасибо


> Anatoly Podgoretsky
> И если там нет нужной таблицы, то делаешь сам по образцу
> и подобию.


Что я не соображу, как сделать например таблицу ISO в WIN1251?


 
Anatoly Podgoretsky ©   (2008-04-23 16:22) [5]

> Игорь  (23.04.2008 13:08:04)  [4]

Очень просто, нужны кодовые таблицы в картинках, как ты думаешь я таблицы делал.
Индексом является код символа ISO, значением код символа WIN1251
Неизменямые значения имеют код индекса.
Я бы сделал таблицу, если бы меня интересовал ISO

При наличии фантазии применимость таблиц выше, не только перекодировка из одной в другую, но например LOWER и UPPER и вплоть до таблицы вхождений, а работа приятная
Ch := CvtTable[Сh];
Без всяких конвертаций, самое быстродействующее.


 
Anatoly Podgoretsky ©   (2008-04-23 16:23) [6]

> Anatoly Podgoretsky  (23.04.2008 16:22:05)  [5]

Кстати принимаю подарки - новые таблицы, для включения в дистрибутив.


 
Игорь ©   (2008-04-23 22:10) [7]


> To Anatoly Podgoretsky


Спасибо, разобрался, нашел довольно много таблиц, пока сделал ISO 8859-5 to Windows 1251, проверил вроде все нормально декодируеться

А вот и подарочек

ISO 8859-5 to Windows 1251

CpISO88595To1251 : TCvt = (
   #000,#001,#002,#003,#004,#005,#006,#007,#008,#009,#010,#011,#012,#013,#014,#015,
   #016,#017,#018,#019,#020,#021,#022,#023,#024,#025,#026,#027,#028,#029,#030,#031,
   #032,#033,#034,#035,#036,#037,#038,#039,#040,#041,#042,#043,#044,#045,#046,#047,
   #048,#049,#050,#051,#052,#053,#054,#055,#056,#057,#058,#059,#060,#061,#062,#063,
   #064,#065,#066,#067,#068,#069,#070,#071,#072,#073,#074,#075,#076,#077,#078,#079,
   #080,#081,#082,#083,#084,#085,#086,#087,#088,#089,#090,#091,#092,#093,#094,#095,
   #096,#097,#098,#099,#100,#101,#102,#103,#104,#105,#106,#107,#108,#109,#110,#111,
   #112,#113,#114,#115,#116,#117,#118,#119,#120,#121,#122,#123,#124,#125,#126,#127,
   UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,
   UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,UCVT,
   UCVT,#168,#128,#129,#170,#189,#178,#175,#163,#138,#140,#142,#141,UCVT,#161,#143,
   #192,#193,#194,#195,#196,#197,#198,#199,#200,#201,#202,#203,#204,#205,#206,#207,
   #208,#209,#210,#211,#212,#213,#214,#215,#216,#217,#218,#219,#220,#221,#222,#223,
   #224,#225,#226,#227,#228,#229,#230,#231,#232,#233,#234,#235,#236,#237,#238,#239,
   #240,#241,#242,#243,#244,#245,#246,#247,#248,#249,#250,#251,#252,#253,#254,#255,
   #185,#184,#144,#131,#186,#190,#179,#191,#188,#154,#156,#158,#157,#167,#162,#159) ;



Страницы: 1 вся ветка

Текущий архив: 2008.05.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
15-1207762983
@!!ex
2008-04-09 21:43
2008.05.25
У кого под рукой есть дельфи


2-1209658341
programmer9090
2008-05-01 20:12
2008.05.25
Удаление выделеного текста в RichEdit


2-1209250359
multis
2008-04-27 02:52
2008.05.25
Блокировка клавиши


2-1209038366
worldmen
2008-04-24 15:59
2008.05.25
Как показать Hint любого объекта на StatusBar?


2-1209558548
lewka-serdceed
2008-04-30 16:29
2008.05.25
Запись в файл, не открывая его