//在大富翁离线数据库找到一个 你看看 :) Var Char_BJ = array[1..20] of char; // 半角数组 Char_QJ = array[1..20] of string[2]; // 全角数组 初始化时给两个数组赋值 Char_BJ --> ('1','2','3','4','5',........) Char_QJ --> ('1','2','3','4','5',........)function BjToQj(c: char): string; begin Result := ''; for i := Low(Char_BJ) to High(Char_BJ) do begin if Char_BJ[i] = c then begin Result := Char_QJ[i]; exit; end; end; end;
试试这个: procedure TForm1.Button1Click(Sender: TObject); var s:string; p:array [0..10] of WideChar; i:integer; begin s:='0123456789'; StringToWideChar(s,p,11); for i:=0 to 9 do p[i]:=WideChar(integer(p[i])+$fee0); ShowMessage(p); end;
简化一下: procedure TForm1.Button2Click(Sender: TObject); var s:widestring; i:integer; begin s:='0123456789'; for i:=1 to 10 do s[i]:=WideChar(integer(s[i])+$fee0); ShowMessage(s); end;
function NumberH2F(AHalfStr:string):String; var i:integer; begin Result:=''; if length(AHalfStr) > 0 then for i:=1 to length(AHalfStr) do begin if AHalfStr[i] in ['0'..'9'] then Result:=Result+WideChar(integer(AHalfStr[i])+$fee0) else Result:=Result+AHalfStr[i]; end; end;
再来一个逆转函数。。 function NumberF2H(AFullStr:string):String; var i:integer; p:WideString; begin Result:=''; if length(AFullStr) > 0 then begin p:=WideString(AfullStr); for i:=1 to length(p) do begin if Char(integer(p[i])-$fee0) in ['0'..'9'] then Result:=Result+Char(integer(p[i])-$fee0) else Result:=Result+p[i]; end; end; end;
你看看 :)
Var
Char_BJ = array[1..20] of char; // 半角数组
Char_QJ = array[1..20] of string[2]; // 全角数组 初始化时给两个数组赋值
Char_BJ --> ('1','2','3','4','5',........)
Char_QJ --> ('1','2','3','4','5',........)function BjToQj(c: char): string;
begin
Result := '';
for i := Low(Char_BJ) to High(Char_BJ) do begin
if Char_BJ[i] = c then begin
Result := Char_QJ[i];
exit;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
p:array [0..10] of WideChar;
i:integer;
begin
s:='0123456789';
StringToWideChar(s,p,11);
for i:=0 to 9 do
p[i]:=WideChar(integer(p[i])+$fee0);
ShowMessage(p);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
s:widestring;
i:integer;
begin
s:='0123456789';
for i:=1 to 10 do
s[i]:=WideChar(integer(s[i])+$fee0); ShowMessage(s);
end;
如果朋友能把字符转换这方面比较全面的知识稍微给我讲解一下 我会另开贴送分
'0'的unicode内码为$ff10,而0的内码为$30
两者相差为$fee0
所以:
'0'+['0'-'9'] =['0'-'9']
var
i:integer;
begin
Result:='';
if length(AHalfStr) > 0 then
for i:=1 to length(AHalfStr) do
begin
if AHalfStr[i] in ['0'..'9'] then
Result:=Result+WideChar(integer(AHalfStr[i])+$fee0)
else
Result:=Result+AHalfStr[i];
end;
end;
function NumberF2H(AFullStr:string):String;
var
i:integer;
p:WideString;
begin
Result:='';
if length(AFullStr) > 0 then
begin
p:=WideString(AfullStr);
for i:=1 to length(p) do
begin
if Char(integer(p[i])-$fee0) in ['0'..'9'] then
Result:=Result+Char(integer(p[i])-$fee0)
else
Result:=Result+p[i];
end;
end;
end;