Last Update 2004/01/02
ここではCsCom6b.pasのCs_AEditNum関数を利用した、数値文字列の編集を行います。
参考までにCs_AEditNum関数のコメントを見ると以下のように定義してあります。
※ ソースファイルへアクセスするには金太郎プロジェクトページからダウンロードして下さい。
//--------- 2002/04/01 16:54 ---------------------------------------// // 関数名:Cs_AEditNum // 数値データを表示や印字データとして編集する // // 使用例: // Cs_AEditNum( '1234', '99999' ) → 01234 // Cs_AEditNum( '1234', '99,999' ) → 01,234 // Cs_AEditNum( '1234', '99,999.ZZ' ) → 01,234 // Cs_AEditNum( '1234.1', '99,999.ZZ' ) → 01,234.1 // Cs_AEditNum( '0', 'ZZZ' ) → ' ' //------------------------------------------------------------------// // 補足: // 小数部の桁あふれ処理は無し //------------------------------------------------------------------// // 引数説明 // ArgSData......編集元文字列型数値データ // ArgEditMode...編集パターン //------------------------------------------------------------------// // 戻り値 // 編集された文字列 //------------------------------------------------------------------// // 履歴: // 1998/10/06 : 小数以下の編集を修正 // 1998/11/14 : 編集文字が''の場合'ZZZZZZZZZ9'をデェフォルトにする // 1999/01/19 : 編集文字が'Z9.9'で元データ'.9' // (整数の最後の0が省略)された場合でも正しく処理できねようにした // 1999/06/15 : 編集元サイズ0の確認を追加 // 2000/01/20 : ZZZZ編集でのバグ修正(0→ZZZ0)と表示していた、 // --9編集でのバグ修正(-123→123)と表示していた、 // 2001/02/05 : ----9編集でのバグ修正(---9→ --9)と表示していた、 // 2001/02/20 : Z,-,+編集の混在を許す // 2001/05/08 : 編集文字が''の場合'---------9'をデェフォルトにする // 2002/04/01 : コメント修正 //------------------------------------------------------------------//
図1 Cs_AEditNum関数のコメント
1.ソースとオブジェクトが入った書庫をダウンロードして「X:\Source\DELPHI\Samples」フォルダに格納して下さい。
サンプル書庫
2.プロジェクトをコンパイルして実行します。
下記の画面が表示されたら、数値と編集文字列を入れて色々と試してみて下さい。
図2 CsNumEditP.exe実行画面
「変換実行」ボタンがクリックされると以下のソースが実行されます。
Label4.Caption := Cs_AEditNum( Edit1.Text, Edit2.Text );
左辺の「Label4.Caption」は表示領域のラベル名(Label4)とラベルの表示領域プロパティである(Caption)を指定しています。 「:=」は代入記号です。Cs_AEditNum(
Edit1.Text, Edit2.Text ); が共通関数で、第一引数は編集元の数値文字列なのでEdit1.Text、第二引数は編集文字列なのでEdit2.Textを指定しています。
unit CsNumEdit; //--------- 2004/01/04 16:46 ---------------------------------------// // Project Name:金太郎飴プロジェクト // ProgramID :EditTest // Copyright :CS // Release : // 処理説明 :数値文字列編集テスト // 変数 : // 特記事項 : // 変更履歴 : // 2004/01/04 V1.0A : 新規(中村) //------------------------------------------------------------------// interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons; type TForm1 = class(TForm) SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; Edit1: TEdit; Label1: TLabel; Edit2: TEdit; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; procedure SpeedButton2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation uses CS_COM6B; // ←ここで共通関数を定義している。 {$R *.dfm} //------------------------------------------------------------------// // フォーム作成 //------------------------------------------------------------------// procedure TForm1.FormCreate(Sender: TObject); begin Edit1.Text := ''; Edit2.Text := ''; Label4.Caption := ''; end; //------------------------------------------------------------------// // 終了ボタンクリック処理 //------------------------------------------------------------------// procedure TForm1.SpeedButton2Click(Sender: TObject); begin Close; end; //------------------------------------------------------------------// // 編集ボタンクリック処理 //------------------------------------------------------------------// procedure TForm1.SpeedButton1Click(Sender: TObject); begin Label4.Caption := Cs_AEditNum( Edit1.Text, Edit2.Text ); // ←編集関数呼び出し end; end.