お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





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

"全角数字を半角数字に変換"





◆説明◆
 例えば、数値データが入力されることを前提としたコンポに、ユーザーが誤
って「123」などと全角数字で入力を行った場合、時として致命的なエラー
に結びつく場合があります。
 このサンプルは、Edit1 に入力された「12345」・「12345」といっ
たデータを「12345」のように、全て半角数字に変換します。

◆注意◆
 このサンプルは整数値のみにしか対応しておりません。

◆サンプルコード◆
// グローバル宣言
var
   data: String;
   Er: Boolean;

function IntZenToHan(data: String): String;
var
   L, i: Integer;
   St, Res: String;
begin
     L := Length(data);
     Res := '';
     i := 1;
     Er := False;

     while i <= L do
     begin
          St := Copy(data, i, 1);

          if (St = '1') or (St = '2') or (St = '3') or
             (St = '4') or (St = '5') or (St = '6') or
             (St = '7') or (St = '8') or (St = '9') or
             (St = '0') then inc(i) else
          begin
               St := Copy(data, i, 2);

               if St = '1' then St := '1' else
               if St = '2' then St := '2' else
               if St = '3' then St := '3' else
               if St = '4' then St := '4' else
               if St = '5' then St := '5' else
               if St = '6' then St := '6' else
               if St = '7' then St := '7' else
               if St = '8' then St := '8' else
               if St = '9' then St := '9' else
               if St = '0' then St := '0' else Er := True;

               i := i + 2;
          end;

          Res := Res + St;
     end;

     if Er = False then Result := Res else
     begin
          data := 'Error "' + data + '"';
          Result := data;
     end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
     data := Edit1.Text;

// =============================
     Edit1.Text := IntZenToHan(data);                      //
     if Er = True then                                     //
     begin                                                 //
        ShowMessage('数値以外のデータが入力されています'); //
        Exit;                                              //
     end;                                                  //
// =============================
// 上記部分を1セットとして使用する方が良いと思います。

     // ・・・変換がエラーでなかった場合の処理へと続く
     // ・・・
end;

                                    J-OH!(VEC05267)

Original document by J-OH!       氏 ID:(VEC05267)


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

Copyright 1996-2002 Delphi Users' Forum