Wolfgang Chien's Homepage | Delphi¾Ç²ßµ§°O - °Ýµª½g |
¦³¤@Óµ{¦¡¬O¥Î¨ÓÅã¥ÜåF½¼¦Ì¦r®Úªº¡AÓ¤Hı±o«D±`¦n¥Î¡A·Q§â¥¦§ï¦¨delphiªº®æ¦¡¡A¥H§QÆ[¤¡A¤£¹L§Ú¬O¥ÎŪ¤å¦rÀɪº¤è¦¡¥h°µ¡A³t«×¤ñ¥¦¥Î«ü¼Ðªº¤è¦¡ºC¤F¤d¿¡A¯u¬O´Àdelphi ¥áÁy¡A§Ú½¤F¤T¡B¥|¥»ªºdelphi ¤Îc++ªº®Ñ¡A¤´µLªk§¹¦¨©ÒÄ@¡CªQ®æ¸ê°T¥Xªº"ª«¥ó¾É¦Vµ{¦¡³]pc++"¤@®Ñ¸Ì¹ï«ü¼Æ¦³¸ÔºÉªº´y¼g¡A¦ý©Ò¦³delphi>ªº¤¤¤å®Ñ «o¥I¤§Âö¦p¡C
½Ð²³°ª¤â¡AÀ°§Ú½¤@¤U(¥unåF½¼¦Ìªº³¡¥÷§Y¥i)¡A·PÁ²±±¡!
¥H¤U¬O¥¦ªºì©l½X:
/* List BIG5, Boshiamy, Punct, CJ selection code for given Chinese word Author: woju@freebsd.ee.ntu.edu.tw */ (code snipped)
©¯¦n§Ú³oùئ³ cj.sor..., ¥H«á¦³³oºØ°ÝÃD®É, ½Ð§i¶D¤j®a cj.sor . boshiamy.sor. phone.sor ¥i¥H±qþùبú±o, ³o¼Ë, ¦³¤ßÀ°¦£ªºªB¤Í¤]¤~¦nÀ°¦£´ú¸Õ.
åF½¼¦Ì¿é¤Jªk§Ú¤£¼ô, ©Ò¥H§Ú¥uÀ°§A«ö¨äÅÞ¿è¼g¤F¤@ÓÜÃBªº, ½Ð±z°Ñ¦Ò¬Ý¬Ý, ·íµM,¨ä¤¤¶}/ÃöÀÉ»P³B²z³£¼g¦b¦P¤@Ó¨ç¼Æ¥u¬O¤è«K´ú¸Õµ{¦¡ªº¼g§@, ¤£¬O³Ì¦nªº¤è¦¡.
(¥H Delphi 2 ´ú¸Õ)
![]() |
1. File | New Application |
![]() |
2. ¦b form1 ¤¤©ñ¸m TEdit »P TButton ¦U¤@, ¨ä¤¤ Edit1.MaxLength ³]¬° 2, TButton ¤§ OnClick °Ñ·Ó¥H¤Uµ{¦¡. |
![]() |
3. ±M®×¦sÀÉ, copy cj.sor into the same directory of this project.
... implementation {$R *.DFM} // ÜÃB¦r¥À/¦r®Ú¹ï·Ó¨ç¼Æ function GetCJComposition(ch: char): string; begin Result := ''; case ch of 'a': Result := '¤é'; 'b': Result := '¤ë'; 'c': Result := 'ª÷'; 'd': Result := '¤ì'; 'e': Result := '¤ô'; 'f': Result := '¤õ'; 'g': Result := '¤g'; 'h': Result := '¦Ë'; 'i': Result := '¤à'; 'j': Result := '¤Q'; 'k': Result := '¤j'; 'l': Result := '¤¤'; 'm': Result := '¤@'; 'n': Result := '¤}'; 'o': Result := '¤H'; 'p': Result := '¤ß'; 'q': Result := '¤â'; 'r': Result := '¤f'; 's': Result := '¤r'; 't': Result := '¤Ü'; 'u': Result := '¤s'; 'v': Result := '¤k'; 'w': Result := '¥Ð'; 'x': Result := 'Ãø'; 'y': Result := '¤R'; 'z': Result := '«'; end; end; // ¨ú±o¤@Ó¤¤¤å¦rªºÜÃB¦r®Ú // ªþª`: ¥»¨ç¼Æ»Ýn cj.sor ÀÉ // // ¥»¨ç¼Æ³B²z // 0. ¶}±Ò¦r»P¦r®Ú(ܾe)ªº¹ï·ÓÀÉ // 1. Ū¤J¦r/¦r®Ú¹ï·Óªí, // 2. ±q 1. ¤¤§ä¥X¥Ø¼Ð¦rªº¦ì¸m, // 3. ¥H 2. ªº¦ì¸m+2 ܾe¦r®Ú(¦r¥À) // 4. ±N 3. ¦r¥ÀÂন°ê¦rªºÜÃB¦r®Ú // 5. Ãö³¬¦r»P¦r®Ú(ܾe)ªº¹ï·ÓÀÉ function GetChajeiComposition(sChineseWord: string): string; const _BlockSize = 50 * 1024; var fChajei: THandle; iReadCount: integer; sChajeiFileName: string; szBuffer: array[0.._BlockSize] of char; szChineseWord: array[0..2] of char; szCompositionAlpha: array[0..5] of char; pcFound: pchar; pcAlpha: pchar; begin Result := ''; if Length(sChineseWord) <> 2 then Exit; StrPCopy(szChineseWord, sChineseWord); // ¶}±Ò¦r»P¦r®Ú(ܾe)ªº¹ï·ÓÀÉ sChajeiFileName := ExtractFilePath(Application.ExeName) + 'cj.sor'; if not FileExists(sChajeiFileName) then begin ShowMessage(sChajeiFileName + ' NOT FOUND!!'); Exit; end; fChajei := FileOpen(sChajeiFileName, 0); // Ū¤J¦r»P¦r®Ú(ܾe)ªº¹ï·Óªí iReadCount := FileRead(fChajei, szBuffer, SizeOf(szBuffer)); // 1. while iReadCount <> 0 do begin // §ä¥X¶Ç¤J¤¤¤å¦rªº¦ì¸m pcFound := StrPos(szBuffer, szChineseWord); if pcFound <> nil then // ¦pªG§ä¨ì... begin // ¦A¥[¨âÓ byte ªº¦ì¸m§Y¬°¦r®Ú¦r¥Àªº¦ì¸m Inc(pcFound, 2); // Ū¼g¦ì¸m²¾¦Ü¦r®Ú¦r¥À¶}©l¤§³B FileSeek(fChajei, integer(pcFound - szBuffer), 0); // Ū¤J¦r®Ú(¦r¥À) if FileRead(fChajei, szCompositionAlpha, SizeOf(szCompositionAlpha)) > 0 then begin pcAlpha := szCompositionAlpha; while pcAlpha^ in ['a'..'z'] do // ÜÃB½X¥u¥Î¨ì a..z begin // Âà´«¦¨°ê¦r¨Ã¥[¤J¥»¨ç¼Æªº¶Ç¦^¦r¦ê¤¤ AppendStr(Result, GetCJComposition(pcAlpha^)); Inc(pcAlpha); end; end; break; // ¬JµM¤w¸g§ä¨ì¤F, ´N¤£¥²Ä~Äò¤F... end; iReadCount := FileRead(fChajei, szBuffer, SizeOf(szBuffer)); end; // Ãö³¬¦r»P¦r®Ú(ܾe)ªº¹ï·ÓÀÉ FileClose(fChajei); end; // Button1 ªº OnClick ¨Æ¥ó procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('*' + GetChajeiComposition(Edit1.Text) + '*'); Edit1.SetFocus; end; |
[¦bDelphi¾Ç²ßµ§°O-³Ð§@½g¤¤¦³¤@ÓÀ³¥ÎIMM API¬d¸ß¤¤¤å¦r®Úªº½d¨Òµ{¦¡]
º¶ | ¾Ç²ßµ§°O | ¥DÃD¤½¶é | ³nÅé¤U¸ü | Ãö©ó¥»¯¸ | °Q½×«H¸s | ¬Û¬ù¤U¦¸ |