D2010, Win7 64 비트. 안녕하십니까,- TDataSet에서 메모리를 비우는 방법?
다른 단추로 열리는 TDataSet을 처리해야하는 buttonClick 이벤트가 있습니다 ... GetDBGenericData.
GetDBGenericData 함수는 TDataSet을 반환합니다. 이 루틴은 기본적으로 tQuery 구성 요소를 사용하여 SQL 속성을 설정하고 엽니 다. 그런 다음 TDataSet을 내 buttonclick으로 반환합니다.
procedure TForm1.Button2Click(Sender: TObject);
var
DS : TDataSet;
begin
DS := TDataSet.Create(nil);
DS := GetDBGenericData(dbSOURCE, 'LIST_ALL_SCHEMAS', []);
while Not DS.EOF do
begin
ShowMessage(DS.FieldByName('USERNAME').AsString);
DS.Next;
end;
DS.Close;
DS.Free;
내 문제는 - Understanding DS. 나는이 루틴에서 여기 그것을 만들고있다. 구성 요소를 가리키는 TDataSet에 "할당"하고 있습니다. 내가 그것을 해제하지 않으면 메모리 누수가 있습니다 (EurekaLog에 의해보고 됨). 내가 해방하면 다음에이 루틴을 실행할 때 AV가 생깁니다. (특히 GetDBGenericData 루틴 내부).
내가 무슨 일이 일어나고 생각하는 것은 반환되고있는 TDataSet의에 (복사 반대) DS가 효과 그래서,이 루틴 모두 DS를 해제하고, 할당지고 있다는 것입니다, 그리고 GetDBGenericData에있는 tQuery 나는 자유를한다.
어떻게 링크를 "끊고"내가 동적으로 생성하는 메모리와 관련된 메모리 만 삭제합니까?
감사합니다, GS 당신의 DS
변수가 GetDBGenericData
에 의해 다른 TDataSet
를 할당하는 경우
그게 ... 고마워. – user1009073