Q&A

  • 배열에 대한 질문입니다..
컴파일 에러는 없는데.. 실행후 링크에러(?)인지 잘 모르는 이상한 에러가 납니다... 소스는 다음과 같구요..  아래 데이타베이스 연결 부분을 빼면 배열자체에는 에러가 발생되지 않습니다. 그런데.. 데이타베이스 연결과 같이 충돌이 나는 ACCESS 어쩌고 저쩌구 하는 에러가 발생이 되네요.....
메시지박스도 잘 뜨는데...다 실행하고 난 다음에 문제가 발생이 되네요..
^^ 이유를 모르겠어요..
고수님께..조언을 구합니다...
var
  MyFile: TextFile;
  aaa : string;
  i : Integer;
  day_cnt : array[1..10] of Integer;
  day : array[1..10] of string;
begin
  with DM.query do begin
    if Active then Close;
    SQL.Clear;
    SQL.Add('select DAY,count(DAY_CNT) as DAY_C from TDAY_SUM group by DAY');
    Open;
    if RecordCount > 0 then begin
      i :=0;
      while not eof do begin
        day[i] := Stringreplace(FieldByName('DAY).AsString,'.','',[rfreplaceAll]);     showmessage(day[i] );
        day_cnt[i] := FieldByName(DAY_C).AsInteger;  str(day_cnt [i],aaa); showmessage(aaa);
        i := i + 1;
        Next;
      end;
    end
    else
    begin
      showmessage('처리할 자료가 존재하지 않습니다.');
      exit;
    end;
  end;
end;
부탁드립니다....
4  COMMENTS
  • Profile
    강형철 2003.10.17 00:06
    배열선언이 잘못되었네요..
    배열에서는 1..10까지인데 실제로 배열을 사용할때는 0부터 사용하네요
    그러니 엉뚱한 메모리를 건드리니깐 에러가 나죠...

    day_cnt : array[1..10] of Integer; -> day_cnt : array[0..9] of Integer
    day : array[1..10] of string; -> day : array[0..9] of string;

    이렇게 고치던가... 아니면...

      if RecordCount > 0 then begin
         i :=0;
      -> 여기서 1부터 시작하게 고치던가 하세요..
      if RecordCount > 0 then begin
         i :=1;

    그럼 즐프하세요..


  • Profile
    민경철 2003.10.17 00:21
    고치니까..잘 돌아가네요...
    감사드립니다...

  • Profile
    연기훈 2003.10.17 00:06
    day_cnt : array[1..10] of Integer;
    day : array[1..10] of string;

    에서 배열 인덱스를 1부터 시작해서 10까지로 잡으셨네요..

    그런데 밑에

          i :=0;
          while not eof do begin
            day[i] := Stringreplace(FieldByName('DAY).AsString,'.','',[rfreplaceAll]);     showmessage(day[i] );
            day_cnt[i] := FieldByName(DAY_C).AsInteger;  str(day_cnt [i],aaa); showmessage(aaa);
            i := i + 1;
            Next;
          end;

    으로 i가 0부터 시작하네요..

    인덱스 에러가 발생한거 같네요

    i := 1; 로 수정하세요!



  • Profile
    민경철 2003.10.17 00:20
    수정하니까...잘 돌아갑니다...^^
    감사드립니다.