Q&A

  • dynamic array 이용하기
음 처음으로 다이너믹 어레이를 이용해서 PG를 하고 있습니다.

제생각으론 맞는 것 같은데 자꾸 access violation 이 발생합니다...

소스는 다음과 같습니다.



1)SetLength(BuffD,Qry1.RecordCount,6);

즉 쿼리의 record count을 행의 갯수로 잡고(맞나요?)

각 행마다 6개의 colum 을 설정합니다..

즉 BuffD[0,0] ~~~[BuffD-1,5]까지의 어레이가 생기는 것 같은데 ?



2) 그다음에 이 어레에 데이탈,집어 넣는데

BuffD[RecCnt,1]:=IntToStr(TotSeoul);



에러가 납니다.



아시는 분 도와주시기 바랍니다.

감사합니다..







2  COMMENTS
  • Profile
    신호성 1999.06.24 19:45
    박성혜 께서 말씀하시기를...

    > 음 처음으로 다이너믹 어레이를 이용해서 PG를 하고 있습니다.

    > 제생각으론 맞는 것 같은데 자꾸 access violation 이 발생합니다...

    > 소스는 다음과 같습니다.

    >

    > 1)SetLength(BuffD,Qry1.RecordCount,6);

    > 즉 쿼리의 record count을 행의 갯수로 잡고(맞나요?)

    > 각 행마다 6개의 colum 을 설정합니다..

    > 즉 BuffD[0,0] ~~~[BuffD-1,5]까지의 어레이가 생기는 것 같은데 ?

    >

    > 2) 그다음에 이 어레에 데이탈,집어 넣는데

    > BuffD[RecCnt,1]:=IntToStr(TotSeoul);

    >

    > 에러가 납니다.

    >





    다차원 동적배열을 사용하셨군요.

    BuffD의 원형이 잘 선언되었다면 SetLength로 메모리 할당시에는 에러가 없을테고,

    값을 할당할 때에도 문제가 없어야 겠죠.

    아마도 BuffD[RecCnt,1]:=IntToStr(TotSeoul) 에서 RecCnt의 값에 문제가

    있을것 같군요.

    예를들어 Qry1.RecordCount의 값이 6이였다면 RecCnt의 값은 5이하의 값을 가져야하죠.



    ex)

    type TowDimArray = array of array of String;

    var BuffD : TowDimArray;



    SetLength(BuffD,6,6);



    BuffD[0,0] ~ BuffD[5,5] // 사용가능 배열의 첨자범위



    > 아시는 분 도와주시기 바랍니다.

    > 감사합니다..

    >

    >

    >





  • Profile
    박성혜 1999.06.25 03:21
    신호성 께서 말씀하시기를...

    > 박성혜 께서 말씀하시기를...

    > > 음 처음으로 다이너믹 어레이를 이용해서 PG를 하고 있습니다.

    > > 제생각으론 맞는 것 같은데 자꾸 access violation 이 발생합니다...

    > > 소스는 다음과 같습니다.

    > >

    > > 1)SetLength(BuffD,Qry1.RecordCount,6);

    > > 즉 쿼리의 record count을 행의 갯수로 잡고(맞나요?)

    > > 각 행마다 6개의 colum 을 설정합니다..

    > > 즉 BuffD[0,0] ~~~[BuffD-1,5]까지의 어레이가 생기는 것 같은데 ?

    > >

    > > 2) 그다음에 이 어레에 데이탈,집어 넣는데

    > > BuffD[RecCnt,1]:=IntToStr(TotSeoul);

    > >

    > > 에러가 납니다.

    > >

    >

    >

    > 다차원 동적배열을 사용하셨군요.

    > BuffD의 원형이 잘 선언되었다면 SetLength로 메모리 할당시에는 에러가 없을테고,

    > 값을 할당할 때에도 문제가 없어야 겠죠.

    > 아마도 BuffD[RecCnt,1]:=IntToStr(TotSeoul) 에서 RecCnt의 값에 문제가

    > 있을것 같군요.

    > 예를들어 Qry1.RecordCount의 값이 6이였다면 RecCnt의 값은 5이하의 값을 가져야하죠.

    >

    > ex)

    > type TowDimArray = array of array of String;

    > var BuffD : TowDimArray;

    >

    > SetLength(BuffD,6,6);

    >

    > BuffD[0,0] ~ BuffD[5,5] // 사용가능 배열의 첨자범위

    >

    > > 아시는 분 도와주시기 바랍니다.

    > > 감사합니다..

    > >

    > >

    > >

    >

    >



    감사합니다.



    해결했습니다.ReCCnt 에서 역시 문제 였습니다. 호호호



    SetLength(BuffD,BuffD,Qry1.RecordCount,6)에서

    SetLength(BuffD,BuffD,Qry1.RecordCount +1 ,6)로 수정 했습니다.

    (총계 열을 제가 빠뜨리고 계산했습니다.)



    도움 주셔서 감사합니다. 꾸벅 안녕