Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[4828] [질문] [Ak,Error!!] 에러 잡아주세요...머리아프다.
hk4801 [ ] 886 읽음    1998-10-10 13:10
안녕하세요.. 문제를 풀어달라는 부탁에 델파이로 코딩하는데
이상한 현상이 일어나더군요..
조건문을 너무 많이 사용한 탓인지 .. 암튼 잘 모르겠습니다.
아마 이 에러 잡는 분 머리 참 좋을 겁니다..쩝~
아래 그 문제의 처리 조건과 계산방법을 적었고 소스는 그다음에
올렸습니다. 그럼, 보시고 머리좀 고생해 보시기 바랍니다..

에러 잡아주시는 분 .. 미리 감사드리겠습니다...(뜨아, 머리아프다.)


-계산방법
사용금액이 10만원에서 20만원 사이이면 1점을 부여하고,
20만원을 초과하면 2점을 부과한다.
10만원 미만의 사용금액에는 점수가 부여되지 않는다.
계산한 점수와 회원테이블의 누계점수의 합계가 100점이
넘으면 매번 0.5점을 가산한다.

입력데이터 건수는 10건을 넘지 않는 것으로 본다.
사용금액: 금액을 10자리 이내로 입력받는다.
한명의 회원이 중복되어 들어 올 수 있다.

- 회원 테이블
-------------------------------------------
회원번호 회원이름      누계점수
1            회원1          0
2            회원2         50
3            회원3  100

- 입력자료 예시
-------------------------------------------
  회원번호 사용일자 사용금액
   1        1998.08.25        110,000
   2        1998.08.27   70,000
   3        1998.09.01  400,000


알아두어야할 객체 용도입니다..
edit1 회원번호 입력받음
edit2 점수     디스플레이
edit3 점수누계 디스플레이
edit4 사용금액 입력받음



소스입니다..
----------------------------------------------------------------
implementation

var
i,y : Integer; //배열첨자


{$R *.DFM}

procedure 빠샤빠샤폼.Button1Click(Sender: TObject);
var
aCode : Array [1..10] of Integer;
aName : Array [1..10] Of String[6];
aPoint : Array [1..10] Of Real;
aPoint2 : Array [1..10] Of Real;
aMoney : Array [1..10] of Integer;

arrow : Integer; // 점수를 누적시키기 위해 기존 데이터 검색 위한 표시자.


begin

aCode[i] := StrToInt(Edit1.Text);
aMoney[i] := StrToInt(Edit4.Text);


If i <> 1 Then  begin

If aCode[i] = 1 Then
begin
    aName[i] := '회원1';

    For y := 1 To i Do
    If aName[y] = '회원1' Then  arrow := y;

    If aMoney[i] < 100000 Then aPoint[i] := 0;
    If (aMoney[i] >= 100000) And (aMoney[i] <= 200000) Then aPoint[i] := 1;
    If aMOney[i] > 200000 Then aPoint[i] := 2;
    If aPoint2[arrow] < 100 Then aPoint2[i] := aPoint2[arrow] + aPoint[i];
    Edit2.Text := FloatToStr(aPoint[i]);
    Edit3.Text := FloatToStr(aPoint2[i]);
end
Else
  Begin
    aPoint2[i] := aPoint2[arrow] + aPoint[i] + 0.5;
    aMoney[i] := StrToInt(Edit4.Text);
    Edit2.Text := FloatToStr(aPoint[i]);
    Edit3.Text := FloatToStr(aPoint2[i]);
  End;

if aCode[i] = 2 Then
Begin
     aName[i] := '회원2';

     For y := 1 To i Do
       If aName[y] = '회원1' Then arrow := y;

    If aMoney[i] < 100000 Then aPoint[i] := 0;
    If (aMoney[i] >= 100000) And (aMoney[i] <= 200000) Then aPoint[i] := 1;
    If aMOney[i] > 200000 Then aPoint[i] := 2;
    If aPoint2[i-1] < 100 Then aPoint2[i] := aPoint2[i - 1] + aPoint[i];
    Edit2.Text := FloatToStr(aPoint[i]);
    Edit3.Text := FloatToStr(aPoint2[i]);
end
Else
    Begin
    aPoint2[i] := aPoint2[i - 1] + aPoint[i] + 0.5;
    aMoney[i] := StrToInt(Edit4.Text);
    Edit2.Text := FloatToStr(aPoint[i]);
    Edit3.Text := FloatToStr(aPoint2[i]);
    End;

if aCode[i] = 3 Then
Begin
     aName[i] := '회원3';

     For y := 1 To i Do
     If aName[y] = '회원1' Then arrow := y;


    If aMoney[i] < 100000 Then aPoint[i] := 0;
    If (aMoney[i] >= 100000) And (aMoney[i] <= 200000) Then aPoint[i] := 1;
    If aMOney[i] > 200000 Then aPoint[i] := 2;
    If aPoint2[i-1] < 100 Then aPoint2[i] := aPoint2[i - 1] + aPoint[i];
    Edit2.Text := FloatToStr(aPoint[i]);
    Edit3.Text := FloatToStr(aPoint2[i]);
end
Else
    Begin
    aPoint2[i] := aPoint2[i - 1] + aPoint[i] + 0.5;
    aMoney[i] := StrToInt(Edit4.Text);
    Edit2.Text := FloatToStr(aPoint[i]);
    Edit3.Text := FloatToStr(aPoint2[i]);
    End;

end  //  end of If i <> 1  begin
else // i =1 인 경우
begin
if aCode[i] = 1 Then
  begin
    aName[i] := '회원1';
    aPoint2[i] := 0;
    If aMoney[i] < 100000 Then aPoint[i] := 0;
    If (aMoney[i] >= 100000) And (aMoney[i] <= 200000) Then aPoint[i] := 1;
    If aMOney[i] > 200000 Then aPoint[i] := 2;
    aPoint2[i] := aPoint2[i] + aPoint[i];
    Edit2.Text := FloatToStr(aPoint[i]);
    Edit3.Text := FloatToStr(aPoint2[i]);
  end;
if aCode[i] = 2 Then
  begin
    aName[i] := '회원2';
    aPoint2[i] := 0;
    If aMoney[i] < 100000 Then aPoint[i] := 0;
    If (aMoney[i] >= 100000) And (aMoney[i] <= 200000) Then aPoint[i] := 1;
    If aMOney[i] > 200000 Then aPoint[i] := 2;
    aPoint2[i] := aPoint2[i] + aPoint[i];
   Edit2.Text := FloatToStr(aPoint[i]);
    Edit3.Text := FloatToStr(aPoint2[i]);
  end;

if aCode[i] = 3 Then
  begin
    aName[i] := '회원2';
    aPoint2[i] := 0;
    If aMoney[i] < 100000 Then aPoint[i] := 0;
    If (aMoney[i] >= 100000) And (aMoney[i] <= 200000) Then aPoint[i] := 1;
    If aMOney[i] > 200000 Then aPoint[i] := 2;
    aPoint2[i] := aPoint2[i] + aPoint[i];
   Edit2.Text := FloatToStr(aPoint[i]);
    Edit3.Text := FloatToStr(aPoint2[i]);
  end;

end; //else end i=1인 경우


inc(i);
Label5.Caption := '현재의 레코드번호는 : ' + IntToStr(i);
end;


procedure 빠샤빠샤폼.FormCreate(Sender: TObject);
begin
i:= 1;
Label5.Caption := '현재의 레코드번호는 : ' + IntToStr(i);
end;



+ -

관련 글 리스트
4828 [질문] [Ak,Error!!] 에러 잡아주세요...머리아프다. hk4801 886 1998/10/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.