お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"半角カタカナ撲滅!"





 自作ソフトにHTML変換機能を付ける際に作った関数です。MES 12 #954に
書き込んだのと基本的には同じですがマルチバイト判定だけ変更しています。
MES 15 #225にかなり本格的なのがあったのですが、全てを全角にするので
なくただ半角カナだけサクッと狙い撃ちしたかったので自作しました。

{全角カタカナ文字コード}
const
     Zenk: array[$A1..$DF,1..2]of byte=
     (($81,$42),($81,$75),($81,$76),($81,$41),
      ($81,$45),($83,$92),($83,$40),($83,$42),
      ($83,$44),($83,$46),($83,$48),($83,$83),
      ($83,$85),($83,$87),($83,$62),($81,$5B),
      ($83,$41),($83,$43),($83,$45),($83,$47),
      ($83,$49),($83,$4A),($83,$4C),($83,$4E),
      ($83,$50),($83,$52),($83,$54),($83,$56),
      ($83,$58),($83,$5A),($83,$5C),($83,$5E),
      ($83,$60),($83,$63),($83,$65),($83,$67),
      ($83,$69),($83,$6A),($83,$6B),($83,$6C),
      ($83,$6D),($83,$6E),($83,$71),($83,$74),
      ($83,$77),($83,$7A),($83,$7D),($83,$7E),
      ($83,$80),($83,$81),($83,$82),($83,$84),
      ($83,$86),($83,$88),($83,$89),($83,$8A),
      ($83,$8B),($83,$8C),($83,$8D),($83,$8F),
      ($83,$93),($81,$4A),($81,$4B));

{半角カナ殺し}
function KillHank(s: string): string;
begin
     Result:= '';
     while Length(s)> 0 do
     begin
          if s[1] in [#$A1..#$DF] then            //Hank
          begin
               Result:= Result+ chr(Zenk[ord(S[1]),1])+ chr(Zenk[ord(s[1]),2]);
               Delete(s,1,1);
          end
          else
          if IsDBCSLeadByte(ord(s[1])) then       //Zenk
          begin
               Result:= Result+ s[1]+ s[2];
               Delete(s,1,2);
          end
          else                                    //Others
          begin
               Result:= Result+ s[1];
               Delete(s,1,1);
          end;
     end;
end;

                               折井 哲
                               VZX00324


Original document by 折井 哲        氏 ID:(VZX00324)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum