Q&A

  • 델파이 초보자인데 질문있습니다.


안녕하세요~ 델파이 초보자입니다.
저의 질문은 에디트1과 에디트2에 숫자를 입력해서 큰숫자에서 작은숫자를 빼고 1부터 그값까지의 합을 에디트3에 결과값이 나오는것입니다. 그런데 프로그램을 실행하면 else에서 오류가 났다고 합니다. 아직 초보자라 잘몰라서 그러는데 알려주세요~

var
  a,b,i,tot:integer;
begin

  if ((strtoint(edit1.Text)) >(strtoint(edit2.Text))) then

  a:= strtoint(edit1.Text);
  b:= strtoint(edit2.Text);

  tot:= 0;
  for i:=1 to (a-b) do
  tot := tot + i;

  else

  a:= strtoint(edit1.Text);
  b:= strtoint(edit2.Text);

  tot:= 0;
  for i:=1 to (b-a) do
  tot := tot + i;

  {a:= strtoint(edit1.Text);
  b:= strtoint(edit2.Text);

  tot:= 0;
  for i:=1 to (a-b) do
  tot := tot + i;

  edit3.text:= inttostr(tot);}

end;

end.
3  COMMENTS
  • Profile
    라벤더 2009.03.20 22:31
    입력된 숫자를 따로 저장해서 비교하실 거면 같은 구문을 두 번 쓰실 필요가 없겠고,
    큰 수/작은 수도 변수로 두는 편이 효율적이겠지요.
    if... else 구문 안에 다수의 문장이 들어가면 begin.. end로 묶어주시고요.

    직접 프로그램 짜보는 것도 좋지만,
    책 보시면서 천천히 문법부터 익히심이...^^;
  • Profile
    KDDG_Hit 2009.03.21 00:40
    소스 올리실때는 왠만하면 다른이들이 보기 편하게 간단한거라도 칸띄우기등은 해서 올려주시는게 좋겠네요.. ^^;

    <!--CodeS-->
    var
    a,b,i,tot:integer;
    begin

    if ((strtoint(edit1.Text)) >(strtoint(edit2.Text))) then
    begin
    a:= strtoint(edit1.Text);
    b:= strtoint(edit2.Text);

    tot:= 0;
    for i:=1 to (a-b) do
    tot := tot + i;
    end
    else begin
    a:= strtoint(edit1.Text);
    b:= strtoint(edit2.Text);

    tot:= 0;
    for i:=1 to (b-a) do
    tot := tot + i;

    {a:= strtoint(edit1.Text);
    b:= strtoint(edit2.Text);

    tot:= 0;
    for i:=1 to (a-b) do
    tot := tot + i;

    edit3.text:= inttostr(tot);}
    end

    end;

    end.
    <!--CodeE-->
  • Profile
    오세영 2009.03.21 05:18
    아~ 네 감사합니다. 이게 과제물이라서 급하게 질문 드렸습니다. 차근차근 공부할게요~
    답변 감사드립니다.