Я хочу сделать преобразование между ANSI и EBCDI C,
Я нашел класс, но он дает мне ошибку
[Ошибка dcc32] EBCDI C .PAS (60): E2072 Количество элементов (256) отличается от объявления (730)
проблема в этой строке A2E: массив [# 0 .. # 255] для char но я не знаю, как ее решить.
сделать его похожим на A2E: массив [0..255] char не является решением, так как мне нужно использовать его как результат [i]: = A2E [строка [i]]
Unit EBCDIC;
Interface
Uses
SysUtils;
function AnsiToEbcdicW(s:string):string;
function EbcdicToAnsiW(s:string):string;
{ ANSI to EBCDIC translation }
Const
A2E:array[#0..#255] of char=(
#$00,#$01,#$02,#$03,#$37,#$2D,#$2E,#$2F,#$16,#$05,#$25,#$0B,#$0C,#$0D,#$0E,#$0F,
#$10,#$11,#$12,#$13,#$3C,#$3D,#$32,#$26,#$18,#$19,#$3F,#$27,#$1C,#$1D,#$1E,#$1F,
#$40,#$4F,#$7F,#$B1,#$5B,#$6C,#$50,#$7D,#$4D,#$5D,#$5C,#$4E,#$6B,#$60,#$4B,#$61,
#$F0,#$F1,#$F2,#$F3,#$F4,#$F5,#$F6,#$F7,#$F8,#$F9,#$7A,#$5E,#$4C,#$7E,#$6E,#$6F,
#$44,#$C1,#$C2,#$C3,#$C4,#$C5,#$C6,#$C7,#$C8,#$C9,#$D1,#$D2,#$D3,#$D4,#$D5,#$D6,
#$D7,#$D8,#$D9,#$E2,#$E3,#$E4,#$E5,#$E6,#$E7,#$E8,#$E9,#$90,#$48,#$B5,#$5F,#$6D,
#$A0,#$81,#$82,#$83,#$84,#$85,#$86,#$87,#$88,#$89,#$91,#$92,#$93,#$94,#$95,#$96,
#$97,#$98,#$99,#$A2,#$A3,#$A4,#$A5,#$A6,#$A7,#$A8,#$A9,#$51,#$BB,#$54,#$BD,#$07,
#$20,#$21,#$22,#$23,#$24,#$15,#$06,#$17,#$28,#$29,#$2A,#$2B,#$2C,#$09,#$0A,#$1B,
#$30,#$31,#$1A,#$33,#$34,#$35,#$36,#$08,#$38,#$39,#$3A,#$3B,#$04,#$14,#$3E,#$FF,
#$41,#$AA,#$B0,#$7B,#$9F,#$B2,#$DD,#$5A,#$A1,#$B4,#$9A,#$8A,#$BA,#$CA,#$AF,#$BC,
#$4A,#$8F,#$EA,#$FA,#$BE,#$79,#$B6,#$B3,#$9D,#$DA,#$9B,#$8B,#$B7,#$B8,#$B9,#$AB,
#$64,#$65,#$62,#$66,#$63,#$67,#$9E,#$68,#$74,#$71,#$72,#$73,#$78,#$75,#$76,#$77,
#$AC,#$69,#$ED,#$EE,#$EB,#$EF,#$EC,#$BF,#$80,#$FD,#$FE,#$FB,#$FC,#$AD,#$AE,#$59,
#$7C,#$45,#$42,#$46,#$43,#$47,#$9C,#$E0,#$D0,#$C0,#$52,#$53,#$58,#$55,#$56,#$57,
#$8C,#$49,#$CD,#$CE,#$CB,#$CF,#$CC,#$E1,#$70,#$6A,#$DE,#$DB,#$DC,#$8D,#$8E,#$DF);
{ EBCDIC to ANSI translation }
Const
E2A:array[#0..#255] of char=(
#$00,#$01,#$02,#$03,#$9C,#$09,#$86,#$7F,#$97,#$8D,#$8E,#$0B,#$0C,#$0D,#$0E,#$0F,
#$10,#$11,#$12,#$13,#$9D,#$85,#$08,#$87,#$18,#$19,#$92,#$8F,#$1C,#$1D,#$1E,#$1F,
#$80,#$81,#$82,#$83,#$84,#$0A,#$17,#$1B,#$88,#$89,#$8A,#$8B,#$8C,#$05,#$06,#$07,
#$90,#$91,#$16,#$93,#$94,#$95,#$96,#$04,#$98,#$99,#$9A,#$9B,#$14,#$15,#$9E,#$1A,
#$20,#$A0,#$E2,#$E4,#$40,#$E1,#$E3,#$E5,#$5C,#$F1,#$B0,#$2E,#$3C,#$28,#$2B,#$21,
#$26,#$7B,#$EA,#$EB,#$7D,#$ED,#$EE,#$EF,#$EC,#$DF,#$A7,#$24,#$2A,#$29,#$3B,#$5E,
#$2D,#$2F,#$C2,#$C4,#$C0,#$C1,#$C3,#$C5,#$C7,#$D1,#$F9,#$2C,#$25,#$5F,#$3E,#$3F,
#$F8,#$C9,#$CA,#$CB,#$C8,#$CD,#$CE,#$CF,#$CC,#$B5,#$3A,#$A3,#$E0,#$27,#$3D,#$22,
#$D8,#$61,#$62,#$63,#$64,#$65,#$66,#$67,#$68,#$69,#$AB,#$BB,#$F0,#$FD,#$FE,#$B1,
#$5B,#$6A,#$6B,#$6C,#$6D,#$6E,#$6F,#$70,#$71,#$72,#$AA,#$BA,#$E6,#$B8,#$C6,#$A4,
#$60,#$A8,#$73,#$74,#$75,#$76,#$77,#$78,#$79,#$7A,#$A1,#$BF,#$D0,#$DD,#$DE,#$AE,
#$A2,#$23,#$A5,#$B7,#$A9,#$5D,#$B6,#$BC,#$BD,#$BE,#$AC,#$7C,#$AF,#$7E,#$B4,#$D7,
#$E9,#$41,#$42,#$43,#$44,#$45,#$46,#$47,#$48,#$49,#$AD,#$F4,#$F6,#$F2,#$F3,#$F5,
#$E8,#$4A,#$4B,#$4C,#$4D,#$4E,#$4F,#$50,#$51,#$52,#$B9,#$FB,#$FC,#$A6,#$FA,#$FF,
#$E7,#$F7,#$53,#$54,#$55,#$56,#$57,#$58,#$59,#$5A,#$B2,#$D4,#$D6,#$D2,#$D3,#$D5,
#$30,#$31,#$32,#$33,#$34,#$35,#$36,#$37,#$38,#$39,#$B3,#$DB,#$DC,#$D9,#$DA,#$9F
);
Implementation
Type
PByte=^AByte;
AByte=Array[byte] of byte;
Function AnsiToEbcdicW(s:string):string;
var
i:integer;
begin
result:=s;
for i:=1 to length(s) do result[i]:=A2E[s[i]];
end;
Function EbcdicToAnsiW(s:string):string;
var
i:integer;
begin
result:=s;
for i:=1 to length(s) do result[i]:=E2A[s[i]];
end;
end.