Q&A

  • 토요일에 날 고생시키는 소스(도무지 이해가...)


// 건수 총합계

TotCnt := Query2.FieldByName('CNT').AsInteger

+ Query3.FieldByName('CNT').AsInteger ;

TotSon := Query2.FieldByName('SONRO').AsInteger;



While (TotCnt = 0) and (TotSon = 0) do

begin

Query2.Next;

Query3.Next;

if Query2.Eof then

begin

PrintBand := False;

Exit;

end;

TotCnt := Query2.FieldByName('CNT').AsInteger

+ Query3.FieldByName('CNT').AsInteger ;

TotSon := Query2.FieldByName('SONRO').AsInteger;

End;



For i := 0 To 1 do

begin

V1[i] := 0;

V2[i] := 0;

End;



// 금액

V1[0] := Query2.FieldByName('Base1').AsInteger;

V1[1] := Query3.FieldByName('water').AsInteger; // 과년도



// 건수

V2[0] := Query2.FieldByName('Cnt1').AsInteger;

V2[1] := Query3.FieldByName('Cnt').AsInteger; // 과년도



Cnt0.Caption := FormatFloat('#,##0' , V2[0]); <========================

Cnt1.Caption := FormatFloat('#,##0' , V2[1]); <=========================

Sun0.Caption := FormatFloat('#,##0' , V1[0]); <========================

Sun1.Caption := FormatFloat('#,##0' , V1[1]); <=======================

Query3.Next;



실행시키면 sun0.caption 과 cnt0.caption 은

제대루 나오구 cnt0.caption , cnt1.caption 은 모조건 0으로 찍힙니다

글구 에러메세지두 없습니다



그래서 디버깅을 했습니다

화살표한소스에서 디버깅시 배열에는 정확한값이 들어가는데

caption 을 찍어보면 풍선도뭄말로 Access vilotion

어쩌구 찍히구

invaliad Floating point operation 이라는 에러메세지가찍힙니다

(이 에러는 0으로 나눌때 나는걸로 알구있는데 0으로 나눈적도 없거든여...)











end;





5  COMMENTS
  • Profile
    아폴론 2001.01.29 09:19
    Query2.FieldByName('CNT').AsInteger; 를

    Query2.FieldByName('CNT').AsFloat; 으로 함 해보져

    모든 대입을 다 Float으로 고쳐보고 한번 해보세요. 그리고 결과를 한번 보죠.





  • Profile
    바람개비 2001.01.28 01:04
    배열의 선언시 크기를 정확히 설정하셨나요?

    0번째는 값이 있고 1번째에 에러라면 의심할것은 이곳뿐...



    바라미~~



    hnc wrote:

    >

    > // 건수 총합계

    > TotCnt := Query2.FieldByName('CNT').AsInteger

    > + Query3.FieldByName('CNT').AsInteger ;

    > TotSon := Query2.FieldByName('SONRO').AsInteger;

    >

    > While (TotCnt = 0) and (TotSon = 0) do

    > begin

    > Query2.Next;

    > Query3.Next;

    > if Query2.Eof then

    > begin

    > PrintBand := False;

    > Exit;

    > end;

    > TotCnt := Query2.FieldByName('CNT').AsInteger

    > + Query3.FieldByName('CNT').AsInteger ;

    > TotSon := Query2.FieldByName('SONRO').AsInteger;

    > End;

    >

    > For i := 0 To 1 do

    > begin

    > V1[i] := 0;

    > V2[i] := 0;

    > End;

    >

    > // 금액

    > V1[0] := Query2.FieldByName('Base1').AsInteger;

    > V1[1] := Query3.FieldByName('water').AsInteger; // 과년도

    >

    > // 건수

    > V2[0] := Query2.FieldByName('Cnt1').AsInteger;

    > V2[1] := Query3.FieldByName('Cnt').AsInteger; // 과년도

    >

    > Cnt0.Caption := FormatFloat('#,##0' , V2[0]); <========================

    > Cnt1.Caption := FormatFloat('#,##0' , V2[1]); <=========================

    > Sun0.Caption := FormatFloat('#,##0' , V1[0]); <========================

    > Sun1.Caption := FormatFloat('#,##0' , V1[1]); <=======================

    > Query3.Next;

    >

    > 실행시키면 sun0.caption 과 cnt0.caption 은

    > 제대루 나오구 cnt0.caption , cnt1.caption 은 모조건 0으로 찍힙니다

    > 글구 에러메세지두 없습니다

    >

    > 그래서 디버깅을 했습니다

    > 화살표한소스에서 디버깅시 배열에는 정확한값이 들어가는데

    > caption 을 찍어보면 풍선도뭄말로 Access vilotion

    > 어쩌구 찍히구

    > invaliad Floating point operation 이라는 에러메세지가찍힙니다

    > (이 에러는 0으로 나눌때 나는걸로 알구있는데 0으로 나눈적도 없거든여...)

    >

    >

    >

    >

    >

    > end;

    >

    >

  • Profile
    hnc 2001.01.28 01:08
    배열 크기는 바로 선언됐구....

    글구 디버깅시 배열부분에서는 값을 바로 일어 옵니다..

    그런데 배열값을 라벨에 찍을때 디버깅시에는 에러 실행시에는 0으로 돼거든여...

  • Profile
    바람개비 2001.01.28 01:13
    그런데 굳이 배열에 옮겼다가 캡션으로 옮기는 이유는 뭔가요?

    배열을 거치지 말고 해보시지요.



    바라미~~



    hnc wrote:

    > 배열 크기는 바로 선언됐구....

    > 글구 디버깅시 배열부분에서는 값을 바로 일어 옵니다..

    > 그런데 배열값을 라벨에 찍을때 디버깅시에는 에러 실행시에는 0으로 돼거든여...

  • Profile
    hnc 2001.01.28 01:32
    질문은 간단하게 보이려구 배열을 작게 사용했구...

    원래소스에는 찍으려는 라벨이 많고

    각 결과치끼리 계산하는부분이 많기때문에 배열를 사용했습니다

    (아니면 계산할때마다 FieldByname......을사용하면 복잡하잖아여...)

    그외 꼭 배열을 사용해야하는이유도있구여....

    근데 배열을 사용해두 에러가 날 이유는 없잖아여....

    근데 제가 원하는건 에러를 피하구 싶은게 아니구 에러의 원인을 알구 싶거든여... ...