본프로그램에서
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할때 자기가 생성했던 데이타를 삭제했지만
그것도 실패했어요 쩝..