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.