如何区分edit1.text数字 ( 积分: 50 )

  • 主题发起人 主题发起人 babalamari
  • 开始时间 开始时间
B

babalamari

Unregistered / Unconfirmed
GUEST, unregistred user!
如何区分edit1.text内所输入的数字
比如说edit1.text内被输入了123
那如何将1+1,2+2,3+3然后合并起来写入edit2.text中呢?
 
用 onKeyPress 来判别数字

if (not (Key in ['0'..'9'])) and (key<>#8) then
Key :=#0;

然后分别取出数字相加
 
procedure TForm1.Button1Click(Sender: TObject);
var
S: AnsiString;
i: Integer;
Sum: Integer;
begin
S:= Edit1.Text;
Sum:= 0;
for i:= 1 to Length(S) do
begin
If S in ['0'..'9'] then
Sum:= Sum+ StrtoInt(S);
end;
Edit2.Text:= Inttostr(sum);
end;
 
楼上正解
 
意思没表达清楚呀,就是说button1 click时把edit1.text里的123分别读出来然后1+1,2+2,3+3然后把246写入edit2.text
 
procedure TForm1.Button1Click(Sender: TObject);
var
S: AnsiString;
i: Integer;
Sum: AnsiString;
begin
S:= Edit1.Text;
Sum:= '';
for i:= 1 to Length(S) do
begin
If S in ['0'..'9'] then
Sum:= Sum+ IntToStr(StrtoInt(S) * 2);
end;
Edit2.Text:= Sum;
end;
 
楼上正解
 
测试一下,正确发分了!
 
是没错,可是如果把数还原回去的话用什么?
就是再变回123我把+改成-以后报错!
 
先给20分,还有30分请帮忙,button2 click把数还原回去
 
Sum:= Sum+ IntToStr(StrtoInt(S) / 2);
就不行了~这这这怎么才能OK?
 
Sum:= Sum+ FloatToStr(StrToFloat(S) / 2);
就行了~这这这才能OK!
 
procedure TForm1.Button1Click(Sender: TObject);
var
S: String;
i: Integer;
Sum: Integer;
begin
S:= Edit1.Text;
Sum:= 0;
for i:= 1 to Length(S) do
begin
If S in ['0'..'9'] then
Sum:= Sum*10 + StrtoInt(S)+ StrtoInt(S);
end;
Edit2.Text:= Inttostr(sum);
end;
//上述问题是(100+20+3)*2=(((0*10+1)*10+2)*10+3
procedure TForm1.Button2Click(Sender: TObject);
var
S: String;
i: Integer;
Sum: Integer;
begin
S:= Edit2.Text;
Sum:= 0;
for i:= 1 to Length(S) do
begin
If S in ['0'..'9'] then
Sum:= Sum*10 + StrtoInt(S); //三次循环完成后,Sum=246
end;
Sum=Sum div 2;
Edit1.Text:= Inttostr(sum);
end;
//上述问题是(200+40+6)/2=((((0*10+2)*10+4)*10+6) div 2
// Sum:= Sum*10 + StrtoInt(S); //三次循环完成后,Sum=246
//也可改为 Sum:= Sum*10 + StrtoInt(S) div 2; //三次循环完成后,Sum=123
//然后将 Sum=Sum div 2; 删掉
 
发分了!谢谢各位!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部