RVCodePages.pas
上传用户:daoqigc
上传日期:2021-04-20
资源大小:2795k
文件大小:3k
源码类别:

RichEdit

开发平台:

Delphi

  1. {*******************************************************}
  2. {                                                       }
  3. {       RichView                                        }
  4. {       Procedures for design-time property editor      }
  5. {       for TRVCodePage.                                }
  6. {       This unit should not be used by applications    }
  7. {       themselves.                                     }
  8. {                                                       }
  9. {       Copyright (c) Sergey Tkachenko                  }
  10. {       svt@trichview.com                               }
  11. {       http://www.trichview.com                        }
  12. {                                                       }
  13. {*******************************************************}
  14. unit RVCodePages;
  15. interface
  16. uses SysUtils, Classes,  RVStyle;
  17. procedure GetCodePageValues(Proc: TGetStrProc);
  18. function CodePageToIdent(CodePage: TRVCodePage): String;
  19. function IdentToCodePage(const Ident: string; var CodePage: TRVCodePage): Boolean;
  20. implementation
  21. const CodePageNames: array [0..15] of String =
  22. (
  23.       '0 Default ANSI code page',
  24.       '1 Default OEM code page',
  25.       '874 ANSI/OEM - Thai (same as 28605, ISO 8859-15)',
  26.       '932 ANSI/OEM - Japanese, Shift-JIS',
  27.       '936 ANSI/OEM - Simplified Chinese (PRC, Singapore)',
  28.       '949 ANSI/OEM - Korean (Unified Hangeul Code)',
  29.       '950 ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC)',
  30.       '1250 ANSI - Central European',
  31.       '1251 ANSI - Cyrillic',
  32.       '1252 ANSI - Latin I',
  33.       '1253 ANSI - Greek',
  34.       '1254 ANSI - Turkish',
  35.       '1255 ANSI - Hebrew',
  36.       '1256 ANSI - Arabic',
  37.       '1257 ANSI - Baltic',
  38.       '1258 ANSI/OEM - Vietnamese'
  39. );
  40. const CodePageValues: array [0..15] of TRVCodePage =
  41. (
  42.       0,    //  Default ANSI code page
  43.       1,    //  Default OEM code page
  44.       874,  //  ANSI/OEM - Thai (same as 28605, ISO 8859-15)
  45.       932,  //  ANSI/OEM - Japanese, Shift-JIS
  46.       936,  //  ANSI/OEM - Simplified Chinese (PRC, Singapore)
  47.       949,  //  ANSI/OEM - Korean (Unified Hangeul Code)
  48.       950,  //  ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC)
  49.       1250, //  ANSI - Central European
  50.       1251, //  ANSI - Cyrillic
  51.       1252, //  ANSI - Latin I
  52.       1253, //  ANSI - Greek
  53.       1254, //  ANSI - Turkish
  54.       1255, //  ANSI - Hebrew
  55.       1256, //  ANSI - Arabic
  56.       1257, //  ANSI - Baltic
  57.       1258  //  ANSI/OEM - Vietnamese
  58. );
  59. {------------------------------------------------------------------------------}
  60. procedure GetCodePageValues(Proc: TGetStrProc);
  61. var i: Integer;
  62. begin
  63.   for i := Low(CodePageNames) to High(CodePageNames) do
  64.    Proc(CodePageNames[I]);
  65. end;
  66. {------------------------------------------------------------------------------}
  67. function CodePageToIdent(CodePage: TRVCodePage): String;
  68. var i: Integer;
  69. begin
  70.   for i := Low(CodePageNames) to High(CodePageNames) do
  71.     if CodePageValues[i] = CodePage then begin
  72.        Result := CodePageNames[i];
  73.        exit;
  74.     end;
  75.   FmtStr(Result, '%u', [CodePage]);
  76. end;
  77. {------------------------------------------------------------------------------}
  78. function IdentToCodePage(const Ident: string; var CodePage: TRVCodePage): Boolean;
  79. var i: Integer;
  80. begin
  81.   for i := Low(CodePageNames) to High(CodePageNames) do
  82.     if CodePageNames[i] = Ident then begin
  83.        CodePage := CodePageValues[i];
  84.        Result := True;
  85.        exit;
  86.     end;
  87.   Result := False;
  88. end;
  89. end.