Q&A

  • 다시한번 질문이요 DLL과 스트링리스트
본프로그램에서
var
pData : TList;
i, j : integer;

begin
   pData := TList.Create;

   DLLPROCEDURE(pData);

   for i := 0 to pData.count - 1 do
   begin
      for j := 0 to TStringList(pData.items[i]).count - 1 do
         grid.cells[i, j] := TStringList(pData.items[i])[j];
      TStringList(pData.items[i]).clear;
      TStringList(pData.items[i]).free;
   end;
   pData.free;
end;



DLL에서
procedure  DLLPROCEDURE(pData : TList);
begin

  어떤폼을 모달리스트로 실행하고
  pData를 전달한다.

  그 폼은  내부에서
   pData.Add(TStringList.Create);  
    .... 데이타 집어넣고
  종료한다.

end;



여기서 1차 실행은 되는데
종료할때 그리고 2~3차 실행할때 에러가 납니다.

에러는 FreeMem이 되지않는다는것이고

제 추측은 String <= Dynamic string이므로 이놈이 말썽인듯

하거든요

물론 DLL을 안쓰고 Dll안의 그 폼을 메인프로그램에 넣으면 됩니다.

이거 어떻게 해결을 하여야 하나요 끙...


참 제가 또 다른방법으로

메인폼에서 콜할때

DLL에서 폼 Create 하고 Show하고

메인폼에서 데이타 갖다 쓰고

메인폼에서 다시 폼 Release하라고 명령하면

DLL에서 폼 Free할때 자기가 생성했던 데이타를 삭제했지만

그것도 실패했어요 쩝..


0  COMMENTS