Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.006 c
2-1209043999
programmer9090
2008-04-24 17:33
2008.05.25
Иконку на ToolButton


2-1209049870
lobach
2008-04-24 19:11
2008.05.25
Передача нескольких строк Post


2-1209201104
Vasja
2008-04-26 13:11
2008.05.25
Имя компьютера


2-1209657059
VirEx
2008-05-01 19:50
2008.05.25
Математика


2-1208955685
Кирей
2008-04-23 17:01
2008.05.25
не срабатывает простой запрос





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский