Q&A

  • "DLL에 있는 MDI Child폼 사용하기" .이용해서 ,Dll다운로드관련 질문~
안녕하세요.
다름이 아니라


최용일님이 자료실에 작성한     "" [예제] DLL에 있는 MDI Child폼 사용하기. ""  Dll를 이용해서 프로그램을 개발하고있습니다.
http://www.delphi.co.kr/zboard/view.php?id=component&page=2&sn1=&divpage=1&sn=off&ss=on&sc=on&keyword=DLL&select_arrange=headnum&desc=asc&no=358

근데 문제는 Test.Dll을 한번 호출할때는 문제가 없습니다.
근데 Test.Dll 어디에선가 (제 생각은 메모리....)잡고 있어서 Free를 시켜 줘야 할꺼 같은데
그걸 어떻게 해야 할지를 모르겠습니다.

제가 할려고하는건 Dll버젼을을 체크를 하여 신버젼이 있으면 서버로 부터 다운받아서 그 다운받은 Dll을 오픈할려고 하는데 test.Dll을 사용중이라서 복사가 안 되는거 같습니다.
실제 테스트를 해봐도 안되구요

Test.Dll에 있는 폼을 닫을때 Test.Dll을 Free시켜야 할꺼 같은데 방법을 모르겠습니다.

많은 고격님들의 의견 부탁 드립니다.

아무리 열심히 찾아봐도 답을 못 찾겠습니다.
ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

그럼 즐거운 하루 되시길 바랍니다.
감사합니다.

참고로 델파이6을 사용합니다.






선언부
T_ProvaChildDbClick = procedure (ParentApplication: TApplication; ParentForm: TForm;SUSERINFO:TUSERINFO;
                                    szStringList:TStringList; SLszSession_Num, SgszAddress:String; SgnPort:integer;
                                    SAccessList : Variant;
                                    SgnKeyRowCount,SgnKeyColCount : Integer ); stdcall;


버튼을 클릭시

procedure TFMain.FA1Click(Sender: TObject);
var
  DllHandle : THandle;
  DllName :  String;

  ProcAddr: FarProc;
  ProvaChild: T_ProvaChildDbClick;
begin

  LockWindowUpdate(Handle);


  DllName := Test.dll';

//버젼비교
if 서버.Test.dll버젼 <> 로켈test.Dll then
   다운받고 그 로컬Dll로 시작

  DllHandle := LoadLibrary(pchar(DllName));
  ProcAddr := GetProcAddress(DllHandle, 'ProvaChildDbClick');
  if ProcAddr <> nil then begin
    ProvaChild := ProcAddr;
    ProvaChild(Application,Self, USERINFO, szStringList, LszSession_Num, gszAddress,     gnPort,vAccessList,gnKeyRowCount,gnKeyColCount);
  end
  else begin
    showmessage('dll 없다네');
    LockWindowUpdate(0);
    exit;
  end;
end;

2  COMMENTS
  • Profile
    최용일 2006.09.12 23:17
    안녕하세요. 최용일입니다.

    다 쓰신후에 FreeLibrary호출하셔서 불러온 DLL모듈을 해제해주셔야 합니다. 예제에는 그 부분이 빠져 있군요...

    DLL을 서버로부터 다운받기 전에 DLL이 LoadLibrary로 불러왔다면 역시 여기서도 FreeLibrary호출한뒤에 서버로부터 다운받아야 합니다.

    ^^ 항상 즐코하세요...

  • Profile
    난난난난 2006.09.13 02:56

    // 최용일님 정말 감사합니다.