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


機能:

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


解説:

 こんなもんでしょ。


ソースについて:

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


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

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

function StrToComma(cur:String;DD:Integer):String;overload;
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 > 1) then
     CFlg := False;
    // '.'2個目以降は無視  
    if (cur[i] = '.') and (Pos('.',dst) > 0) then
     CFlg := False;
    if CFlg then
     dst := dst + cur[i];
   end;
 if (Length(dst) = 0) then
  result := '0'
 else
  result := dst;
end;