2012-10-10 1 views
0

이것은 지금까지 내가 편집 장소에 숫자를 입력하고 버튼을 누르면 충돌합니다. Delphi에 초보자가 도와주세요! 고마워, 매트델피 - 일련 번호를 읽고 사용자가 0을 입력 할 때까지 추가하는 프로그램 작성

var 
    Form3: TForm3; 
    Count: integer; 
    RunningTotal: Real; 
implementation 

{$R *.dfm} 



procedure TForm3.btnEnterClick(Sender: TObject); 
begin 
repeat 

    RunningTotal:= RunningTotal + STRTOINT (edtNum.Text); 
until STRTOINT(edtNum.Text)=0; 
    lblAns.Caption:= FLOATTOSTR (RunningTotal); 

end; 

procedure TForm3.edtNumChange(Sender: TObject); 
begin 

end; 

procedure TForm3.FormCreate(Sender: TObject); 
begin 
Count:=0; 
RunningTotal:=0; 
end; 

end. 
+0

같은 문자를 입력에서 사용자를 방지 할 수있는 경우 엔터 키를 눌렀을 때. 사용자는 다른 번호를 입력하거나'edtNum '의 내용을 변경할 기회를 결코 얻지 못합니다. 따라서 루프는 영원히 계속 실행됩니다 (처음 0을 입력하지 않는 한). –

+0

또한 "크래시"또는 "오류"와 같은 문구를 포함하는 질문을 게시 할 때 표시되는 오류 메시지의 내용을 포함시키는 데 도움이됩니다. 나는이 경우 오버 플로우에 관한 것이라고 생각합니다. –

+0

"충돌합니다"는 우리에게는 좋지 않습니다. 정확한 오류 메시지를 볼 수 있습니다. 우리는 할 수 없습니다. 우리가 짐작하게하지 마십시오. 오류가 무엇인지 저희에게 알려주십시오! –

답변

1

사용자가 첫 번째 값을 제공하면 계속 반복됩니다. 이벤트 처리기에서 수행해야하는 모든 작업은 단일 값을 취하여 처리합니다. 그가 당신에게 0를 제공 할 때까지

procedure TForm3.btnEnterClick(Sender: TObject); 
begin 
    if STRTOINT(edtNum.Text)=0 then 
    lblAns.Caption:= FLOATTOSTR (RunningTotal) 
    else 
    RunningTotal:= RunningTotal + STRTOINT (edtNum.Text); 
end; 

이 방법으로 사용자는 더욱 번호를 제출할 수 있습니다.

1

당신은 예외를 처리 할 수있는 exception.You가 발생합니다 숫자 대신 문자를 입력합니다 또는 당신은 코드 내에서 반복하고이

var 
    Form1: TForm1; 
    myvalue : Real = 0; 
implementation 

{$R *.dfm} 



procedure TForm1.btn1Click(Sender: TObject); 
var 
    number : Real; 
begin 
    number := StrToFloat(Edit1.Text); 
    if number = 0 then ShowMessageFmt('The result is %f',[myvalue]) 
    else 
    myvalue := myvalue + number; 
    Edit1.Text := ''; 
end; 

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); 
begin 
    if not (Key in ['0'..'9','.']) then Key := #0; 
end; 
+0

좋습니다. 그의 숙제에 A를 얻는다. –

관련 문제