⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gb2big5.pas

📁 源代码竟供大家参考
💻 PAS
📖 第 1 页 / 共 5 页
字号:
unit gb2big5;

interface
  function GBtoBIG5(value: string): string;
  function BIG5toGB(value: string): string;

implementation

var BIG5Order : array[0..14757] of Word;
    GBOrder : array[0..8177] of Word;

function GBOffset(value: string): integer;
begin
  if length(value)>=2 then
     Result:=(Ord(value[1])-161)*94+(Ord(value[2])-161)
  else
     Result:=-1;
end;

function BIG5Offset(value: string): integer;
begin
  Result:=-1;
  if length(value)>=2 then
  begin
       if (Ord(value[2])>=64) and (Ord(value[2])<=126) then
          Result:=(Ord(value[1])-161)*157+(Ord(value[2])-64);
       if (Ord(value[2])>=161) and (Ord(value[2])<=254) then
          Result:=(Ord(value[1])-161)*157+63+(Ord(value[2])-161);
  end;
end;

function WordToString(value: Word): string;
begin
  Result:=Chr(Hi(value))+Chr(Lo(Value));
end;

function isBIG5(value: string): Boolean;
begin
  if (length(value)>=2) then
  begin
       if (value[1]<#161) then
          Result:=false
       else
          if ((value[2]>=#64) and (value[2]<=#126)) or ((value[2]>=#161) and (value[2]<=#254)) then
             Result:=true
          else
             Result:=false;
  end
  else
     Result:=false;
end;

function isGB(value: string): Boolean;
begin
  if (length(value)>=2) then
  begin
       if (value[1]<=#161) and (value[1]>=#247) then
          Result:=false
       else
          if (value[2]<=#161) and (value[2]>=#254) then
             Result:= false
          else
             Result:=true;
  end
  else
     Result:=true;
end;

function GBtoBIG5(value: string): string;
var leng, idx : integer;
    tmpStr : string[2];
    Offset : integer;
    output : string;
begin
  output:='';
  leng:=length(value);
  idx:=1;
  while idx<=leng do
  begin
       tmpStr:=value[idx]+value[idx+1];
       if isGB(tmpStr) then
       begin
            offset:=GBOffset(tmpStr);
            if (offset>=0) and (offset<=8177) then
            begin
                 output:=output+WordToString(GBOrder[offset]);
                 inc(idx);
            end
            else
               output:=output+value[idx] ;
       end
       else
          output:=output+value[idx] ;

       inc(idx,1);
  end;
  Result:=output;
end;

function BIG5toGB(value: string): string;
var leng,idx : integer;
    tmpStr : string[2];
    output : string;
    offset : integer;
begin
  output:='';
  leng:=length(value);
  idx:=1;
  while idx<=leng do
  begin
       tmpStr:=value[idx]+value[idx+1];
       if isBIG5(tmpStr) then
       begin
            offset:=BIG5Offset(tmpStr);
            if (offset>=0) and (offset<=14757) then
            begin
                 output:=output+WordToString(BIG5Order[offset]);
                 inc(idx);
            end
            else
              output:=output+value[idx];
       end
       else
         output:=output+value[idx];

       inc(idx);
  end;
  Result:=output;
end;

initialization

  BIG5Order[0] := $2020;
  BIG5Order[1] := $A3AC;
  BIG5Order[2] := $A1A2;
  BIG5Order[3] := $A1A3;
  BIG5Order[4] := $2020;
  BIG5Order[5] := $A1A4;
  BIG5Order[6] := $A3BB;
  BIG5Order[7] := $A3BA;
  BIG5Order[8] := $A3BF;
  BIG5Order[9] := $A3A1;
  BIG5Order[10] := $A1C3;
  BIG5Order[11] := $A9A9;
  BIG5Order[12] := $A1A7;
  BIG5Order[13] := $A3AC;
  BIG5Order[14] := $2020;
  BIG5Order[15] := $A3AE;
  BIG5Order[16] := $2020;
  BIG5Order[17] := $A3BB;
  BIG5Order[18] := $A3BA;
  BIG5Order[19] := $A3BF;
  BIG5Order[20] := $2020;
  BIG5Order[21] := $A9A7;
  BIG5Order[22] := $A9A5;
  BIG5Order[23] := $A9A6;
  BIG5Order[24] := $A9A4;
  BIG5Order[25] := $2020;
  BIG5Order[26] := $A3DF;
  BIG5Order[27] := $2020;
  BIG5Order[28] := $2020;
  BIG5Order[29] := $A3A8;
  BIG5Order[30] := $A3A9;
  BIG5Order[31] := $A1D0;
  BIG5Order[32] := $2020;
  BIG5Order[33] := $A3FB;
  BIG5Order[34] := $A3FD;
  BIG5Order[35] := $2020;
  BIG5Order[36] := $2020;
  BIG5Order[37] := $A1B1;
  BIG5Order[38] := $A1B2;
  BIG5Order[39] := $2020;
  BIG5Order[40] := $2020;
  BIG5Order[41] := $A1BE;
  BIG5Order[42] := $A1BF;
  BIG5Order[43] := $2020;
  BIG5Order[44] := $2020;
  BIG5Order[45] := $A1B6;
  BIG5Order[46] := $A1B7;
  BIG5Order[47] := $A1C4;
  BIG5Order[48] := $A1C5;
  BIG5Order[49] := $A1B4;
  BIG5Order[50] := $A1B5;
  BIG5Order[51] := $2020;
  BIG5Order[52] := $A1A6;
  BIG5Order[53] := $A1B8;
  BIG5Order[54] := $A1B9;
  BIG5Order[55] := $2020;
  BIG5Order[56] := $2020;
  BIG5Order[57] := $A1BA;
  BIG5Order[58] := $A1BB;
  BIG5Order[59] := $2020;
  BIG5Order[60] := $2020;
  BIG5Order[61] := $A3A8;
  BIG5Order[62] := $A3A9;
  BIG5Order[63] := $2020;
  BIG5Order[64] := $2020;
  BIG5Order[65] := $A1B1;
  BIG5Order[66] := $A1B2;
  BIG5Order[67] := $A1AE;
  BIG5Order[68] := $A3A7;
  BIG5Order[69] := $A1B0;
  BIG5Order[70] := $A1B1;
  BIG5Order[71] := $2020;
  BIG5Order[72] := $A3A2;
  BIG5Order[73] := $A3E0;
  BIG5Order[74] := $2020;
  BIG5Order[75] := $A3A3;
  BIG5Order[76] := $A3A6;
  BIG5Order[77] := $A3AA;
  BIG5Order[78] := $A1F9;
  BIG5Order[79] := $A1EC;
  BIG5Order[80] := $2020;
  BIG5Order[81] := $A1F0;
  BIG5Order[82] := $A1F1;
  BIG5Order[83] := $A1F7;
  BIG5Order[84] := $A1F8;
  BIG5Order[85] := $A1F2;
  BIG5Order[86] := $A1EE;
  BIG5Order[87] := $A1EF;
  BIG5Order[88] := $A1F3;
  BIG5Order[89] := $A1F4;
  BIG5Order[90] := $A1F5;
  BIG5Order[91] := $A1F6;
  BIG5Order[92] := $2020;
  BIG5Order[93] := $2020;
  BIG5Order[94] := $2020;
  BIG5Order[95] := $2020;
  BIG5Order[96] := $A1A5;
  BIG5Order[97] := $2020;
  BIG5Order[98] := $2020;
  BIG5Order[99] := $2020;
  BIG5Order[100] := $2020;
  BIG5Order[101] := $2020;
  BIG5Order[102] := $2020;
  BIG5Order[103] := $2020;
  BIG5Order[104] := $2020;
  BIG5Order[105] := $2020;
  BIG5Order[106] := $2020;
  BIG5Order[107] := $2020;
  BIG5Order[108] := $2020;
  BIG5Order[109] := $A3AB;
  BIG5Order[110] := $2020;
  BIG5Order[111] := $A1C1;
  BIG5Order[112] := $A1C2;
  BIG5Order[113] := $A1C0;
  BIG5Order[114] := $2020;
  BIG5Order[115] := $A3BC;
  BIG5Order[116] := $A3BE;
  BIG5Order[117] := $A3BD;
  BIG5Order[118] := $A1DC;
  BIG5Order[119] := $A1DD;
  BIG5Order[120] := $A1D9;
  BIG5Order[121] := $A1DE;
  BIG5Order[122] := $2020;
  BIG5Order[123] := $A1D4;
  BIG5Order[124] := $2020;
  BIG5Order[125] := $2020;
  BIG5Order[126] := $2020;
  BIG5Order[127] := $2020;
  BIG5Order[128] := $2020;
  BIG5Order[129] := $A1AB;
  BIG5Order[130] := $A1C9;
  BIG5Order[131] := $A1C8;
  BIG5Order[132] := $2020;
  BIG5Order[133] := $A1CF;
  BIG5Order[134] := $2020;
  BIG5Order[135] := $2020;
  BIG5Order[136] := $2020;
  BIG5Order[137] := $2020;
  BIG5Order[138] := $A1D2;
  BIG5Order[139] := $A1D3;
  BIG5Order[140] := $A1DF;
  BIG5Order[141] := $A1E0;
  BIG5Order[142] := $A1E2;
  BIG5Order[143] := $A1E1;
  BIG5Order[144] := $2020;
  BIG5Order[145] := $A1D1;
  BIG5Order[146] := $A1FC;
  BIG5Order[147] := $A1FD;
  BIG5Order[148] := $A1FB;
  BIG5Order[149] := $A1FA;
  BIG5Order[150] := $2020;
  BIG5Order[151] := $2020;
  BIG5Order[152] := $2020;
  BIG5Order[153] := $2020;
  BIG5Order[154] := $A1AC;
  BIG5Order[155] := $2020;
  BIG5Order[156] := $A3AF;
  BIG5Order[157] := $A3DC;
  BIG5Order[158] := $2020;
  BIG5Order[159] := $2020;
  BIG5Order[160] := $A1E7;
  BIG5Order[161] := $A3A4;
  BIG5Order[162] := $2020;
  BIG5Order[163] := $A1E9;
  BIG5Order[164] := $A1EA;
  BIG5Order[165] := $A3A5;
  BIG5Order[166] := $2020;
  BIG5Order[167] := $A1E6;
  BIG5Order[168] := $2020;
  BIG5Order[169] := $2020;
  BIG5Order[170] := $2020;
  BIG5Order[171] := $A3C0;
  BIG5Order[172] := $2020;
  BIG5Order[173] := $2020;
  BIG5Order[174] := $2020;
  BIG5Order[175] := $2020;
  BIG5Order[176] := $2020;
  BIG5Order[177] := $2020;
  BIG5Order[178] := $2020;
  BIG5Order[179] := $2020;
  BIG5Order[180] := $2020;
  BIG5Order[181] := $A1E3;
  BIG5Order[182] := $2020;
  BIG5Order[183] := $2020;
  BIG5Order[184] := $2020;
  BIG5Order[185] := $2020;
  BIG5Order[186] := $2020;
  BIG5Order[187] := $2020;
  BIG5Order[188] := $2020;
  BIG5Order[189] := $2020;
  BIG5Order[190] := $2020;
  BIG5Order[191] := $2020;
  BIG5Order[192] := $2020;
  BIG5Order[193] := $2020;
  BIG5Order[194] := $2020;
  BIG5Order[195] := $2020;
  BIG5Order[196] := $2020;
  BIG5Order[197] := $2020;
  BIG5Order[198] := $2020;
  BIG5Order[199] := $2020;
  BIG5Order[200] := $2020;
  BIG5Order[201] := $2020;
  BIG5Order[202] := $2020;
  BIG5Order[203] := $2020;
  BIG5Order[204] := $2020;
  BIG5Order[205] := $2020;
  BIG5Order[206] := $A9EF;
  BIG5Order[207] := $A9DF;
  BIG5Order[208] := $A9D7;
  BIG5Order[209] := $A9CF;
  BIG5Order[210] := $A9C7;
  BIG5Order[211] := $A3FE;
  BIG5Order[212] := $2020;
  BIG5Order[213] := $2020;
  BIG5Order[214] := $2020;
  BIG5Order[215] := $A9B3;
  BIG5Order[216] := $A9B7;
  BIG5Order[217] := $A9BB;
  BIG5Order[218] := $A9BF;
  BIG5Order[219] := $2020;
  BIG5Order[220] := $2020;
  BIG5Order[221] := $2020;
  BIG5Order[222] := $2020;
  BIG5Order[223] := $2020;
  BIG5Order[224] := $2020;
  BIG5Order[225] := $2020;
  BIG5Order[226] := $2020;
  BIG5Order[227] := $2020;
  BIG5Order[228] := $2020;
  BIG5Order[229] := $2020;
  BIG5Order[230] := $2020;
  BIG5Order[231] := $2020;
  BIG5Order[232] := $2020;
  BIG5Order[233] := $2020;
  BIG5Order[234] := $A3B0;
  BIG5Order[235] := $A3B1;
  BIG5Order[236] := $A3B2;
  BIG5Order[237] := $A3B3;
  BIG5Order[238] := $A3B4;
  BIG5Order[239] := $A3B5;
  BIG5Order[240] := $A3B6;
  BIG5Order[241] := $A3B7;
  BIG5Order[242] := $A3B8;
  BIG5Order[243] := $A3B9;
  BIG5Order[244] := $A2F1;
  BIG5Order[245] := $A2F2;
  BIG5Order[246] := $A2F3;
  BIG5Order[247] := $A2F4;
  BIG5Order[248] := $A2F5;
  BIG5Order[249] := $A2F6;
  BIG5Order[250] := $A2F7;
  BIG5Order[251] := $A2F8;
  BIG5Order[252] := $A2F9;
  BIG5Order[253] := $A2FA;
  BIG5Order[254] := $2020;
  BIG5Order[255] := $2020;
  BIG5Order[256] := $2020;
  BIG5Order[257] := $2020;
  BIG5Order[258] := $2020;
  BIG5Order[259] := $2020;
  BIG5Order[260] := $2020;
  BIG5Order[261] := $2020;
  BIG5Order[262] := $2020;
  BIG5Order[263] := $2020;
  BIG5Order[264] := $2020;
  BIG5Order[265] := $2020;
  BIG5Order[266] := $A3C1;
  BIG5Order[267] := $A3C2;
  BIG5Order[268] := $A3C3;
  BIG5Order[269] := $A3C4;
  BIG5Order[270] := $A3C5;
  BIG5Order[271] := $A3C6;
  BIG5Order[272] := $A3C7;
  BIG5Order[273] := $A3C8;
  BIG5Order[274] := $A3C9;
  BIG5Order[275] := $A3CA;
  BIG5Order[276] := $A3CB;
  BIG5Order[277] := $A3CC;
  BIG5Order[278] := $A3CD;
  BIG5Order[279] := $A3CE;
  BIG5Order[280] := $A3CF;
  BIG5Order[281] := $A3D0;
  BIG5Order[282] := $A3D1;
  BIG5Order[283] := $A3D2;
  BIG5Order[284] := $A3D3;
  BIG5Order[285] := $A3D4;
  BIG5Order[286] := $A3D5;
  BIG5Order[287] := $A3D6;
  BIG5Order[288] := $A3D7;
  BIG5Order[289] := $A3D8;
  BIG5Order[290] := $A3D9;
  BIG5Order[291] := $A3DA;
  BIG5Order[292] := $A3E1;
  BIG5Order[293] := $A3E2;
  BIG5Order[294] := $A3E3;
  BIG5Order[295] := $A3E4;
  BIG5Order[296] := $A3E5;
  BIG5Order[297] := $A3E6;
  BIG5Order[298] := $A3E7;
  BIG5Order[299] := $A3E8;
  BIG5Order[300] := $A3E9;
  BIG5Order[301] := $A3EA;
  BIG5Order[302] := $A3EB;
  BIG5Order[303] := $A3EC;
  BIG5Order[304] := $A3ED;
  BIG5Order[305] := $A3EE;
  BIG5Order[306] := $A3EF;
  BIG5Order[307] := $A3F0;
  BIG5Order[308] := $A3F1;
  BIG5Order[309] := $A3F2;
  BIG5Order[310] := $A3F3;
  BIG5Order[311] := $A3F4;
  BIG5Order[312] := $A3F5;
  BIG5Order[313] := $A3F6;
  BIG5Order[314] := $A3F7;
  BIG5Order[315] := $A3F8;
  BIG5Order[316] := $A3F9;
  BIG5Order[317] := $A3FA;
  BIG5Order[318] := $A6A1;
  BIG5Order[319] := $A6A2;
  BIG5Order[320] := $A6A3;
  BIG5Order[321] := $A6A4;
  BIG5Order[322] := $A6A5;
  BIG5Order[323] := $A6A6;
  BIG5Order[324] := $A6A7;
  BIG5Order[325] := $A6A8;
  BIG5Order[326] := $A6A9;
  BIG5Order[327] := $A6AA;
  BIG5Order[328] := $A6AB;
  BIG5Order[329] := $A6AC;
  BIG5Order[330] := $A6AD;
  BIG5Order[331] := $A6AE;
  BIG5Order[332] := $A6AF;
  BIG5Order[333] := $A6B0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -