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

📄 imcode.pas

📁 进销存·完整的·有数据库的·非常完整·只得参考
💻 PAS
📖 第 1 页 / 共 5 页
字号:
unit IMCode;

(*
     Copyright (C) Trueway(TM) 6, 1999 - 3, 2000, All rights reserved.
     Trueway(TM) is the trademark of programs by LiQunwei

     外挂式输入码生成器 Version 4.0
     Created On: 06/05/1999
     Last Update: 03/23/2000
     Update History:
       06/05  建立本程序的思想并开始编制程序
       06/06  完成程序的前期版本
       06/07  整理程序
       06/14  修正了一个 Bug
       06/16  除去了生成全拼中的 '.'; 使用 PChar 作为参数
              使用 PChar 作为参数可省去使用 DELPHIMM.DLL (BORLNDMM.DLL)
              使 C++ 语言能直接使用
       06/17  将参数的命名规范化(凶牙利命名)
              增加了五种发音(如 女 'nv' )
       06/21  修正了一个 Bug
       08/14  调整 iMode 的作用
              将 163 区的全角字符返回半角字符
       08/15  增加了大小写罗马数字的识别
       09/04  增加了 11, 12, 13 三种方式, 对应 1, 2, 3, 仅不输出 '?'
       09/23  增加希腊字母的识别(转为标准的对应英文字母)
       10/23  增加 MakeSpellCode, GetSpellCode, 改用二进制标志位判断
       10/24  拼音索引表索引改为短整数, 可节省 48K 的空间
       01/27  修改 iCount 的含义
       01/30  增加 StrPch 函数
       03/23  使代码字典外挂

     Notice:
       程序思想来源于 UCDOS 7.0 拼音输入法
       汉字发音从中文版的 Windows 98 的全拼输入法词库取
       支持 GBK 汉字
       处理多音字的发音为最常用发音
         如 '着' 字有 'Zhe' 'Zhao' 'Zhuo' 三种发音, 输出 'Zhe'
       请正确设置 iMode 参数
       在 Delphi 3.0 或更高的版本中使用

     调用示例:
       ...
       First;
       while not EOF do begin
         Edit;
         FieldByName(PyFieldName).AsString :=
           String(MakePyCode(FieldByName(ChnFieldName).AsString, 1, 6);
         Next;
       end;
       ...
*)

interface

function MakeSpellCode(stText: string; iMode, iCount: Integer): string;
{ iMode 二进制功能位说明
  X X X X X X X X X X X X X X X X
                            3 2 1
  1: 0 - 只取各个汉字声母的第一个字母; 1 - 全取
  2: 0 - 遇到不能翻译的字符不翻译; 1 - 翻译成 '?' (本选项目针对全角字符)
  3: 0 - 生成的串不包括非数字, 字母的其他字符; 1 - 包括
     (控制全角的要输出非数字, 字母字符的; 半角的非数字, 字母字符)
  请在调用之前调用 LoadIMCode 函数
         }

function GetSpellCode(szText: PChar; iMode, iCount: Integer): PChar; stdcall;

function LoadIMCode(as_dict_file: PChar): integer; stdcall;
// 切换输入码数据源
// 调用示例: LoadIMCode('winpy.txt');
// 此函数只需在切换字典数据时使用

function UseInplace: integer; stdcall;
// 使用内置拼音代码字典

function UseOutplace: integer; stdcall;
// 使用外置拼音代码字典

function IsOutplace: integer; stdcall;
// 是否外置

implementation

uses
  SysUtils;

type
  { 拼音代码表 }
  TPYCode = record
    PYCode: string[6];
  end;
  TFPYCodes = array[1..126, 1..191] of TPYCode;

var
  ImCodes: TFPYCodes;

const
  PYMUSICCOUNT = 405;
  PyMusicCode: array[1..PYMUSICCOUNT] of string[6] = { 汉字基本发音表 }(
    'a', 'ai', 'an', 'ang', 'ao', 'ba', 'bai', 'ban', 'bang', 'bao',
    'bei', 'ben', 'beng', 'bi', 'bian', 'biao', 'bie', 'bin', 'bing', 'bo',
    'bu', 'ca', 'cai', 'can', 'cang', 'cao', 'ce', 'ceng', 'cha', 'chai',
    'chan', 'chang', 'chao', 'che', 'chen', 'cheng', 'chi', 'chong', 'chou',
    'chu',
    'chuai', 'chuan', 'chuang', 'chui', 'chun', 'chuo', 'ci', 'cong', 'cou',
    'cu',
    'cuan', 'cui', 'cun', 'cuo', 'da', 'dai', 'dan', 'dang', 'dao', 'de',
    'deng', 'di', 'dian', 'diao', 'die', 'ding', 'diu', 'dong', 'dou', 'du',
    'duan', 'dui', 'dun', 'duo', 'e', 'en', 'er', 'fa', 'fan', 'fang',
    'fei', 'fen', 'feng', 'fu', 'fou', 'ga', 'gai', 'gan', 'gang', 'gao',
    'ge', 'ji', 'gen', 'geng', 'gong', 'gou', 'gu', 'gua', 'guai', 'guan',
    'guang', 'gui', 'gun', 'guo', 'ha', 'hai', 'han', 'hang', 'hao', 'he',
    'hei', 'hen', 'heng', 'hong', 'hou', 'hu', 'hua', 'huai', 'huan', 'huang',
    'hui', 'hun', 'huo', 'jia', 'jian', 'jiang', 'qiao', 'jiao', 'jie', 'jin',
    'jing', 'jiong', 'jiu', 'ju', 'juan', 'jue', 'jun', 'ka', 'kai', 'kan',
    'kang', 'kao', 'ke', 'ken', 'keng', 'kong', 'kou', 'ku', 'kua', 'kuai',
    'kuan', 'kuang', 'kui', 'kun', 'kuo', 'la', 'lai', 'lan', 'lang', 'lao',
    'le', 'lei', 'leng', 'li', 'lia', 'lian', 'liang', 'liao', 'lie', 'lin',
    'ling', 'liu', 'long', 'lou', 'lu', 'luan', 'lue', 'lun', 'luo', 'ma',
    'mai', 'man', 'mang', 'mao', 'me', 'mei', 'men', 'meng', 'mi', 'mian',
    'miao', 'mie', 'min', 'ming', 'miu', 'mo', 'mou', 'mu', 'na', 'nai',
    'nan', 'nang', 'nao', 'ne', 'nei', 'nen', 'neng', 'ni', 'nian', 'niang',
    'niao', 'nie', 'nin', 'ning', 'niu', 'nong', 'nu', 'nuan', 'nue', 'yao',
    'nuo', 'o', 'ou', 'pa', 'pai', 'pan', 'pang', 'pao', 'pei', 'pen',
    'peng', 'pi', 'pian', 'piao', 'pie', 'pin', 'ping', 'po', 'pou', 'pu',
    'qi', 'qia', 'qian', 'qiang', 'qie', 'qin', 'qing', 'qiong', 'qiu', 'qu',
    'quan', 'que', 'qun', 'ran', 'rang', 'rao', 're', 'ren', 'reng', 'ri',
    'rong', 'rou', 'ru', 'ruan', 'rui', 'run', 'ruo', 'sa', 'sai', 'san',
    'sang', 'sao', 'se', 'sen', 'seng', 'sha', 'shai', 'shan', 'shang', 'shao',
    'she', 'shen', 'sheng', 'shi', 'shou', 'shu', 'shua', 'shuai', 'shuan',
    'shuang',
    'shui', 'shun', 'shuo', 'si', 'song', 'sou', 'su', 'suan', 'sui', 'sun',
    'suo', 'ta', 'tai', 'tan', 'tang', 'tao', 'te', 'teng', 'ti', 'tian',
    'tiao', 'tie', 'ting', 'tong', 'tou', 'tu', 'tuan', 'tui', 'tun', 'tuo',
    'wa', 'wai', 'wan', 'wang', 'wei', 'wen', 'weng', 'wo', 'wu', 'xi',
    'xia', 'xian', 'xiang', 'xiao', 'xie', 'xin', 'xing', 'xiong', 'xiu', 'xu',
    'xuan', 'xue', 'xun', 'ya', 'yan', 'yang', 'ye', 'yi', 'yin', 'ying',
    'yo', 'yong', 'you', 'yu', 'yuan', 'yue', 'yun', 'za', 'zai', 'zan',
    'zang', 'zao', 'ze', 'zei', 'zen', 'zeng', 'zha', 'zhai', 'zhan', 'zhang',
    'zhao', 'zhe', 'zhen', 'zheng', 'zhi', 'zhong', 'zhou', 'zhu', 'zhua',
    'zhuai',
    'zhuan', 'zhuang', 'zhui', 'zhun', 'zhuo', 'zi', 'zong', 'zou', 'zu',
    'zuan',
    'zui', 'zun', 'zuo', '', 'ei', 'm', 'n', 'dia', 'cen', 'nou',
    'jv', 'qv', 'xv', 'lv', 'nv'
    );

  PyCodeIndex: array[1..126, 1..191] of Word = ({ 拼音索引表 }
    (354, 279, 331, 0, 190, 39, 284, 67, 249, 167, 353, 19, 133, 92, 129, 152,
    31, 385, 105, 131, 84, 348, 348, 329, 133, 0, 376, 116, 283, 349, 344, 87,
    133, 0, 0, 0, 284, 202, 0, 0, 0, 0, 0, 0, 342, 345, 0, 276, 199, 243, 0, 0,
    52, 0, 375, 102, 88, 176, 170, 348, 136, 180, 375, 0, 354, 294, 299, 94,
    344, 368, 344, 55, 347, 333, 131, 347, 353, 369, 166, 74, 325, 92, 0, 329,
    6, 19, 0, 306, 0, 332, 372, 114, 107, 20, 33, 370, 279, 258, 79, 191, 243,
    328, 220, 83, 43, 324, 62, 376, 229, 354, 64, 73, 329, 348, 336, 92, 2, 349,
    232, 282, 84, 305, 389, 357, 134, 332, 343, 336, 363, 332, 217, 208, 335,
    340, 377, 389, 13, 232, 348, 294, 348, 374, 107, 181, 378, 21, 250, 14, 371,
    47, 346, 369, 14, 332, 250, 284, 10, 121, 110, 333, 91, 78, 194, 19, 113,
    123, 102, 251, 47, 337, 282, 320, 106, 157, 348, 101, 349, 189, 340, 3, 175,
    77, 178, 29, 37, 343, 377, 263, 125, 294, 56),
    (302, 214, 130, 132, 313, 373, 393, 39, 404, 134, 286, 313, 282, 320, 20,
    201, 334, 318, 354, 330, 340, 101, 148, 329, 348, 84, 167, 122, 350, 332,
    270, 229, 330, 190, 331, 339, 62, 134, 375, 157, 294, 123, 334, 125, 16,
    309, 81, 344, 11, 354, 336, 116, 374, 375, 19, 133, 220, 389, 167, 323, 169,
    43, 387, 0, 91, 310, 286, 187, 304, 383, 337, 237, 241, 88, 167, 299, 245,
    80, 375, 387, 178, 295, 171, 122, 68, 386, 12, 329, 134, 200, 23, 125, 347,
    276, 245, 350, 36, 243, 264, 376, 45, 325, 354, 19, 309, 345, 83, 305, 328,
    75, 34, 283, 140, 62, 29, 11, 367, 120, 220, 369, 388, 345, 353, 340, 367,
    47, 84, 84, 375, 190, 92, 348, 335, 343, 294, 71, 368, 373, 315, 11, 360,
    245, 325, 296, 375, 297, 331, 355, 261, 217, 357, 126, 180, 63, 305, 109,
    129, 330, 278, 243, 252, 35, 40, 270, 11, 334, 352, 220, 304, 301, 346, 78,
    19, 333, 359, 97, 270, 162, 352, 362, 387, 231, 295, 381, 354, 368, 389,
    279, 43, 131, 107),
    (370, 247, 349, 62, 335, 174, 11, 234, 130, 166, 175, 182, 243, 332, 304,
    350, 68, 392, 278, 127, 132, 318, 392, 240, 160, 32, 101, 241, 308, 381,
    325, 92, 20, 121, 45, 312, 278, 220, 82, 332, 354, 75, 170, 20, 97, 332,
    332, 193, 347, 130, 242, 127, 83, 377, 2, 269, 348, 137, 216, 304, 348, 58,
    150, 0, 125, 40, 128, 276, 359, 24, 18, 3, 303, 59, 30, 158, 348, 130, 243,
    188, 329, 214, 248, 208, 32, 169, 404, 152, 10, 354, 16, 360, 375, 294, 353,
    109, 247, 246, 164, 308, 325, 173, 40, 31, 333, 311, 335, 164, 179, 360,
    221, 305, 345, 179, 202, 360, 338, 265, 265, 316, 32, 208, 208, 130, 345,
    284, 0, 0, 0, 0, 282, 69, 0, 0, 120, 329, 265, 167, 354, 107, 310, 0, 92,
    348, 184, 254, 345, 184, 367, 132, 98, 132, 184, 377, 96, 340, 353, 140,
    348, 189, 284, 188, 134, 147, 193, 84, 335, 189, 303, 89, 116, 226, 84, 193,

⌨️ 快捷键说明

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