Форум: "Начинающим";
Текущий архив: 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 1251CpISO88595To1251 : 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.48 MB
Время: 0.006 c