カンマを含む数値文字列 <-> 数値文字列変換

機能:

 カンマを含む数値文字列 <-> 数値文字列を相互に変換します。


解説:

 こんなもんでしょ。


ソースについて:

 StrToComma() は単純にカンマを含む数値文字列に変換しています。
 StrToComma() (書式2) は DD に小数点以下の桁数を指定できます。
 CommaToStr() は数値文字列への変換を行います。文字列を無理矢理、数値に変換しようとしますので、入力チェックにも使えると思います。


ソースコード:

function StrToComma(cur: String): Stringoverload;
function StrToComma(cur: String; DD: Integer): Stringoverload;
function CommaToStr(cur: String): String;

function StrToComma(cur: String): Stringoverload;
begin
  result := FormatFloat('#,##0', StrToFloat(cur));
end;

function StrToComma(cur: String; DD: Integer): Stringoverload;
begin
  result := FormatFloat('#,##0.' + StringOfChar('0', DD), StrToFloat(cur));
end;

function CommaToStr(cur: String): String;
const
  NumTable = ['0' .. '9''-''.'];
var
  dst: String;
  i: Byte;
  CFlg: Boolean;
begin
  for i := 1 to Length(cur) do
    // '0'..'9','-','.'以外は無視
    if (cur[i] in NumTable) then
      begin
        CFlg := True;
        // '-'が先頭の時以外は無視
        if (cur[i] = '-'and (i > 1then
          CFlg := False;
        // '.'2個目以降は無視
        if (cur[i] = '.'and (Pos('.', dst) > 0then
          CFlg := False;
        if CFlg then
          dst := dst + cur[i];
      end;
  if (Length(dst) = 0then
    result := '0'
  else
    result := dst;
end;

 BACK