Advertisement
Guest User

Untitled

a guest
May 5th, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 24.76 KB | None | 0 0
  1. type
  2.   TCodePage=record
  3.     Name:String;
  4.     Tetragrams:PCardinal;
  5.     Count:Integer;
  6.   end;
  7.   PTetragram=^TTetragram;
  8.   TTetragram=record
  9.     V:Cardinal;
  10.     I:Integer;
  11.   end;
  12.  
  13. const
  14.   Tetragrams1: array [0..349] of Cardinal = (
  15.     $EEE3E5F1, $E9EEEDED, $F2F1E5E2, $E0EBE5E4, $E2FBE7E0, $E1EEF2F7, $E0E4E3EE, $E8EBFBE1,
  16.     $E3E5F1E2, $F2EDE5EC, $E8F1F1EE, $ECF0EEF4, $ECE7EEE2, $E6EBEEE4, $F1EEF0EF, $E0EBFBE1,
  17.     $E0E2EEF0, $EEEAE0ED, $E9EEEAF1, $F2F1EEED, $EDF0E5E2, $FFF1EBE0, $F0EEF2E2, $F1E0EBE0,
  18.     $EDE8E4EE, $E5E8EAF1, $EDE5EBE2, $E0F7F3EB, $E4EEF0EF, $EBE8E4EE, $F2E0F2F1, $EEEAE8ED,
  19.     $E0ECF3E4, $EEF0EFEE, $EDEEE8F6, $E8EDE5EC, $F2F1EEF1, $E0E7E0EA, $F0EEF2F1, $EAFCEBEE,
  20.     $E2EEF2EE, $FFEEF2F1, $F0F2EEEC, $EBE0F2F1, $EEEDE4EE, $FCF2E8E2, $E2E0F2F1, $EFF3F2F1,
  21.     $ECEEF2EE, $E4E5F0E5, $EAE5E2EE, $F2F1E5F9, $FCEBEEEA, $E5E2F2EE, $E5F9E1EE, $E5ECE5F0,
  22.     $FBF0EEF2, $EEEAE0F2, $E5ECE8F0, $F1FCF2E8, $E5F2EDE8, $F2F1F3EF, $F2F1FCEB, $E5EBE5E4,
  23.     $F2E8F0EE, $E5E0E2E8, $FCF2E0E7, $E0EBE0E2, $F0EFEEE2, $E0E2EEE2, $E5EBE5F2, $F1EEEDED,
  24.     $E5E4E8E2, $E5E2EEEB, $E5E4F3E1, $EEE3E5F7, $EEE3F3F0, $F0EEE2EE, $EBF1EEEF, $E5FBEDED,
  25.     $EEF2F1E0, $F8FCEBEE, $F2E5E4F3, $F0E5E2EE, $F2E0E2EE, $E5F0E5F7, $F1F2E5E0, $EDEDE5E2,
  26.     $EEE3E5ED, $FCF1E5E4, $E8EBE0F2, $EDE0F0F2, $F1E0EBE8, $F1E8EBE0, $EBE5E4E8, $EEE3EEF2,
  27.     $EBE2E0F2, $EDE0E2EE, $FCF2FBE1, $EBE8E2E0, $EDE5ECE8, $E1EEF0EF, $E0F0F2F1, $FFF1EBE8,
  28.     $EBEEEAF1, $ECE5F0E2, $EEEDF0E5, $EDE5ECE5, $EAF1E5F7, $E3EEEAF1, $EEE3EEED, $EDEDE5EB,
  29.     $E8E3F3F0, $EBE5F2E8, $E7E0F0E1, $E8F2F1E5, $EBE0E7E0, $E8F2F1EE, $EEF0EEF5, $F0EEF2EE,
  30.     $E0E4EEE3, $EEF2F1EE, $F1E9E5E4, $E5F7E8ED, $E0E2EEE4, $E9E8EAF1, $EEEBE5F7, $E8EDE5EB,
  31.     $F2EEE1E0, $FCF2E0E4, $F2F1E9E5, $EBE0E2FB, $EEEDEDE0, $EEEDFCEB, $E5E8EDE5, $EEEBEEEF,
  32.     $E0EAEEEF, $ECFBEDED, $E8F7E0ED, $FFEBE2E0, $FCF2E0F2, $E0E2EEED, $E5EEE2F1, $E8ECE0EA,
  33.     $E0F2E8F7, $E5E8EDE0, $F1F1E0F0, $E2F2F1E2, $F7F3EBEE, $EEEDE6EE, $E5F0E5EF, $EBE0E2E8,
  34.     $FCF1E0EB, $EEEDEDE5, $F2F1E5F7, $E2EEEBE5, $FCF2E0E2, $F0E0F2F1, $E4E5EBF1, $E8EDE5F7,
  35.     $E0F7E0ED, $E8E4EEF5, $F2F1EEEF, $F2F1EEF0, $E4EEEBEE, $E2EEEBF1, $E8E8EDE5, $F2F1E0ED,
  36.     $E8EDE5F8, $EBE5F2E0, $ECE8F0EF, $E8EBF1E5, $F2E5E2F2, $E2F2F1E5, $FBE1EEF2, $FCEDE5E4,
  37.     $E5FBF0EE, $EEEDE0F2, $E2EEEDE0, $EEE4E0ED, $E3EEF2FD, $E8F0EEF2, $E3EEEDEC, $F1E5F7E8,
  38.     $E0ECE8ED, $E5EDEEEA, $E7E0EAEE, $F7E0EDE7, $F7FEEBEA, $EEEAF1E5, $E5F0F2F1, $ECEEF2FD,
  39.     $EEECE7EE, $F2F1E4E5, $EDEEEAE0, $E0F2EEE1, $EDFCEBE5, $E5E6EEEC, $E5F0F2EE, $EDE8F0EF,
  40.     $EEEDE2E0, $F0F2F1EE, $E2F2F1E4, $EDE5F7EE, $EDE6EEEC, $FCEBE5F2, $EEEDF2F1, $EEF0EEF2,
  41.     $F1EEEBE8, $FFE8EDE0, $E8F2F1E0, $F1EEEBE0, $E2EEEAE8, $E2F0E5EF, $E2F2F1E9, $E5EBF1EE,
  42.     $FFF1F2E8, $EEEBFBE1, $EEE2F2F1, $E8E8F6E0, $EDE7E8E6, $E5E6E0E4, $FCF2F1EE, $EEF2F1E8,
  43.     $F2FEE0E2, $E8EDE5E6, $F1E5F0E5, $E2E0F0EF, $FFE8EDE5, $E6F0E5E4, $EBE5E4E5, $F2E0E7E0,
  44.     $EDFCEBE0, $E8EDE5E4, $E0E2F2F1, $EDF7EEF2, $F2E8E4EE, $EEE3EEEA, $E8EEE2F1, $E0EAE8ED,
  45.     $EBE0F7E0, $E2EEF0E8, $F3EBEEEF, $E8ECFBED, $F2EEECF1, $E4E3EEEA, $EEE1E0F0, $ECE5E8ED,
  46.     $F8EEF0EE, $EEEAFCEB, $EBE5E4F1, $EEF2EEEF, $E0F1E8EF, $E5E2F2F1, $E3EEF0EE, $F1E8EBE8,
  47.     $EDE2E8F2, $E2E8F0EF, $F1E4E5F0, $EEEDF7EE, $EEEAE0EA, $E8EAE0F2, $FCEBEEE1, $EEECE0F1,
  48.     $F2E5E0E2, $E4EEF0EE, $EBEEF2F1, $EDE0F2F1, $ECE5F1E2, $EEF0F2F1, $FBEDEDE0, $E2EEEBEE,
  49.     $E0F0E1EE, $FBEDFCEB, $F1F2FEE0, $E5F7E8F2, $EDE5E2F2, $EEF0EEE3, $E9EEEAE0, $F3E2F2F1,
  50.     $E8EBE0E2, $E8EAF1E5, $EEF2EEEA, $EEF0EEE4, $E2EEE2F2, $FCF1EEEB, $F2F1E0F7, $F2F1EEE4,
  51.     $E0E2EEE7, $EDEDE5EC, $E4FFEBE3, $E5EBEEE1, $E5F8FCEB, $F3ECEEF2, $F7F3EBF1, $F5E8EAF1,
  52.     $E8E2E0F0, $E5F2E8E2, $E2EEF0EF, $E8EEF0EF, $EEEBEEE3, $F2EEF0EF, $E8E2F2F1, $E7E0EAF1,
  53.     $E1EEF1EE, $EEE2EEE3, $F2F1E5EC, $E5E5EBEE, $E2EEEDF1, $E5F2F1E5, $E0F2F1EE, $F5FBEDED,
  54.     $EDFCEBEE, $E5E0E2FB, $E6EEECE7, $FBEDEDE5, $EDE5E4E6, $FCEBEEF2, $FCEDE5F7, $FFECE5F0,
  55.     $FCF2F1E5, $E8E2E0F2, $E9FBEDED, $EDEBEEEF, $EBE0E2EE, $E0E2FBE7, $FFEDE5EC, $EDEEF0EE,
  56.     $F2E5FFEB, $EDF2F1E5, $E8F0EEE2, $F2E5E6EE, $E2E7E0F0, $FFF1F2E5, $FCF1E8EB, $FFF1F2FE,
  57.     $E3F3F0E4, $E5E2EEF1, $EDFCEBE8, $F2E8E2E0, $EBEEEFF1, $F1FCF2E0, $E2F2F1F2, $EDE5EBE5,
  58.     $F0E5F2ED, $E8EDE5ED, $E0F0E3EE, $FFF1FCF2, $EEEDF2EE, $FFE1E5F1
  59.   );
  60.  
  61.   Tetragrams2: array [0..352] of Cardinal = (
  62.     $ACA7AEA2, $ADA5ACA8, $A6AEACA7, $EBADADA0, $EFA8ADA0, $A8AEA2E1, $E1A5E7A8, $AAE1A5E7,
  63.     $ADA6AEAC, $E0AEE2E1, $A2AEE2AE, $A9AEAAE1, $A8ABA0A2, $AFE3E2E1, $EBADADA5, $A2E2E1A9,
  64.     $A6E0A5A4, $AEADE0A5, $A0A2AEA7, $ADA5ABA2, $ADABAEAF, $A5A6A0A4, $ACE0AEE4, $A8A2A0E2,
  65.     $A2A0E2E1, $AEADE2AE, $ABE1AEAF, $EFA8ADA5, $ACA5A8AD, $E1AEABA8, $AEE0AEE2, $A0E2A8E7,
  66.     $A8E7A0AD, $E1A0ABA8, $E1E1A0E0, $E1A0ABA0, $A0ACE3A4, $E7E3ABE1, $A8A8E6A0, $E2E1A5AC,
  67.     $A0A4A3AE, $ACA8E0AF, $ADECABA5, $E0AEE2AE, $AEA3A5E1, $E2E1A5E7, $A8ACA0AA, $AEADA4AE,
  68.     $AEABEBA1, $A3AEAAE1, $A5E8ECAB, $A1AEE1AE, $A5ABA5A4, $A0E2AEA1, $E1A8ABA0, $ADADA5AC,
  69.     $A0A2AEAD, $E2E1ECAB, $E2E1AEAF, $AEAAECAB, $A3AEE0AE, $A9AEADAD, $A2AEAAA8, $AEADADA0,
  70.     $AEE0AEE5, $ADA0E0E2, $ADE0A5A2, $E1AEE0AF, $E2AEACE1, $E2E1A5A2, $ADAEA8E6, $A5ABA5E2,
  71.     $ECE1AEAB, $A0E2E1AE, $A5E0A5AF, $A4A5E0AF, $A5ABE1AE, $E0E2AEAC, $E0AEE2A2, $ADA8A4AE,
  72.     $ADA8E0AF, $ADADA5A2, $AEAAA0E2, $ACAEE2ED, $ADA5ACA5, $A2AEE0AF, $ABAEAAE1, $AEACA7AE,
  73.     $A8A8ADA5, $EFA1A5E1, $A2AEADE1, $ABA5E2A8, $ECE1A5A4, $A0A2EBA7, $E2EEA0A2, $E7E3ABAE,
  74.     $E2A5A6AE, $E7EEABAA, $A0A2AEA4, $A8ABEBA1, $A0A7A0AA, $AEAAA8AD, $ADA7A8A6, $A0E0A3AE,
  75.     $A5E0A5E7, $A1AEE2E7, $A7A0AAE1, $AEA3A5AD, $E2A8A2A0, $AEA4A0AD, $ECE2A0A2, $ADE2E1A5,
  76.     $E2A0E2E1, $ADECABAE, $AEADA2A0, $ABAEE2E1, $ADA5ABA5, $A2AEA2E2, $A2A7A0E0, $A0E7E3AB,
  77.     $AAECABAE, $A8ABA0E2, $ADAEE0AE, $A5E2A8A2, $E2E1E3AF, $E1AEADAD, $E1A4A5E0, $E2E1A0AD,
  78.     $A8ADA5AD, $ECABAEAA, $AEA3A5E7, $ABA5A4A8, $ECE2A8A2, $A8AAA0E2, $E0A5E2AD, $A9EBADAD,
  79.     $A4AEE0AE, $E1E2A5A0, $E1ECE2A0, $A8A4AEE5, $A0ABA0A2, $ABA0A2A8, $ABA8A4AE, $A5ABAEA1,
  80.     $A5ACA5E0, $A0ABA5A4, $A8E1E1AE, $E2ADA5AC, $E8AEE0AE, $E2E1AEE1, $E2A5A2E2, $A8A2E2E1,
  81.     $E0AEA2AE, $ACA5E1A2, $A1AEE0AF, $ACAEE2AE, $ECE1A0AB, $ECE2A0E2, $A5A2AEAB, $A5A4E3A1,
  82.     $EFE1E2A5, $EFABA2A0, $A5A2E2AE, $AEADADA5, $A8ADA5E8, $A2AEABE1, $EBADECAB, $A0ACA8AD,
  83.     $A8E0AEE2, $AEA3E3E0, $AEADE2E1, $A5E0E2AE, $E2A0A7A0, $A5ADAEAA, $ECE2E1AE, $AEE0AFAE,
  84.     $ABA0A2AE, $E2A5A0A2, $A0E0E2E1, $A2EBA7A0, $E2E1AEAD, $ABA2A0E2, $A0A2AEA2, $EFE1ABA0,
  85.     $A0A4AEA3, $A2E2E1A5, $E0A0E2E1, $E2AEE0AF, $ABA0A7A0, $A8AEE0AF, $ECE2A0A7, $AEABAEAF,
  86.     $A8E2E1A0, $EFE1ABA8, $ABA5A4A5, $ECE1A8AB, $E3A2E2E1, $AEE2E1A0, $A5E7A8AD, $ADA5E7AE,
  87.     $A8E2E1AE, $A5EBADAD, $A2AEABA5, $ECADA5E7, $AEA3AEE2, $A2AEABAE, $E5EBADAD, $A7A0E0A1,
  88.     $A3A5E1A2, $E1AEABA0, $A8ADA5AC, $ADAEAAA0, $A5A2E2E1, $A2E0A5AF, $A0E7A0AD, $A3E3E0A4,
  89.     $A3AEADAC, $A0E0A1AE, $A5A0A2EB, $ABA0A2EB, $A5A0A2A8, $AEACA0E1, $A5A2AEE1, $A6ABAEA4,
  90.     $A0A2E2E1, $A8A3E3E0, $E2E1AEE0, $A8E0AEA2, $ACA5E0A2, $A4A5ABE1, $E2A5A4E3, $E1A8ABA8,
  91.     $AEE0E2E1, $E1A9A5A4, $E2E1A9A5, $A8ADA5AB, $E3ABAEAF, $ACEBADAD, $E2A5EFAB, $A8ADA5E7,
  92.     $A8ABE1A5, $E2A0A2AE, $A5EBE0AE, $ABA5E2A0, $A2AEADA0, $AEADA6AE, $EBE0AEE2, $E2E1A4A5,
  93.     $ABA0E7A0, $A8A2A0E0, $A2E2E1A2, $AEAAA0AA, $ADA0E2E1, $A3AEE2ED, $A5ACA8E0, $A5A8ADA5,
  94.     $AEE2AEAF, $AEE2AEAA, $E3ACAEE2, $ADA0A2AE, $ADECABA0, $ECADA5A4, $AEADA0E2, $E7A0ADA7,
  95.     $ECABAEE2, $A0AAAEAF, $ADECABA8, $AEA3AEAA, $A5A4A8A2, $A0ABEBA1, $AEABAEA3, $AEADECAB,
  96.     $A5A8AAE1, $ABA0E2E1, $AEA2AEA3, $EBA1AEE2, $A4AEE0AF, $A4AEABAE, $A5E0E2E1, $A5E9A1AE,
  97.     $ADA2A8E2, $A5E7A8E2, $ABA8A2A0, $ABA5A4E1, $A5E2E1A5, $AEA2E2E1, $A2AEE0A8, $AEA3AEAD,
  98.     $EFE1E2A8, $A7A0AAAE, $E2E1A0E7, $E0A5A2AE, $A9A8AAE1, $AEE2E1AE, $A4EFABA3, $A2A8E0AF,
  99.     $AEAAA0AD, $E2A8E0AE, $AEE0AEA3, $ADE7AEE2, $E0E2E1AE, $AEE2E1A8, $AEA1A0E0, $E1E2EEA0,
  100.     $EFAEE2E1, $A2E2E1A4, $E8ECABAE, $ECABA5E2, $A2A0E0AF, $A0AAA8AD, $EFE1ECE2, $ADADA5AB,
  101.     $A8ADA5A4, $EFE1E2EE, $ADA5A2E2, $A5ABA2A0, $A9AEAAA0, $A0A2AEE0, $A0E1A8AF, $A8E2E1A5,
  102.     $A4A5E0A5, $A8ADA0A2, $A5A5ABAE, $ECE2EBA1, $A5A8ADA0, $AEADE7AE, $AEAAE1A5, $E1ECE2A8,
  103.     $A4A3AEAA, $E2E1AEA4, $A8ACEBAD, $EFACA5E0, $E2AEA1A0, $EFADA5AC, $A8AAE1A5, $ADA5A4A6,
  104.     $A5E2ADA8, $A5AEA2E1, $A2E2E1E2, $AAA5A2AE, $E5A8AAE1, $E1A5E0A5, $E2A8A4AE, $ECE2E1A5,
  105.     $ABAEAFE1, $A5A6AEAC, $AEE0AEA4, $ECABAEA1, $AEABA5E7, $E2E1A5E9, $A8ADA5A6, $E0AFAEA2,
  106.     $ECE2A0A4
  107.   );
  108.  
  109.   Tetragrams3: array [0..345] of Cardinal = (
  110.     $C1CDD5C4, $C5D9CECE, $D4CFCDD3, $C9CEC5D6, $CFD4D3C9, $C1DEC1CE, $D2CFD4D3, $D3CAC5C4,
  111.     $CAD9CECE, $D7CFCCCF, $D5CCCFD0, $CFCBD3C5, $CECEC5CC, $CECCCFD0, $CFCBC9CE, $D3C9CCC9,
  112.     $D6CCCFC4, $D8D3C5C4, $CFCCCFD0, $C9CEC5DB, $C9CCD9C2, $CFCED2C5, $D7D9DAC1, $DAC1CBCF,
  113.     $D4C9D2CF, $CFC7C5D3, $C1DAC1CB, $C4CFCCCF, $D7CFCCC5, $C4CFD2D0, $D3CFD2D0, $CED8CCC5,
  114.     $C5D2C5DE, $CEC5D7D4, $D8D4C9D7, $C4C7CFCB, $C5C4C9D7, $C5CCC5D4, $D4C1DAC1, $D8D4D3C5,
  115.     $C5D7D4CF, $CFCEC4CF, $CFC7D5D2, $DEC0CCCB, $C4C5D2D0, $C1D7D9DA, $D8CCCFD4, $C8D9CECE,
  116.     $CFCECEC1, $CFD2CFC7, $CEC5CCC5, $CEC5C4D6, $C5D6C1C4, $D4D3C5D7, $C2CFD4DE, $CDC5C9CE,
  117.     $C9CCD3C5, $C5CCD7C1, $CCC5D4C1, $C1D7CFD7, $C9CFD7D3, $CFC7C5CE, $C5C9CBD3, $D4C5C1D7,
  118.     $C5CCD3CF, $D3CFCECE, $C9D4D3C5, $C1CCC1D7, $CCCFCBD3, $D4D3CAC5, $CFCED6CF, $D7CFCCD3,
  119.     $D7CFD2C9, $CFC7C5DE, $C9CEC1D7, $D7D4D3D4, $C5CECFCB, $D7CFD2D0, $D3C5DEC9, $CFD4CFD0,
  120.     $D7D4D3C4, $CECFCBC1, $C1D2D4D3, $CED2C5D7, $CFCBC1CB, $C9CDC1CB, $CAC9CBD3, $D4CFC2C1,
  121.     $DBCFD2CF, $CEC5DECF, $CECEC5CD, $C9C4CFC8, $C9D7C1D2, $C9CCC1D4, $C9D4D3CF, $D1D3D4C5,
  122.     $D4D3CFC4, $D8D4C1D4, $CEC1D4D3, $D8CCCFCB, $C1D4CFC2, $D7C9D2D0, $D4C1D7CF, $CFCCCFC7,
  123.     $D8CCC5D4, $C4D1CCC7, $CDC5D3D7, $D4D3C5CD, $C5CCC5C4, $D2CFD4CF, $CFC7CFD4, $C9CDD9CE,
  124.     $CFCCD9C2, $C9C7D5D2, $C5D4CEC9, $CED4D3C5, $D7D4D3CA, $D3CFCCC9, $D2D0CFD7, $C7CFD2CF,
  125.     $C5D2D4CF, $CCC9C4CF, $D3C1CCC1, $D3C4C5D2, $C1D4D3CF, $C1D3C9D0, $D4D3CFCE, $D4C0C1D7,
  126.     $CFCBD8CC, $D4D3C4C5, $CDC5D2D7, $C1C4CFC7, $CFD4D3C1, $D1D3D4C9, $CDD2CFC6, $CACFCBC1,
  127.     $D4D3C1CE, $D3D3C1D2, $CFC7CFCB, $CFD2D0CF, $D6D2C5C4, $CFD2CFC4, $C1D2C7CF, $CFCDC1D3,
  128.     $C5D2D4D3, $D3C9CCC1, $D7C1D2D0, $C7CFCBD3, $C1CBC9CE, $CCCFD0D3, $C9D2CFD4, $CFCBC1D4,
  129.     $D1D3D8D4, $CFCBC1CE, $D4CFD2D0, $D8D4C1D7, $CFD7D4D3, $CCD3CFD0, $CECFD2CF, $C9D7D4D3,
  130.     $C4CFD2CF, $C7D5D2C4, $DAC1CBD3, $C1CCC5C4, $D1CEC5CD, $CCCFD4D3, $D7C1D4D3, $C2CFD3CF,
  131.     $CEC1D7CF, $C7CFD4DC, $D8CEC5C4, $CCC1D4D3, $D4C5D7D4, $C1D4C9DE, $C1CCD9C2, $D9D2CFD4,
  132.     $D7D2C5D0, $D2D4D3CF, $D4C5D1CC, $CED8CCC1, $D3D4C0C1, $D4D3D5D0, $CFC2C1D2, $D5CDCFD4,
  133.     $CCC1D7C9, $CCC5D4C9, $D7CFD4CF, $CFCEC1D4, $CCD7C1D4, $D8CEC5DE, $CDC9D2D0, $C5D6CFCD,
  134.     $C9CFD2D0, $D5D7D4D3, $D8D4C1C4, $CCC1D7D9, $C9D3D3CF, $D7CFCEC1, $C1D7CFD2, $D4D3C1DE,
  135.     $D3C1CCC9, $C5D4C9D7, $D1CCD7C1, $C5C1D7D9, $CECEC5D7, $D8D3C9CC, $CFC4C1CE, $C7CFCECD,
  136.     $C1D7CFDA, $D7CFCBC9, $D8D3C1CC, $C5C1D7C9, $C5C9CEC1, $D2D4CFCD, $D3D8D4C9, $C4C5CCD3,
  137.     $CEDAC9D6, $C5DEC9D4, $C5CCCFC2, $D8D3CFCC, $CED7C9D4, $C5C9CEC5, $C5D9D2CF, $D3C5D2C5,
  138.     $D7CFD7D4, $C4C5D2C5, $D7D4D3C5, $C1D7CFCE, $D4D3C5DE, $CEC1D2D4, $D9CECEC1, $D7D4D3D7,
  139.     $C9C9C3C1, $C5D2C5D0, $CFC7CFCE, $D2C5D4CE, $CCC1D7CF, $C7C5D3D7, $C1CDC9CE, $D4C5C4D5,
  140.     $D1D3CCC9, $D1CDC5D2, $CDCFD4DC, $CFD2CFD4, $CEC9C4CF, $CED8CCCF, $CEDECFD4, $C5DBD8CC,
  141.     $CFD4D3CF, $D1CFD4D3, $DAC1D2C2, $CBD8CCCF, $C5D7CFCC, $CEC5CDC9, $C9CEC5DE, $C5CDC9D2,
  142.     $D1D3CCC1, $C9CEC5CC, $C8C9CBD3, $C9D2CFD7, $D2C1D4D3, $CCC1DAC1, $D9C2CFD4, $D8D4D3CF,
  143.     $D4CEC5CD, $C5D7CFD3, $D1C9CEC1, $CFCEDECF, $CDCFD4CF, $C1D7D4D3, $D4D3C5DD, $CCC1DEC1,
  144.     $C1CBCFD0, $CFD4CFCB, $D4D3CFD2, $D4D3D8CC, $CACFCBD3, $C5CDC5D2, $D4D3CFD0, $D7DAC1D2,
  145.     $C5CFD7D3, $D4C1D4D3, $CFCCC5DE, $CBD3C5DE, $DED5CCCF, $C5D4D3C5, $D4D3CFD3, $CACFCECE,
  146.     $D2CFD4D7, $CFD2CFC8, $C5C5CCCF, $C9DEC1CE, $D2CFD7CF, $C1C4C7CF, $D3CFCCC1, $D4C9D7C1,
  147.     $CCC5C4C9, $C5DEC9CE, $C9D4D3C1, $CFCED7C1, $D9CED8CC, $D1C9CEC5, $CECFC9C3, $D1C2C5D3,
  148.     $CFD7CFC7, $D7CFCED3, $CCC5C4C5, $C9D7C1D4, $C1D7CFC4, $CCC5C4D3, $CCC9D7C1, $C9CBC1D4,
  149.     $C9CEC5CE, $D4C9C4CF, $CFCED4CF, $D3D8D4C1, $CEC5CCD7, $D8D4C1DA, $D0D5D4D3, $DED5CCD3,
  150.     $D2C5D7CF, $DEC1CEDA, $CED8CCC9, $D8D4D9C2, $D3D4C5C1, $D8CCCFC2, $C9CEC5C4, $DBD8CCCF,
  151.     $CFD2D4D3, $D1D3D4C0, $C5C4D5C2, $C1D2C2CF, $CFCECEC5, $CFCED8CC, $CDD9CECE, $C2CFD2D0,
  152.     $C1DED5CC, $C9CCC1D7, $C9CBD3C5, $D9CECEC5, $CFCED4D3, $C5D7D4D3, $CEC9D2D0, $CEC5CDC5,
  153.     $C9C9CEC5, $C9CEC5CD
  154.   );
  155.  
  156.   Tetragrams4: array [0..956] of Cardinal = (
  157.     $D1BAD082, $B4D09ED0, $D1B0D0BD, $B0D087D1, $D085D181, $D1BBD0B8, $BED09AD0, $B5D0BDD0,
  158.     $D0B5D0BE, $83D188D1, $D181D1B4, $D0B4D08E, $8CD182D1, $8ED18CD1, $83D181D1, $D181D181,
  159.     $BDD0B0D0, $D087D1B0, $D0BDD0B4, $D1B2D0B5, $B5D08FD1, $83D1B6D0, $D0B5D080, $82D180D1,
  160.     $D087D1BE, $D1B2D082, $D0BCD08F, $B2D083D1, $80D1B8D0, $81D1BBD0, $BED091D0, $D08BD1B1,
  161.     $D0B5D0B8, $D1BDD0B6, $BBD0B8D0, $BCD0B7D0, $D0B8D0BD, $D1B5D087, $B8D0BAD0, $D1BED0B3,
  162.     $83D1BDD0, $D088D180, $81D181D1, $D0BBD0B8, $D1B0D082, $B0D0B6D0, $BBD0B0D0, $BAD083D1,
  163.     $D082D180, $D181D1B0, $85D183D1, $B6D0B8D0, $D1BED081, $BBD0BAD0, $D0B1D0B8, $B0D0A2D0,
  164.     $8CD1B2D0, $D1B1D0B0, $81D1BAD0, $D1B0D089, $D088D18C, $83D1B7D0, $D0B8D082, $D083D180,
  165.     $BBD0BBD0, $BDD0BCD0, $B0D084D1, $D1B1D0B5, $BDD0B4D0, $D18ED183, $B5D0B4D0, $D0B5D0B2,
  166.     $81D192D0, $8CD1B4D0, $B2D0B8D0, $D080D19F, $D1B8D0B7, $D0BDD0BD, $D18FD1BD, $BDD085D1,
  167.     $D1BAD0B0, $D1BED080, $D0B3D0B5, $D0B3D080, $B5D0BED0, $B0D0B2D0, $D0B8D0B0, $B2D08BD1,
  168.     $B5D08BD1, $D1B2D080, $D080D1B5, $D0B7D083, $D180D1B4, $D187D1BE, $D1B8D0BB, $D088D18B,
  169.     $D0B0D0BA, $BDD0B2D0, $D0B4D09E, $D0BBD0BF, $BAD0BED0, $D0BDD0BA, $8FD1B4D0, $D18BD180,
  170.     $87D181D1, $BFD0B2D0, $D0B8D0B3, $D0B5D0BD, $82D18CD1, $BBD0BCD0, $BED085D1, $83D180D1,
  171.     $D085D1B5, $88D1B0D0, $D08BD1B7, $BBD0B2D0, $D082D183, $D1B8D0B3, $D18BD1BF, $D180D182,
  172.     $B3D0B7D0, $D1B8D0B1, $BED0B3D0, $BDD0BAD0, $D0B5D081, $D081D1B2, $B4D0BDD0, $B5D087D1,
  173.     $BAD0BBD0, $83D1B2D0, $B8D0B7D0, $B7D083D1, $D0BAD087, $BED081D1, $D1BBD0B5, $D1B0D081,
  174.     $D083D1BA, $D0B4D0BD, $D0B4D0B3, $D1B4D0B8, $D0B4D0B0, $89D1B0D0, $D0BDD080, $BCD0BCD0,
  175.     $B2D0BAD0, $D182D18F, $D188D1B5, $D1B5D080, $D084D1BE, $D182D181, $BED0B5D0, $D0BCD0B0,
  176.     $8ED1BED0, $D083D182, $87D18BD1, $80D1B2D0, $81D195D0, $D0B0D087, $D0BDD09E, $82D181D1,
  177.     $D081D183, $B0D0B7D0, $D081D195, $D0B1D08E, $89D18FD1, $B1D0BED0, $D089D1B0, $89D1B8D0,
  178.     $82D18DD1, $D1BAD083, $8BD1BCD0, $B4D0B8D0, $D1B8D087, $D0BDD0BE, $D180D1B5, $D181D1B1,
  179.     $D1BED0BB, $D0B4D083, $D0B3D0B8, $B9D0B0D0, $82D1BED0, $80D1BED0, $D0BCD0B5, $D0B0D0A2,
  180.     $BED0A1D0, $D0B6D080, $D081D1B0, $D0BED09F, $D18BD1B2, $B2D0B4D0, $D1B8D0BD, $D0B4D0BE,
  181.     $83D1B3D0, $BBD0B4D0, $D081D1BA, $D1B0D080, $B6D0B5D0, $BAD087D1, $D0BDD0B2, $BAD082D1,
  182.     $80D1B0D0, $D0B4D0B6, $BAD088D1, $D183D1BB, $D1BED0B2, $D0BED0B4, $D0BBD082, $B2D082D1,
  183.     $B1D08ED1, $D1B8D0BF, $BDD081D1, $D1BAD0BE, $D1BED0BF, $BCD0B5D0, $D081D181, $D181D1BB,
  184.     $D085D1BE, $BED0BCD0, $BCD08CD1, $D089D18E, $B3D0B8D0, $B7D0B5D0, $D0B8D0BF, $D1BED0BA,
  185.     $D182D1BE, $82D18BD1, $D1BDD0B2, $D0BAD0BE, $D083D1BB, $D08BD1B2, $D1B4D0BD, $D0B4D0B7,
  186.     $D182D1B8, $B8D0BED0, $D0B7D0B2, $D181D18B, $D083D181, $D089D1B5, $D0BAD0B4, $D0BBD0B1,
  187.     $B5D09DD0, $B4D0B7D0, $D080D181, $B8D0B6D0, $8ED1B8D0, $D0BAD0BB, $D083D187, $D18BD1BB,
  188.     $8FD18CD1, $D188D1B8, $D1BDD081, $BBD082D1, $B5D082D1, $B0D0B3D0, $D180D183, $D087D1B9,
  189.     $D1B5D0B2, $D0BAD0B0, $BBD0B3D0, $D0BDD08F, $D0B8D0B1, $D187D183, $8FD1BCD0, $D0BED0B7,
  190.     $D08FD182, $BFD0B5D0, $D0BAD082, $D18ED18F, $B5D0B7D0, $D082D18B, $D0BED09C, $D181D1B9,
  191.     $D1B1D0BE, $D0B4D081, $D0BED0BB, $D0B0D09D, $B5D0B8D0, $87D1BED0, $D18ED1B0, $D0B2D08B,
  192.     $D1B7D0B0, $D18BD1BC, $BED0A0D0, $D182D1B0, $D08FD1B2, $D1B8D0BA, $D1B3D0BE, $D081D1BD,
  193.     $D180D1BE, $D0B5D0B7, $D0B7D08F, $D180D1B3, $D0B5D082, $D0BDD083, $86D1BED0, $D1B8D088,
  194.     $D0BFD0B0, $D087D1B8, $82D1B5D0, $D08BD1BC, $8BD192D0, $8BD1BBD0, $80D1B5D0, $BED0BAD0,
  195.     $D080D1BF, $D0B8D0BC, $D087D183, $D0BBD0B3, $D18CD1BB, $D0BFD083, $D1B0D0B7, $D181D1B5,
  196.     $8BD1BFD0, $BBD0BED0, $D0BDD087, $D1BDD0B0, $D1B4D083, $D0BDD0B6, $D0B0D0B2, $D0B2D0B7,
  197.     $B8D089D1, $BED0BED0, $BFD0BED0, $8FD1B1D0, $D1BDD080, $BDD0B1D0, $BED082D1, $BCD0B8D0,
  198.     $D086D1BD, $D0BED0BF, $B1D08BD1, $B8D0B4D0, $D081D182, $D082D1B8, $B0D09DD0, $B8D0B0D0,
  199.     $B4D0B3D0, $8FD1B0D0, $D0B2D0B8, $D1B5D0B4, $D081D1B5, $85D1B0D0, $B4D0B5D0, $D1BED085,
  200.     $D1B5D0B1, $81D1B8D0, $D1B0D088, $BDD088D1, $D1B2D0B0, $BDD0B9D0, $D081D18F, $B9D0B5D0,
  201.     $B7D08FD1, $D1BED0BD, $D1BDD0BE, $BCD08FD1, $D0B0D0B4, $B8D085D1, $8FD181D1, $BAD0B8D0,
  202.     $D0B5D0BC, $D0B5D0BB, $D0B8D088, $BCD083D1, $D1B2D083, $83D187D1, $D1B5D0BC, $D088D1B8,
  203.     $D0BAD0B8, $D0BBD0B7, $88D180D1, $D089D183, $D0BFD081, $B0D083D1, $8ED18FD1, $D08FD1B8,
  204.     $BDD0BDD0, $83D1BFD0, $B5D0BFD0, $B0D097D0, $8BD1BDD0, $BBD0B5D0, $BCD081D1, $D1B5D0B0,
  205.     $8BD186D1, $D1B5D0B6, $BDD083D1, $86D1B5D0, $BAD080D1, $D0BDD0B1, $D183D1BD, $D0B6D0BB,
  206.     $D1BCD0BE, $D081D1B8, $D18CD182, $D080D1B8, $D087D181, $B5D084D1, $D18FD1B4, $B5D0A2D0,
  207.     $D087D1B5, $B6D0BED0, $D1B2D0B8, $D0B8D0BE, $D0B3D083, $D0BED09A, $8CD187D1, $D08BD180,
  208.     $89D1BED0, $B5D0B3D0, $D08CD1BB, $D1B8D086, $B5D0A1D0, $D082D187, $D0BBD0B4, $D0BED0B8,
  209.     $82D187D1, $D0B6D0B0, $D0BCD08B, $D0B0D0B6, $D1BBD0B2, $8CD188D1, $87D1BDD0, $D0BED085,
  210.     $B0D0BFD0, $D1B8D082, $D1B0D0B4, $80D183D1, $BAD0B0D0, $D088D183, $D0B7D0B5, $D0B5D0BF,
  211.     $85D18FD1, $D0B6D0BE, $BDD0BED0, $80D1B3D0, $D0B7D0B8, $D1B8D080, $D0BBD0BB, $D0BAD0B5,
  212.     $D082D1B5, $D0BAD081, $D0B0D0B1, $D087D18E, $B8D0BDD0, $BAD0B4D0, $8FD1BDD0, $8FD1B8D0,
  213.     $BBD0B1D0, $BAD0BDD0, $D1BCD0B8, $D082D1B2, $D1BFD0B0, $D0BBD0B2, $D1B8D0B6, $D1B2D0BE,
  214.     $B0D086D1, $D1BDD0B7, $D0BED0B5, $87D1B8D0, $D1BBD0BA, $B0D0BDD0, $B4D0B6D0, $83D1BBD0,
  215.     $8FD1B5D0, $D0BBD081, $D1BDD08F, $BDD0BBD0, $B5D0B2D0, $D0BBD0B5, $80D1BAD0, $87D1B9D0,
  216.     $D083D1BC, $B1D083D1, $D080D1B7, $D0B4D0B5, $D0B0D081, $D080D1B2, $D0B8D0B4, $D0BDD0B5,
  217.     $B8D086D1, $B0D0B5D0, $B5D0BCD0, $D083D1B7, $BBD0BFD0, $D082D18F, $D0BED0B1, $8AD1B1D0,
  218.     $D082D18D, $D085D183, $D1BAD081, $D0BED0B2, $85D18BD1, $D080D1BA, $B6D0BBD0, $D182D18B,
  219.     $86D1B8D0, $D1B5D083, $D081D180, $D089D18F, $89D18ED1, $BED0B1D0, $D080D1B0, $D1B8D0B2,
  220.     $8BD181D1, $D18FD1B8, $8FD1BFD0, $D083D1BD, $D0B5D0B4, $D1BBD083, $D0BED081, $B5D08CD1,
  221.     $B0D0B1D0, $D081D192, $D1BAD0B8, $D182D1B5, $B2D0B0D0, $BAD0B2D0, $D080D1B4, $88D183D1,
  222.     $BAD08BD1, $8ED1BBD0, $D0BBD08B, $D1BFD081, $D0B5D088, $B4D083D1, $D082D1BD, $8FD182D1,
  223.     $B0D092D0, $D0B0D09A, $D0B1D0BE, $D0BAD0B2, $D0B8D0B2, $D1B5D0BF, $B5D0B6D0, $82D1B8D0,
  224.     $B1D0B5D0, $BBD083D1, $B0D0A0D0, $B2D0B7D0, $B8D080D1, $88D1B8D0, $B2D0BED0, $BED0BFD0,
  225.     $85D181D1, $83D1B4D0, $8ED183D1, $D085D1B0, $D0B2D081, $BDD0B8D0, $82D1A1D0, $D18FD181,
  226.     $B4D0BED0, $B0D09AD0, $D089D1B1, $D0BAD08C, $D1BCD0B5, $87D183D1, $D082D1B9, $D0BED082,
  227.     $B5D080D1, $B8D0B8D0, $82D1BDD0, $D1B0D086, $D0B2D0BE, $BED084D1, $D085D1B8, $D0BFD0B8,
  228.     $D08FD1BB, $D180D1B0, $89D183D1, $D081D18B, $D0B3D0B7, $82D18ED1, $D1B0D0B2, $D0B5D0B0,
  229.     $D0BAD083, $D0B0D0B7, $D0BBD0BA, $D0B0D0BD, $D086D1BE, $BFD083D1, $B0D081D1, $D1BFD0B5,
  230.     $B7D0BED0, $B1D0B8D0, $B4D081D1, $BFD081D1, $D1B9D0B5, $BED0B4D0, $D08CD1BD, $BED0BDD0,
  231.     $D0B6D083, $D0B6D0B5, $D1B0D0B1, $8CD1BBD0, $B6D0B0D0, $BAD08DD1, $83D1B1D0, $D181D183,
  232.     $B2D08FD1, $D1BDD087, $82D1B9D0, $82D18FD1, $D083D1BF, $D0BCD0B8, $B7D0B0D0, $D0BBD08F,
  233.     $D08BD181, $B5D086D1, $B8D0BCD0, $D0BBD0BE, $D0B0D089, $D082D18C, $B9D0BED0, $D183D1BC,
  234.     $8BD1B4D0, $B0D089D1, $D180D1BA, $D0BDD08C, $81D1BDD0, $D0B9D0BE, $D1B5D082, $D0B2D08F,
  235.     $85D1B5D0, $BBD0B7D0, $B6D080D1, $D18CD1BD, $BDD080D1, $80D1BFD0, $B5D0BBD0, $D18BD1BD,
  236.     $BED0B7D0, $D08BD182, $D0B5D0B1, $D0B5D0B6, $D0B0D0BC, $B7D0B8D0, $D0B0D0BF, $BED09DD0,
  237.     $D181D1BD, $D0BCD081, $D0B8D0BA, $BDD08CD1, $B8D0B1D0, $D08BD1BB, $D082D1AD, $D0B2D082,
  238.     $D083D1B4, $D0B3D0BE, $D0B5D087, $80D1B4D0, $D0B2D0B0, $D088D1BE, $D1BDD0B4, $B4D080D1,
  239.     $B8D082D1, $B5D081D1, $BDD0B6D0, $D18FD1BB, $BED092D0, $D080D18B, $D086D1B0, $BCD0BED0,
  240.     $D1BDD0B5, $D0BCD080, $D183D181, $BFD0BCD0, $D0B0D085, $D08BD1BD, $D080D1BE, $BED0B8D0,
  241.     $81D180D1, $82D1B0D0, $D1B4D0B0, $BBD08FD1, $BDD09ED0, $D0BDD088, $D0B1D0B5, $D0B7D0B0,
  242.     $83D1BAD0, $D0BAD088, $D0BDD0B0, $D0B8D0BB, $B9D0B8D0, $B3D0B0D0, $88D18BD1, $B8D0B3D0,
  243.     $BFD0B8D0, $D088D1B5, $81D1B5D0, $81D1B1D0, $80D1B7D0, $D1B0D0B6, $8FD180D1, $8ED1B0D0,
  244.     $88D1BED0, $D0BCD083, $BAD0B5D0, $D0B8D089, $D0BAD0BD, $D080D1B3, $D0BED0BC, $B0D0BAD0,
  245.     $83D1BCD0, $8FD1BED0, $87D18ED1, $D183D1BA, $B7D08CD1, $D082D181, $D18FD1BF, $D0BDD0BC,
  246.     $D181D1B2, $BFD0B0D0, $D0B5D0B3, $82D183D1, $B0D094D0, $D088D1B0, $D0BBD0B0, $D1B0D087,
  247.     $D0BDD082, $D181D1BE, $8BD1B7D0, $D1BED0B1, $D0B5D086, $88D1B5D0, $D0B4D0B8, $D0B1D083,
  248.     $BED094D0, $B5D0B1D0, $D1B4D0BE, $87D1B5D0, $81D18CD1, $D1BAD0B5, $D0BDD0BB, $D18BD182,
  249.     $D181D18C, $D1B5D081, $8FD1BBD0, $BFD08BD1, $82D1BAD0, $D183D180, $BED0A2D0, $D1B8D0BC,
  250.     $D0B2D083, $D1B0D0B3, $D182D183, $B0D085D1, $89D1B5D0, $BDD087D1, $B5D09FD0, $D180D1B8,
  251.     $D1B5D089, $83D1B0D0, $D1BDD08C, $B3D0BDD0, $D1BED0B4, $D1BED09F, $D183D1B4, $D086D1B8,
  252.     $B0D082D1, $83D182D1, $D183D1B1, $BED080D1, $86D1BDD0, $B5D092D0, $BDD08BD1, $BCD0B0D0,
  253.     $B4D08FD1, $81D182D1, $B0D0B8D0, $D0B5D089, $B5D0B0D0, $80D181D1, $BDD082D1, $D0B7D0BE,
  254.     $D1B3D0B8, $BCD080D1, $D1B4D0B5, $BED09FD0, $D0B2D0B4, $BDD0B3D0, $8BD1B1D0, $B0D0BCD0,
  255.     $D0B1D0B0, $D08FD180, $D1B5D0BB, $D082D1BA, $81D1B9D0, $D0BBD083, $B5D0B5D0, $D0BDD0B8,
  256.     $D18ED1BB, $82D1B2D0, $D0B2D080, $BBD088D1, $B4D0B2D0, $D18BD1B1, $81D1B2D0, $B8D084D1,
  257.     $D0B8D087, $D182D1BD, $D0B9D0B0, $82D1ADD0, $D0B0D0B8, $D1BFD0BE, $D1BBD0BE, $D1BBD0B4,
  258.     $80D182D1, $D1BBD081, $D0B4D080, $88D18CD1, $D081D1B9, $D1B7D0BE, $D1B4D0B6, $81D1BED0,
  259.     $D181D1B8, $89D1B1D0, $D08FD1BE, $D0BED0BA, $8BD1B2D0, $D0B8D080, $B5D089D1, $D0BED0B3,
  260.     $D0B0D0B3, $D0BED0BD, $D08BD1B4, $B4D0B0D0, $B8D087D1, $D0BDD0B9, $B0D088D1, $D183D1BF,
  261.     $8CD181D1, $B0D09CD0, $D0B4D08F, $D0BFD0B5, $D183D182, $D1B8D081, $D18FD1BE, $D1B0D0BA,
  262.     $B8D0B2D0, $D080D183, $86D1B0D0, $B0D0BBD0, $D1BBD0B0, $BDD0B5D0, $B1D0B0D0, $BED0B2D0,
  263.     $D0B3D0B0, $B2D0B5D0, $D1B8D0B4, $D183D1B2, $D1B0D0BB, $B2D081D1, $D081D1BE, $D0B6D0B8,
  264.     $81D1B4D0, $D1BDD0BD, $81D18FD1, $81D1B0D0, $D1B0D0BF, $D0B0D0BB, $BBD08BD1, $8FD1B7D0,
  265.     $B5D0BAD0, $D08FD1BD, $D1BED082, $D083D1B1, $D0B0D082, $D0BCD08C, $B0D0B4D0, $81D183D1,
  266.     $B2D080D1, $B5D088D1, $B6D083D1, $BBD081D1, $BCD08BD1, $D080D182, $D1BBD0B3, $D088D1B2,
  267.     $BAD081D1, $D080D1B1, $D0B8D081, $D0B8D084, $D0BED0BE, $D180D1BF, $D1B7D0B5, $D1BDD082,
  268.     $80D19FD0, $D1BDD0B8, $B7D0B2D0, $D0BED080, $BED09CD0, $B0D080D1, $8BD182D1, $D0BDD081,
  269.     $88D1B2D0, $B4D08ED1, $D1B5D08F, $B8D081D1, $D0B8D0B6, $D0BCD0B7, $D18FD180, $8BD180D1,
  270.     $81D18BD1, $BED0BBD0, $D1BCD0B0, $D0BDD0B7, $B3D080D1, $D1B0D0BC, $B8D0BBD0, $D1B8D0BE,
  271.     $8FD1B2D0, $D0B2D0B5, $85D1BED0, $D1B8D089, $D1BAD0BD, $D0B8D0B7, $B8D0BFD0, $D182D18E,
  272.     $B8D088D1, $B9D08BD1, $BED088D1, $80D1B1D0, $D181D182, $D1BED0BC, $8BD19CD0, $D082D1BE,
  273.     $D0BFD0BC, $D0B0D088, $D0B0D080, $BDD0B7D0, $BAD08CD1, $BDD08FD1, $D0BCD0BE, $D0BBD088,
  274.     $84D1BED0, $B5D083D1, $D0B2D0BA, $D183D1B3, $D0BFD0BE, $D082D1B0, $D1B5D0BD, $B3D0BED0,
  275.     $80D18BD1, $B3D083D1, $8CD180D1, $87D1B0D0, $D0B8D086, $D08ED1BB, $D1B9D0B0, $D0BAD080,
  276.     $D1BED084, $8CD1BDD0, $B3D0B5D0, $D1B5D09F, $85D1B8D0
  277.   );
  278.  
  279.   CodePages: array [0..4] of TCodePage = (
  280.     (Name: 'ASCII'),
  281.     (Name: 'cp1251'; Tetragrams: @Tetragrams1; Count: 350),
  282.     (Name: 'cp866'; Tetragrams: @Tetragrams2; Count: 353),
  283.     (Name: 'koi8r'; Tetragrams: @Tetragrams3; Count: 346),
  284.     (Name: 'utf8'; Tetragrams: @Tetragrams4; Count: 957)
  285.   );
  286.  
  287.   TetragramsSize = 8192;
  288.   MinTetragrams = 7;
  289.  
  290. var
  291.   Tetragrams:array[0..TetragramsSize-1] of TTetragram;
  292.   Counters:array[0..High(CodePages)] of Integer;
  293. const
  294.   M=$5BD1E995;
  295.  
  296. procedure LoadTetragrams;
  297. var
  298.   A,B:Integer;
  299.   P:PCardinal;
  300.   I:Cardinal;
  301. begin
  302.   for A:=1 to High(CodePages) do begin
  303.     P:=CodePages[A].Tetragrams;
  304.     for B:=0 to CodePages[A].Count-1 do begin
  305.       I:=P^*M;
  306.       I:=(I xor(I shr 24))*M;
  307.       I:=(I xor(I shr 13))*M;
  308.       I:=(I xor(I shr 15))and High(Tetragrams);
  309.       while Tetragrams[I].V<>0 do I:=(I+1)and High(Tetragrams);
  310.       Tetragrams[I].V:=P^;
  311.       Tetragrams[I].I:=A;
  312.       Inc(P);
  313.     end;
  314.   end;
  315. end;
  316.  
  317. function GetFileCodePage(const Data:array of Byte):String;
  318. var
  319.   A,Min:Integer;
  320.   I,T:Cardinal;
  321. begin
  322.   for A:=0 to Length(Data)-4 do begin
  323.     T:=PCardinal(@Data[A])^;
  324.     I:=T*M;
  325.     I:=(I xor(I shr 24))*M;
  326.     I:=(I xor(I shr 13))*M;
  327.     I:=(I xor(I shr 15))and High(Tetragrams);
  328.     while (Tetragrams[I].V<>0)and(Tetragrams[I].V<>T) do
  329.       I:=(I+1)and High(Tetragrams);
  330.     Inc(Counters[Tetragrams[I].I]);
  331.   end;
  332.   I:=0;
  333.   Min:=MinTetragrams;
  334.   for A:=1 to High(Counters) do
  335.     if Counters[A]>Min then begin
  336.       Min:=Counters[A];
  337.       I:=A;
  338.     end;
  339.   Result:=CodePages[I].Name;
  340. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement