Function TFormFhdCw.XxToDx(const hjnum:real):String; var Vstr,zzz,cc,cc1,Presult:string; xxbb:array[1..12]of string; uppna:array[0..9] of string; iCount,iZero,vPoint,vdtlno:integer; begin //*设置大写中文数字和相应单位数组*// xxbb[1]:='亿'; xxbb[2]:='仟'; xxbb[3]:='佰'; xxbb[4]:='拾'; xxbb[5]:='万'; xxbb[6]:='仟'; xxbb[7]:='佰'; xxbb[8]:='拾'; xxbb[9]:='元'; xxbb[10]:='.'; xxbb[11]:='角'; xxbb[12]:='分'; uppna[0]:='零'; uppna[1]:='壹'; uppna[2]:='贰'; uppna[3]:='叁'; uppna[4]:='肆'; uppna[5]:='伍'; uppna[6]:='陆'; uppna[7]:='柒'; uppna[8]:='捌'; uppna[9]:='玖'; Str(hjnum:12:2,Vstr); cc:=''; cc1:=''; zzz:=''; result:=''; presult:=''; iZero:=0; vPoint:=0; for iCount:=1 to 10 do begin cc:=Vstr[iCount]; if cc<>' ' then begin zzz:=xxbb[iCount]; if cc='0' then begin if iZero<1 then //*对“零”进行判断*// cc:='零' else cc:=''; if iCount=5 then //*对万位“零”的处理*// if copy(result,length(result)-1,2)='零' then result:=copy(result,1,length(result)-2)+xxbb[iCount] +'零' else result:=result+xxbb[iCount]; cc1:=cc; zzz:=''; iZero:=iZero+1; end else begin if cc='.' then begin cc:=''; if (cc1='') or (cc1='零') then begin Presult:=copy(result,1,Length(result)-2); result:=Presult; iZero:=15; end; if iZero>=1 then zzz:=xxbb[9] else zzz:=''; vPoint:=1; end else begin iZero:=0; cc:=uppna[StrToInt(cc)]; end end; result:=result+(cc+zzz) end; end; If Vstr[11]='0' then //*对小数点后两位进行处理*// begin if Vstr[12]<>'0' then begin cc:='零'; result:=result+cc; cc:=uppna[StrToInt(Vstr[12])]; result:=result+(uppna[0]+cc+xxbb[12]); end end else begin if iZero=15 then begin cc:='零'; result:=result+cc; end; cc:=uppna[StrToInt(Vstr[11])]; result:=result+(cc+xxbb[11]); if Vstr[12]<>'0' then begin cc:=uppna[StrToInt(Vstr[12])]; result:=result+(cc+xxbb[12]); end; end; result:=result+'整'; end;
function NumberCn(mNumber: Real): WideString; const cPointCn: WideString = '点十百千万十百千亿十百千'; cNumberCn: WideString = '零一二三四五六七八九'; var I, L, P: Integer; S: string; begin Result := ''; if mNumber = 0 then begin Result := cNumberCn[1]; Exit; end; S := FloatToStr(mNumber); if Pos('.', S) <= 0 then S := S + '.'; P := Pos('.', S); L := Length(S); for I := 1 to L do if P > I then Result := Result + cNumberCn[StrToInt(S[I]) + 1] + cPointCn[P - I] else if P = I then begin Result := StringReplace(Result, '零十零', '零', [rfReplaceAll]); Result := StringReplace(Result, '零百零', '零', [rfReplaceAll]); Result := StringReplace(Result, '零千零', '零', [rfReplaceAll]); Result := StringReplace(Result, '零十', '零', [rfReplaceAll]); Result := StringReplace(Result, '零百', '零', [rfReplaceAll]); Result := StringReplace(Result, '零千', '零', [rfReplaceAll]); Result := StringReplace(Result, '零万', '万', [rfReplaceAll]); Result := StringReplace(Result, '零亿', '亿', [rfReplaceAll]); Result := StringReplace(Result, '亿万', '亿', [rfReplaceAll]); Result := StringReplace(Result, '零点', '点', [rfReplaceAll]); end else if P < I then Result := Result + cNumberCn[StrToInt(S[I]) + 1]; if Result[Length(Result)] = cPointCn[1] then Result := Copy(Result, 1, Length(Result) - 1); if Result[1] = cPointCn[1] then Result := cNumberCn[1] + Result; if (Length(Result) > 1) and (Result[2] = cPointCn[2]) and (Result[1] = cNumberCn[2]) then Delete(Result, 1, 1); end; { NumberCn }function MoneyCn(mMoney: Real): WideString; var P: Integer; begin if mMoney = 0 then begin Result := '无'; Exit; end; Result := NumberCn(Round(mMoney * 100) / 100); Result := StringReplace(Result, '一', '壹', [rfReplaceAll]); Result := StringReplace(Result, '二', '贰', [rfReplaceAll]); Result := StringReplace(Result, '三', '叁', [rfReplaceAll]); Result := StringReplace(Result, '四', '肆', [rfReplaceAll]); Result := StringReplace(Result, '五', '伍', [rfReplaceAll]); Result := StringReplace(Result, '六', '陆', [rfReplaceAll]); Result := StringReplace(Result, '七', '柒', [rfReplaceAll]); Result := StringReplace(Result, '八', '捌', [rfReplaceAll]); Result := StringReplace(Result, '九', '玖', [rfReplaceAll]); Result := StringReplace(Result, '九', '玖', [rfReplaceAll]); Result := StringReplace(Result, '十', '拾', [rfReplaceAll]); Result := StringReplace(Result, '百', '佰', [rfReplaceAll]); Result := StringReplace(Result, '千', '仟', [rfReplaceAll]); P := Pos('点', Result); if P > 0 then begin Insert('分', Result, P + 3); Insert('角', Result, P + 2); Result := StringReplace(Result, '点', '圆', [rfReplaceAll]); Result := StringReplace(Result, '角分', '角', [rfReplaceAll]); Result := StringReplace(Result, '零分', '', [rfReplaceAll]); Result := StringReplace(Result, '零角', '', [rfReplaceAll]); Result := StringReplace(Result, '分角', '', [rfReplaceAll]); if Copy(Result, 1, 2) = '零圆' then Result := StringReplace(Result, '零圆', '', [rfReplaceAll]); end else Result := Result + '圆整'; Result := '人民币' + Result; end; { MoneyCn }
------------------ 請各位看看 ----------------------- const scale: array[0..17] of string= ('分' '角', '元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '兆', '拾', '佰', '仟' ); Base: array[0..9] of string= String[] Base = (零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');procedure TForm1.Button1Click(Sender: TObject); var Temp,Info : string; www ,i ,data ,num, x: Integer; begin Temp := Edit1.Text; Info := ''; if (Pos('.',Edit1.text)) > 0 then begin www:=(Pos('.',Edit1.text)); Temp := Copy(Edit1.Text,1,www-1) + Copy(Edit1.Text,www+1,Length(Edit1.Text)-www); //能用公共 函數換了這句話嗎 ??? 目的就是去掉字符串中的 "." for i:= length(temp) downto 1 do begin Data := StrToInt(Copy(Temp,Length(Temp)-i,1)); Info := Info + Base[Data]; num := length(Copy(Edit1.Text,www+1,Length(Edit1.Text)-www));//能用公共函數換了這句話嗎 目的就是取字符串中的 "."後面的字符 if num > 1 then // 0.11111 點后超過1位就特殊處理一下 目的是去 array 位置不要搞亂了 begin Info := Info + Scale[i-num+1] end else begin Info := Info + Scale[i] end; end; end else begin x := Length(temp); for i:= x downto 1 do begin Data := StrToInt(Copy(Temp,Length(Temp)-i+1,1)); Info := Info + Base[Data]; Info := Info + Scale[i+1]; end; end; Edit1.Text := Info; end; 謝謝回帖 順便教我怎麽給你們加分 我都會 加分的
var Vstr,zzz,cc,cc1,Presult:string;
xxbb:array[1..12]of string;
uppna:array[0..9] of string;
iCount,iZero,vPoint,vdtlno:integer;
begin
//*设置大写中文数字和相应单位数组*//
xxbb[1]:='亿';
xxbb[2]:='仟';
xxbb[3]:='佰';
xxbb[4]:='拾';
xxbb[5]:='万';
xxbb[6]:='仟';
xxbb[7]:='佰';
xxbb[8]:='拾';
xxbb[9]:='元';
xxbb[10]:='.';
xxbb[11]:='角';
xxbb[12]:='分';
uppna[0]:='零';
uppna[1]:='壹';
uppna[2]:='贰';
uppna[3]:='叁';
uppna[4]:='肆';
uppna[5]:='伍';
uppna[6]:='陆';
uppna[7]:='柒';
uppna[8]:='捌';
uppna[9]:='玖';
Str(hjnum:12:2,Vstr);
cc:='';
cc1:='';
zzz:='';
result:='';
presult:='';
iZero:=0;
vPoint:=0;
for iCount:=1 to 10 do
begin
cc:=Vstr[iCount];
if cc<>' ' then
begin
zzz:=xxbb[iCount];
if cc='0' then
begin
if iZero<1 then //*对“零”进行判断*//
cc:='零'
else
cc:='';
if iCount=5 then //*对万位“零”的处理*//
if copy(result,length(result)-1,2)='零' then
result:=copy(result,1,length(result)-2)+xxbb[iCount]
+'零'
else
result:=result+xxbb[iCount];
cc1:=cc;
zzz:='';
iZero:=iZero+1;
end
else
begin
if cc='.' then
begin
cc:='';
if (cc1='') or (cc1='零') then
begin
Presult:=copy(result,1,Length(result)-2);
result:=Presult;
iZero:=15;
end;
if iZero>=1 then
zzz:=xxbb[9]
else
zzz:='';
vPoint:=1;
end
else
begin
iZero:=0;
cc:=uppna[StrToInt(cc)];
end
end;
result:=result+(cc+zzz)
end;
end;
If Vstr[11]='0' then //*对小数点后两位进行处理*//
begin
if Vstr[12]<>'0' then
begin
cc:='零';
result:=result+cc;
cc:=uppna[StrToInt(Vstr[12])];
result:=result+(uppna[0]+cc+xxbb[12]);
end
end
else
begin
if iZero=15 then
begin
cc:='零';
result:=result+cc;
end;
cc:=uppna[StrToInt(Vstr[11])];
result:=result+(cc+xxbb[11]);
if Vstr[12]<>'0' then
begin
cc:=uppna[StrToInt(Vstr[12])];
result:=result+(cc+xxbb[12]);
end;
end;
result:=result+'整';
end;
const
cPointCn: WideString = '点十百千万十百千亿十百千';
cNumberCn: WideString = '零一二三四五六七八九';
var
I, L, P: Integer;
S: string;
begin
Result := '';
if mNumber = 0 then begin
Result := cNumberCn[1];
Exit;
end;
S := FloatToStr(mNumber);
if Pos('.', S) <= 0 then S := S + '.';
P := Pos('.', S);
L := Length(S);
for I := 1 to L do
if P > I then
Result := Result + cNumberCn[StrToInt(S[I]) + 1] + cPointCn[P - I]
else if P = I then begin
Result := StringReplace(Result, '零十零', '零', [rfReplaceAll]);
Result := StringReplace(Result, '零百零', '零', [rfReplaceAll]);
Result := StringReplace(Result, '零千零', '零', [rfReplaceAll]);
Result := StringReplace(Result, '零十', '零', [rfReplaceAll]);
Result := StringReplace(Result, '零百', '零', [rfReplaceAll]);
Result := StringReplace(Result, '零千', '零', [rfReplaceAll]);
Result := StringReplace(Result, '零万', '万', [rfReplaceAll]);
Result := StringReplace(Result, '零亿', '亿', [rfReplaceAll]);
Result := StringReplace(Result, '亿万', '亿', [rfReplaceAll]);
Result := StringReplace(Result, '零点', '点', [rfReplaceAll]);
end else if P < I then
Result := Result + cNumberCn[StrToInt(S[I]) + 1];
if Result[Length(Result)] = cPointCn[1] then
Result := Copy(Result, 1, Length(Result) - 1);
if Result[1] = cPointCn[1] then Result := cNumberCn[1] + Result;
if (Length(Result) > 1) and (Result[2] = cPointCn[2]) and
(Result[1] = cNumberCn[2]) then
Delete(Result, 1, 1);
end; { NumberCn }function MoneyCn(mMoney: Real): WideString;
var
P: Integer;
begin
if mMoney = 0 then begin
Result := '无';
Exit;
end;
Result := NumberCn(Round(mMoney * 100) / 100);
Result := StringReplace(Result, '一', '壹', [rfReplaceAll]);
Result := StringReplace(Result, '二', '贰', [rfReplaceAll]);
Result := StringReplace(Result, '三', '叁', [rfReplaceAll]);
Result := StringReplace(Result, '四', '肆', [rfReplaceAll]);
Result := StringReplace(Result, '五', '伍', [rfReplaceAll]);
Result := StringReplace(Result, '六', '陆', [rfReplaceAll]);
Result := StringReplace(Result, '七', '柒', [rfReplaceAll]);
Result := StringReplace(Result, '八', '捌', [rfReplaceAll]);
Result := StringReplace(Result, '九', '玖', [rfReplaceAll]);
Result := StringReplace(Result, '九', '玖', [rfReplaceAll]);
Result := StringReplace(Result, '十', '拾', [rfReplaceAll]);
Result := StringReplace(Result, '百', '佰', [rfReplaceAll]);
Result := StringReplace(Result, '千', '仟', [rfReplaceAll]);
P := Pos('点', Result);
if P > 0 then begin
Insert('分', Result, P + 3);
Insert('角', Result, P + 2);
Result := StringReplace(Result, '点', '圆', [rfReplaceAll]);
Result := StringReplace(Result, '角分', '角', [rfReplaceAll]);
Result := StringReplace(Result, '零分', '', [rfReplaceAll]);
Result := StringReplace(Result, '零角', '', [rfReplaceAll]);
Result := StringReplace(Result, '分角', '', [rfReplaceAll]);
if Copy(Result, 1, 2) = '零圆' then
Result := StringReplace(Result, '零圆', '', [rfReplaceAll]);
end else Result := Result + '圆整';
Result := '人民币' + Result;
end; { MoneyCn }
edit1.text := NumberCn(edit);????不行?
const
scale: array[0..17] of string=
('分' '角', '元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '兆', '拾', '佰', '仟' );
Base: array[0..9] of string=
String[] Base = (零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');procedure TForm1.Button1Click(Sender: TObject);
var
Temp,Info : string;
www ,i ,data ,num, x: Integer;
begin
Temp := Edit1.Text;
Info := '';
if (Pos('.',Edit1.text)) > 0 then
begin
www:=(Pos('.',Edit1.text));
Temp := Copy(Edit1.Text,1,www-1) + Copy(Edit1.Text,www+1,Length(Edit1.Text)-www); //能用公共 函數換了這句話嗎 ??? 目的就是去掉字符串中的 "."
for i:= length(temp) downto 1 do
begin
Data := StrToInt(Copy(Temp,Length(Temp)-i,1));
Info := Info + Base[Data];
num := length(Copy(Edit1.Text,www+1,Length(Edit1.Text)-www));//能用公共函數換了這句話嗎
目的就是取字符串中的 "."後面的字符
if num > 1 then // 0.11111 點后超過1位就特殊處理一下 目的是去 array 位置不要搞亂了
begin
Info := Info + Scale[i-num+1]
end
else
begin
Info := Info + Scale[i]
end;
end;
end
else
begin
x := Length(temp);
for i:= x downto 1 do
begin
Data := StrToInt(Copy(Temp,Length(Temp)-i+1,1));
Info := Info + Base[Data];
Info := Info + Scale[i+1];
end;
end;
Edit1.Text := Info;
end;
謝謝回帖 順便教我怎麽給你們加分 我都會 加分的