Q&A

  • DLL과 Host application간의 자료공유방법??
DLL안에서 DB에 접속하여 우편번호를 검색하는 폼이 있고 검색한 결과를



Host application에서 검색결과 값을 참조를 할려고 합니다...

근데... 도무지 방법을 모르겠네요....



왕 초보좀 살려 주세요....





1  COMMENTS
  • Profile
    김형준 1999.05.15 10:30
    왕초보 wrote:

    > DLL안에서 DB에 접속하여 우편번호를 검색하는 폼이 있고 검색한 결과를

    >

    > Host application에서 검색결과 값을 참조를 할려고 합니다...

    > 근데... 도무지 방법을 모르겠네요....

    >

    > 왕 초보좀 살려 주세요....

    >

    >



    세가지 방법이 생각나는군요.

    첫째는 외부 파일을 하나 두어서 이용하는 것이고...

    두번째는 함수의 리턴값으로 처리하는 방법..

    세번째는 MMFs 기법을 이용하는 것입니다.

    정석은 MMFs 기법을 사용하는 것입니다.

    MMFs에 관한 소스는 다음과 같습니다..



    // MMFs(Memory Mapped Files)의 생성과 사용

    // Step 0.50



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;



    type

    TForm1 = class(TForm)

    procedure FormCreate(Sender: TObject);

    procedure FormDestroy(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;

    SharedPChar: pChar;

    hFileMap: THandle;



    const

    LEN = 100;



    implementation



    {$R *.DFM}



    procedure TForm1.FormCreate(Sender: TObject);

    begin

    hFileMap := CreateFileMapping($FFFFFFFF, nil,

    PAGE_READWRITE, 0, LEN + 1,

    'jackass_id');



    SharedPChar := pChar(MapViewOfFile(hFileMap,

    FILE_MAP_READ + FILE_MAP_WRITE, 0, 0, 0));



    if GetLastError <> ERROR_ALREADY_EXISTS then

    begin

    StrPLCopy(SharedPChar, 'Hello World', LEN);

    Caption := 'Assign - ';

    end else Caption := 'Not Assign - ';



    Caption := Caption + SharedPChar;

    end;



    procedure TForm1.FormDestroy(Sender: TObject);

    begin

    UnMapViewOfFile(SharedPChar);

    CloseHandle(hFileMap);

    end;



    end.