カンマを含む数値文字列<->数値文字列変換
機能:
カンマを含む数値文字列<->数値文字列を相互に変換します。
解説:
こんなもんでしょ。
ソースについて:
「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;