Q&A

  • SQL 컴포넌트 해제...?
Query 와 DataSource 소스상에서 동적으로 생성을 했는데요..
어떠한 버튼을 눌렀을 경우 소스상에서 생성한 Query 와 DataSource를
닫고 싶은데요... 그러니까 생성을 해제하려는거죠..
이 두개를 해제하려면 어떻게 해야하져...?

또하나..

procedure TSQLFrm.btnTestSQL(Sender : TObject)
var i : integer;
begin
    SetLength(Query,1);
    SetLength(DataSource,1);
    for i := 1 to testsu do begin
        Query[i] := TQuery.Create(self);
        DataSource[i] := TDataSource.Create(self);
        DataSource[i].DataSet := Query[i];
        Query[i].DatabaseName := 'TestData';
        Query[i].SQL.Text := 'Select.....';
        Query[i].Open
    end;
end;
위의 TestSQL를 한번 클릭한 후 또 클릭할 경우엔 에러가 발생해버립니다..
SetLength... 여기서 나는것 같은데...
에러의 내용은

Project TestSQL.exe raised exception class EAccess
Violation with message 'Access violation at address 00402494 in module
'TestSQL.exe'. Read of address 01C8B82C'. Process stopped. Use Srep
or Run to continue.

이건 왜그러죠...?
어떻게 해결할 수 있을까요..?

그리구 db가 어디에선가 계속 쌓이는것 같거든요.,.
그래서 시간이 지나면 델파이 폼에서 다음과 같은 에러가 납니다..

project TestSQL.exe raised exeception class EDBEngineError with message
'Insufficient memory for this operation.
Alias : '....'. Process stopped. Use Step or Run to continue.

왜그런지.. eof 이거와 관계가 있는지....

위에 해제하는 방법 꼭 좀 알려주십시오.. 급합니다..
3  COMMENTS
  • Profile
    어린왕자A 2002.05.03 03:12
    동적생성에 문제가 있는 거 같습니다.
    객체를 각각 만들어서. TList에 저장하셔서 관리하심이..

  • Profile
    박성훈 2002.05.01 21:44


    안녕하세요?

        SetLength(Query, 1);
        SetLength(DataSource,1);

    왜 배열의 길이를 1로 하셨는지 궁금하군요.


         for i := 1 to testsu do begin
              if Query[i]=nil then
              if DataSource[i]=nil then

  • Profile
    김현정 2002.05.01 03:32
    생성 해제
    Query.Free;
    DataSource.Free;

    에러나는거..
    //        Query[i] := TQuery.Create(self);  //다른곳에다가 생성하시구여..
    //        DataSource[i] := TDataSource.Create(self);  //다른곳 생성
            DataSource[i].DataSet := Query[i];
            Query[i].DatabaseName := 'TestData';
            Query[i].Sql.Clear;
            Query[i].SQL.Text := 'Select.....';
            Query[i].Open

    마지막 메모리 에러.
    저두 그건 잘 모르겠구여..
    최종적인 프로젝트를 만들면 안나요..^^;;