如何将用户输入的全角数字自动转换成半角?(200分)

  • 主题发起人 主题发起人 flai
  • 开始时间 开始时间
F

flai

Unregistered / Unconfirmed
GUEST, unregistred user!
我希望我在接收到用户输入全角的数字时自动转换成半角数字,

另外,用户输入句号也自动转换成点。

我应该怎么做?
 
建对照表,扫描转换
 
详细一点,好吗?
 
大富翁,真失望!
 
用对照表转换的方法虽然很土,但确实可行,这样的程序,高手是不愿意写的,还是我写给你吧:


function FtoH(S: string): string;
begin
if S = '1' then
Result := '1'
else if S = '2' then
Result := '2'
else if S = '3' then
Result := '3'
else if S = '4' then
Result := '4'
else if S = '5' then
Result := '5'
else if S = '6' then
Result := '6'
else if S = '7' then
Result := '7'
else if S = '8' then
Result := '8'
else if S = '9' then
Result := '9'
else if S = '0' then
Result := '0'
end;??
end;
 
var
outstring,teststring, mystring:string;
icount:integer;
begin
outstring:='';
mystring:='-12345.67';
for icount:=0 to (length(mystring) div 2)-1 do
begin
teststring:=copy(mystring,icount*2,2);
outstring:=outstirng+ FtoH(teststring): // 飞龙在天

end;
end;
不知对不对?
 
谢谢以上几位的回答,但是都不是我想要的。
也许是我没有说清楚吧:
是这样的,我的程序界面上有一处是供用户输入出生年月的,因为用户在
输入出生年月之前往往是刚输完姓名,因此有时中文输入法是“全角”状态,
我希望输入全角数字时也能接受,并自动转换成半角数字。除了全角
和半角数字外,其余不接受输入。我想是在OnKeyPress事件中检查。
谢谢!
 
if not (key in LeadBytes+[1..9]) then key=#0
 
把那个输入法在前面输入完后切换到e文啦,
我一直是这么干的:))
 
高手不愿写我来帮你写[:D]
procedure TForm1.Edit1Change(Sender: TObject);
const
RS: WideString = '1234567890。';
RS1 = '1234567890.';
var
I: Integer;
S: string;
begin
S := Edit1.Text;
for I := 1 to Length(RS) do
S := StringReplace(S, RS, RS1, [rfReplaceAll]);
Edit1.Text := S;
Edit1.SelStart := Length(S);
end;

 
将控件ImeName属性设为en,这样在获得焦点时会自动切换到英文
 
接受答案了.
 
后退
顶部