ziku.~pa
上传用户:zgnl100
上传日期:2010-01-16
资源大小:1629k
文件大小:6k
源码类别:

输入法编程

开发平台:

C/C++

  1. unit ziku;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   StdCtrls, Buttons, ComCtrls, ExtCtrls;
  6. type
  7.   TForm1 = class(TForm)
  8.     Edit1: TEdit;
  9.     Label1: TLabel;
  10.     BitBtn1: TBitBtn;
  11.     Memo1: TMemo;
  12.     Label2: TLabel;
  13.     Label5: TLabel;
  14.     Animate1: TAnimate;
  15.     Timer1: TTimer;
  16.     Memo2: TMemo;
  17.     Label3: TLabel;
  18.     SpeedButton1: TSpeedButton;
  19.     Timer2: TTimer;
  20.     Label4: TLabel;
  21.     Memo3: TMemo;
  22.     Label6: TLabel;
  23.     procedure BitBtn1Click(Sender: TObject);
  24.     procedure Timer1Timer(Sender: TObject);
  25.     procedure FormCreate(Sender: TObject);
  26.     procedure Timer2Timer(Sender: TObject);
  27.   private
  28.     { Private declarations }
  29.   public
  30.     { Public declarations }
  31.   end;
  32. var
  33.   Form1: TForm1;
  34. implementation
  35. uses math;
  36. var avifilename:byte;
  37. {$R *.DFM}
  38.  function translate(str:string):string;
  39. var st:string;
  40.        num:integer;
  41.        trans:string;
  42.  begin
  43.         st:=str;
  44.         trans:='';
  45.        for num:=1 to 4 do
  46.        begin
  47.          case  st[num] of
  48.                         '0':trans:=trans+'                ';
  49.                         '1':trans:=trans+'            11';
  50.                         '2':trans:=trans+'        11    ';
  51.                         '3':trans:=trans+'        1111';
  52.                         '4':trans:=trans+'    11        ';
  53.                         '5':trans:=trans+'    11    11';
  54.                         '6':trans:=trans+'    1111    ';
  55.                         '7':trans:=trans+'    111111';
  56.                         '8':trans:=trans+'11            ';
  57.                         '9':trans:=trans+'11        11';
  58.                         'A':trans:=trans+'11    11    ';
  59.                         'B':trans:=trans+'11    1111';
  60.                         'C':trans:=trans+'1111        ';
  61.                         'D':trans:=trans+'1111    11';
  62.                         'E':trans:=trans+'111111    ';
  63.                         'F':trans:=trans+'11111111';
  64.                                               end;
  65.               end;
  66.           translate:=trans;
  67.   end;
  68. procedure  TForm1.BitBtn1Click(Sender:  TObject);
  69. var  hzk16:file  of  char  ;
  70.         i:array[1..32]  of  char;
  71.         j:longint;
  72.         p:array[1..32] of byte;
  73.         q:array[1..16] of longint;
  74.         k:string;
  75.         w:word;
  76.         count:longint;
  77.         n:integer;
  78.         m:integer;
  79.         sss:string;
  80.         canshu:longint;
  81.         stemp:string;
  82. begin
  83.        // assignfile(hzk16,'hzk16');
  84.       assignfile(hzk16,'hzk24h');
  85.           FileMode  :=  0;
  86.         reset(hzk16);
  87.         k:=edit1.text;
  88.         j:=((ord(k[1])-161)*94+(ord(k[2])-161))*32;
  89.       seek(hzk16,j);
  90.     memo1.Text:='';
  91.     memo2.text:='';
  92.     memo3.text:='';
  93.     memo1.Lines.add(' ');
  94.     n:=1;
  95.     label5.caption:='';
  96.     sss:='';
  97.     for  count:=1  to  32  do
  98.     begin
  99.         read(hzk16,i[n]);
  100.         stemp:=inttohex(ord(i[n]),2)+'H';
  101.         if ((n mod 8)<>0 )then stemp:=stemp+',';
  102.         if stemp[1]>'9' then stemp:='0'+stemp;
  103.         sss:=sss+stemp;
  104.         if n mod 8=0 then sss:=sss+char(13)+char(10);
  105.         label5.caption:=label5.caption+inttohex(ord(i[n]),2);
  106.         n:=n+1;
  107.         if  (n  mod  2=1)  then
  108.         begin
  109.         memo1.Lines.Add(label5.caption+'        '+translate(label5.caption));
  110.         label5.caption:='';
  111.         end;
  112.     end;
  113.        memo2.text:=sss;
  114.      for n:=1 to 32 do
  115.      begin
  116.           if n mod 2=1 then p[((n+1) div 2)]:=ord(i[n]);
  117.           if n mod 2=0 then p[((n) div 2)+16]:=ord(i[n]);
  118.      end;
  119.          for n:= 1 to 16 do
  120.             begin
  121.                  q[n]:=p[n]*256+p[n+16];
  122.             end;
  123.            sss:='';
  124.         for m:=1 to 16 do
  125.         begin
  126.             w:=0;
  127.               case m  of
  128.                 1: count:=$8000;
  129.                 2: count:=$4000;
  130.                 3:count:=$2000;
  131.                 4:count:=$1000;
  132.                 5:count:=$800;
  133.                 6:count:=$400;
  134.                 7:count:=$200;
  135.                 8:count:=$100;
  136.                 9:count:=$80;
  137.                 10:count:=$40;
  138.                 11:count:=$20;
  139.                 12:count:=$10;
  140.                 13:count:=$8;
  141.                 14:count:=$4;
  142.                 15:count:=$2;
  143.                 16:count:=$1;
  144.                   end;
  145.         for   n:=1 to 16 do
  146.         begin
  147.                 case  n of
  148.                 1: canshu:=$8000;
  149.                 2: canshu:=$4000;
  150.                 3:canshu:=$2000;
  151.                 4:canshu:=$1000;
  152.                 5:canshu:=$800;
  153.                 6:canshu:=$400;
  154.                 7:canshu:=$200;
  155.                 8:canshu:=$100;
  156.                 9:canshu:=$80;
  157.                 10:canshu:=$40;
  158.                 11:canshu:=$20;
  159.                 12:canshu:=$10;
  160.                 13:canshu:=$8;
  161.                 14:canshu:=$4;
  162.                 15:canshu:=$2;
  163.                 16:canshu:=$1;
  164.                   end;
  165.             if (q[n] and count)<>0 then
  166.             begin
  167.            w:=w+ canshu;
  168.              end;
  169.          end;
  170.           stemp:=copy(inttohex(w,4),1,2)+'H';
  171.          stemp:=stemp+',';
  172.         if stemp[1]>'9' then stemp:='0'+stemp;
  173.         sss:=sss+stemp;
  174.           stemp:=copy(inttohex(w,4),3,2)+'H';
  175.         if ((2*m mod 8)<>0 )then stemp:=stemp+',';
  176.         if stemp[1]>'9' then stemp:='0'+stemp;
  177.         sss:=sss+stemp;
  178.         if m mod 4=0 then sss:=sss+char(13)+char(10);
  179.         label5.caption:=label5.caption+inttohex(ord(i[n]),2);
  180.                      end;
  181.              memo3.text:=sss;        
  182.         system.close(hzk16);
  183. end;
  184. procedure TForm1.Timer1Timer(Sender: TObject);
  185. begin
  186. case avifilename of
  187.    1: animate1.commonavi:=avicopyfile;
  188.    2: animate1.commonavi:=avicopyfiles;
  189.    3: animate1.commonavi:=aviemptyrecycle;
  190.    4: animate1.commonavi:=avifindcomputer;
  191.    5: animate1.commonavi:=avifindfolder;
  192.    6: animate1.commonavi:=avirecyclefile;
  193. end;
  194. avifilename:=avifilename+1;
  195. if avifilename=7 then avifilename:=1;
  196.  animate1.active:=true;
  197. end;
  198. procedure TForm1.FormCreate(Sender: TObject);
  199. begin
  200. avifilename:=1;
  201. animate1.active:=true;
  202. bitbtn1.click;
  203. end;
  204. procedure TForm1.Timer2Timer(Sender: TObject);
  205. begin
  206.  speedbutton1.Caption:=timetostr(now);
  207. end;
  208. end.