数字转换!!!50分(50分)

  • 主题发起人 主题发起人 muzzle
  • 开始时间 开始时间
M

muzzle

Unregistered / Unconfirmed
GUEST, unregistred user!
如何把字段中的类似1996的阿拉伯数字转换成一九九六的字样?
 
自己写个函数来搞定.不难的.
 
function ConvNumber(const S: String): String;
const
ChnChars = '○一二三四五六七八九';
var
i, x: integer;
begin
SetLength(Result, Length(S) * 2);
for i:= 1 to length(S) do
begin
x:= i * 2;
Result[x-1]:= ChnChars[x-1];
Result[x]:= ChnChars[x];
end;
end;
 
function ConvNumber(const S: String): String;
const
ChnChars: array[0..9] of string = ('○','一','二','三','四','五','六','七','八','九');
var
i: integer;
begin
Result := '';
for i:= 1 to length(S) do
begin
Result := Result + ChnChars[Ord(S - Ord('0')];
end;

-----
http://www.8421.org
 
谢谢 qdyound 指出我的错误(我粗心了)
不过,用 Result := Result + ... 这样的语法内存的效率会很低的
还是应该用 Result[x]:= ... 这样的方法
 
To SupermanTm 修改如下:
function ConvNumber(const S: String): String;
const
ChnChars = '○一二三四五六七八九';
var
i, x: integer;
begin
SetLength(Result, Length(S) * 2);
for i:= 1 to length(S) do
begin
x:= (Ord(S) - Ord('0'))*2+1;
Result[i * 2-1]:= ChnChars[x];
Result[i * 2]:= ChnChars[x+1];
end;
end;
 
谢谢指正
 
多人接受答案了。
 
后退
顶部