Пример функции перехода из Dos OEM 866 кодировки в Win 1251 без использования
функции системы CharToOem
var DosCode:array[1..255] of char=( #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,#095,#095,#039,#095,#034,#058,#197, #216,#095,#037,#095,#060,#095,#095,#095,#095,#095,#039,#039, #034,#034,#007,#045,#045,#095,#084,#095,#062,#095,#095,#095, #095,#255,#246,#247,#095,#253,#095,#179,#021,#240,#099,#242, #060,#191,#045,#082,#244, #248,#043,#095,#095,#095,#231,#020,#250,#241,#252,#243,#062, #095,#095,#095,#245,#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);
Function DosOEMToWin1251(s:string):string; var i : integer; x : integer; begin result:=''; for X:=1 to length(s) do begin for i:=1 to 255 do if DosCode[i]=s[x] then break; result:=result+chr(i); end end;
Function Win2151ToDosOEM(s:string):string; var x:integer; begin result:=''; for X:=1 to length(S) do result:=result+DosCode[ord(s[x])]; end;
тоже самое через использование WinAPI
Function WinToDos(const S: string):string; var NewStr: string; begin SetLength(NewStr, Length(S)); Windows.CharToOem(PChar(S), PChar(NewStr)); result:=NewStr; end;
|