Q&A

  • jpeg파일들을 dll로 작성해서 사용하는 방법
여러개의 jpeg파일을 dll형태로 만들어서 사용하는 방법을 모르겠습니다.

아시는 분은 좀 가르쳐 주십시오.

6  COMMENTS
  • Profile
    원영준 1999.03.09 22:20
    안녕 하십니까 !

    델파이 초보자로써 이런 곳을 보니 매우 기쁩니다.

    당분간은 ROM족 신세를 면치 못하겠지만 언젠가는 정보도 제공해 줄수 있는 날이 오길 ....





    MAIN FORM에서 DLL로 SELF(TWindControl)를 넘기고 DLL에서 TForm1.CREATE 에 아규먼트로 주었는데 잘 안되네요!



    누가좀 도와 주세요!!!!!

  • Profile
    글쎄요 1999.06.11 00:02
    이승윤 께서 말씀하시기를...

    > 여러개의 jpeg파일을 dll형태로 만들어서 사용하는 방법을 모르겠습니다.

    > 아시는 분은 좀 가르쳐 주십시오.

    ///////

    여기를 참조하셔요.

    http://www.borland.com/devsupport/delphi/qanda/FAQ2626D.html



  • Profile
    안치봉 1999.03.10 04:15
    소스는 잘~ 받았습니다.



    소스를 보니 약간은 잘못(?)된 부분이 있습니다(아래는 제가 수정한 겁니다).



    procedure TForm1.b1Click(Sender: TObject);

    var

    mi : TMenuItem;

    HInst : THandle;

    fPtr : TFarProc;

    _do : DODO;

    begin

    HInst := LoadLibrary('DLLTEST.dll');



    if HInst <> 0 then

    begin

    @_do := GetProcAddress(HInst, '_do');

    if @_do <> nil then _do(self, application);

    FreeLibrary(HInst);

    end;

    end;



    그리고 DLL 부분에도 잘못된 부분이 있는것 같습니다.

    (아래는 제가 나름대로 테스트할때 쓴 DLL 부분입니다. 이건 잘 되거든요)



    procedure _do(x:TWinControl; y:TApplication); stdcall;

    var

    f: TForm;

    begin

    f := TForm.Create(y);

    f.ShowModal;

    f.free;

    end;



    도움이 되셨는지 모르겠군요^^;

    DLL 에 대해 공부하시려면 델파이의 도움말중 색인에서 DLL 에대해 보시면 많은 도움이 될겁니다~

  • Profile
    구창민 1999.06.10 20:16
    이승윤 께서 말씀하시기를...

    > 여러개의 jpeg파일을 dll형태로 만들어서 사용하는 방법을 모르겠습니다.

    > 아시는 분은 좀 가르쳐 주십시오.



    이승윤님 안녕하세요?

    아래는 하이텔동호회에서 활동중이신 황용호님이 쓰신

    리소스에서 JPEG읽어 출력하기 입니다.



    Image파일을 dll로 왜 만들려고 하시는지?

    아래 방법은 dll로 만드는 것은 아니지만 참조해 보시기 바랍니다.



    /////////////////////////////////////////////////////////////////

    JPEG파일을 리소스로 만들고 그 리소스를 TImage를 이용하여



    출력하려면 다음과 같이 하시면 됩니다.



    우선 리소스 파일을 만들어야 하는데 델파이는 변변한 리소스 에디터를



    제공하지 않습니다. 있어봤자 이미지 에디터 정도겠지요...



    그렇지만 리소스 컴파일러는 제공합니다. brcc32.exe라는 프로그램이죠.



    그래서 .RC파일을 직접 만들어서 컴파일 하여야 합니다.



    우선 빈 텍스트 파일을 하나 만들어서 다음의 한 줄을 써 넣습니다.



    resname 24 DISCARDABLE "JPEGfilename.jpg"



    resname에는 사용하기 원하는 리소스 이름을 넣으시고 JPEGfilename.jpg에는



    리소스로 만들 파일의 풀패스명을 적어 주면 됩니다.



    리소스 파일이 여러개라면 갯수만큼 위의 내용을 추가해 주시면 됩니다.



    24라는 숫자는 리소스 타입의 ID인데 JPEG는 예약된 리소스 타입이 없으므로



    예약된 숫자 + 1로 정한 것입니다. 24이상이면 어떤 수이거나 상관 없는데



    아래 소스의 MakeIntResource내의 인자와 일치해야 합니다.



    여튼 이렇게 만드신 후 확장자를 .rc로 해서 저장합니다. 편의상 MyRes.rc라고



    한다면 커맨드 라인에서 brcc32.exe MyRes.rc라고 치면 MyRes.res파일이 만들어



    집니다.



    그런 후 이제 이 리소스 파일을 프로그램에 추가하여야겠지요.



    프로젝트의 소스를 여시면 {$R *.res}라고 적힌 부분이 있을 겁니다.



    그 밑에 {$R MyRes.res}라고 추가합니다. 여기서 MyRes.res는 brcc32로 만들어진



    리소스 파일 이름입니다.



    이렇게 하셔서 컴파일 하시면 우선 리소스는 실행파일에 포함된 겁니다.



    다음으로...



    리소스에서 JPEG image를 읽어서 TImage 콤포넌트로 출력을 하려면



    다음과 같은 코드를 출력하고자 하는 부분에 넣어 주시면 됩니다.



    TGraphic에는 리소스에서 직접 데이터를 읽어오는 방법을 지원하지



    않으므로 스트림을 이용하셔야 합니다.



    편의상 버튼 클릭 이벤트에서 하는 것으로 하겠습니다. 아래는 소스입니다.



    procedure TForm1.Button1Click(Sender: TObject);

    var

    ResStream : TResourceStream;

    JPEGImage : TJPEGImage;

    begin

    JPEGImage := TJPEGImage.Create;

    ResStream := TResourceStream.Create(hInstance, 'resname',

    MakeIntResource(24));

    try

    JPEGImage.LoadFromStream(ResStream);

    Image1.Picture.Assign(JPEGImage);

    finally

    ResStream.Free;

    JPEGImage.Free;

    end;

    end;



    TJPEGImage를 사용하므로 uses절에 jpeg를 추가하셔야 합니다.



    소스 중 TResourceStream.Create에 있는 resname에다가 위의 .rc파일에서



    지정한 리소스이름을 적어 주시면 됩니다.



    소스가 간단하므로 쉽게 이해가 가실겁니다.



    이렇게 하시면 jpeg파일이 실행파일과 합쳐져 출력됩니다.



    참고가 되셨으면 합니다.



    그럼 이만...





  • Profile
    신인재 1999.03.10 04:08
    원영준 wrote:

    > 안녕 하십니까 !

    > 델파이 초보자로써 이런 곳을 보니 매우 기쁩니다.

    > 당분간은 ROM족 신세를 면치 못하겠지만 언젠가는 정보도 제공해 줄수 있는 날이 오길 ....

    >

    >

    > MAIN FORM에서 DLL로 SELF(TWindControl)를 넘기고 DLL에서 TForm1.CREATE 에 아규먼트로 주었는데 잘 안되네요!

    >

    > 누가좀 도와 주세요!!!!!



    아래에 MDI Child폼을 넣은 DLL의 예제를 올림니다.

    도움이 되시길....

    Main에서 procedure ShowMDIChildForm(MainApp : TApplication);

    를 호출하면 되겠음다



    library MDIForms;



    uses

    SysUtils,

    Classes,

    Forms,



    Windows,

    //MDI Child폼의 실제 unit



    ChildU in 'ChildU.pas' {ChildForm};



    var

    DLLApp : TApplication;



    procedure MyDLLProc(Reason: Integer);

    begin

    if Reason = DLL_PROCESS_DETACH then

    { DLL이 메모리에서 내려갈때}

    { 애플리케이션 포인터를 원위치 시킨다. }

    if Assigned(DllApp) then

    Application := DllApp;

    end;



    procedure ShowMDIChildForm(MainApp : TApplication);

    var

    Child : TChildForm;



    begin



    if not Assigned(DllApp) then

    begin



    DllApp := Application;

    Application := MainApp;

    end;

    Child := TChildForm.Create(Application.MainForm);

    Child.Show;

    end;



    exports ShowMDIChildForm;

    begin

    { DllApp 변수를 초기화 한다. }

    DllApp := nil;

    DLLProc := @MyDLLProc;

    end.



    파워러브 델파이 98년 8월호에서 퍼왔음다....^^!!!

  • Profile
    안치봉 1999.03.10 02:11
    원영준 wrote:

    > 안녕 하십니까 !

    > 델파이 초보자로써 이런 곳을 보니 매우 기쁩니다.

    > 당분간은 ROM족 신세를 면치 못하겠지만 언젠가는 정보도 제공해 줄수 있는 날이 오길 ....

    >

    >

    > MAIN FORM에서 DLL로 SELF(TWindControl)를 넘기고 DLL에서 TForm1.CREATE 에 아규먼트로 주었는데 잘 안되네요!

    >

    > 누가좀 도와 주세요!!!!!



    안녕하세요!!.



    음....죄송하지만 테스트 해보신 전체(DLL 부분과 DLL 을 호출하는 부분) 소스를 이곳에 올리시거나 혹은 저에게 메일로 보내주셔야 분석이 일단은 가능하겠습니다.



    생각하신 방법(DLL에 들어있는 form을 child로 띄우는 방법)은 불가능하지 않은걸로 알고 있습니다. 아마도 구현하는 부분이 잘못된것 같군요.



    감사합니다.

    • 안치봉
      1999.03.10 04:15
      소스는 잘~ 받았습니다. 소스를 보니 약간은 잘못(?)된 부분이 있습니다(아래는 제가 수정한 겁니다). ...
    • 신인재
      1999.03.10 04:08
      원영준 wrote: > 안녕 하십니까 ! > 델파이 초보자로써 이런 곳을 보니 매우 기쁩니다. > 당분간은 ROM...
    • 안치봉
      1999.03.10 02:11
      원영준 wrote: > 안녕 하십니까 ! > 델파이 초보자로써 이런 곳을 보니 매우 기쁩니다. > 당분간은 ROM...
    • 송기원
    • 1999.06.10 19:25
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.06.10 20:22
      송기원 께서 말씀하시기를... > windows 95에서 실행중인 모든 프로그램의 Handle을 참조할려고 합니다. ...
    • 이승윤
    • 1999.06.10 17:52
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 원영준
      1999.03.09 22:20
      안녕 하십니까 ! 델파이 초보자로써 이런 곳을 보니 매우 기쁩니다. 당분간은 ROM족 신세를 면치 못하겠...
    • 글쎄요
      1999.06.11 00:02
      이승윤 께서 말씀하시기를... > 여러개의 jpeg파일을 dll형태로 만들어서 사용하는 방법을 모르겠습니다. ...
    • 안치봉
      1999.03.10 04:15
      소스는 잘~ 받았습니다. 소스를 보니 약간은 잘못(?)된 부분이 있습니다(아래는 제가 수정한 겁니다). ...
    • 구창민
      1999.06.10 20:16
      이승윤 께서 말씀하시기를... > 여러개의 jpeg파일을 dll형태로 만들어서 사용하는 방법을 모르겠습니다. ...
    • 신인재
      1999.03.10 04:08
      원영준 wrote: > 안녕 하십니까 ! > 델파이 초보자로써 이런 곳을 보니 매우 기쁩니다. > 당분간은 ROM...
    • 안치봉
      1999.03.10 02:11
      원영준 wrote: > 안녕 하십니까 ! > 델파이 초보자로써 이런 곳을 보니 매우 기쁩니다. > 당분간은 ROM...
    • 안치봉
      1999.03.09 06:01
      박근영 wrote: > 안녕하세요.... > 얼마전 나이렉스 인터내셔날을 처음 알게 되었습니다.... > 사이트...
    • 박근영
      1999.03.09 17:39
      답변 감사합니다... 건강하세요.....
    • neperz
    • 1999.06.10 09:01
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 정청환
    • 1999.06.10 07:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김성동
      1999.06.11 00:10
      StringGrid의 소스를 보면 protected 멤버로 DeleteRow란 프로시져가 있습니다. 그러니까 StringGrid에서 ...
    • 안치봉
      1999.03.09 06:01
      박근영 wrote: > 안녕하세요.... > 얼마전 나이렉스 인터내셔날을 처음 알게 되었습니다.... > 사이트...
    • 박근영
      1999.03.09 17:39
      답변 감사합니다... 건강하세요.....
    • 정청환
    • 1999.06.10 07:21
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김태균
      1999.06.10 18:23
      정청환 께서 말씀하시기를... > stringgrid에서 한 라인(Row)을 삭제 > > stringgrid에서 한 라인(Row)...
    • chobo
    • 1999.06.10 07:13
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 박근영
      1999.03.09 04:01
      안녕하세요.... 얼마전 나이렉스 인터내셔날을 처음 알게 되었습니다.... 사이트 내용이 좋아 자주 들...
    • 최석기
      1999.06.10 09:22
      chobo 께서 말씀하시기를... > 프로그램에서 특정프로그램을 동작시킬려고 합니다. > ShellExecute()함수...
    • 안치봉
      1999.03.09 06:01
      박근영 wrote: > 안녕하세요.... > 얼마전 나이렉스 인터내셔날을 처음 알게 되었습니다.... > 사이트...
    • 박근영
      1999.03.09 17:39
      답변 감사합니다... 건강하세요.....
    • 김성률
    • 1999.03.06 05:11
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.03.08 00:34
      김성률 wrote: > 먼저 대단히 죄송합니다. 이해를 도우기 위한 측면만 생각하다 보니 제가 봐도 말도 않되...
    • 이창석
    • 1999.03.08 00:11
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 최현호
      1999.06.10 05:53
      델파이상에서 다른 컴퓨터의 공유디렉토리를 네트워크 드라이브로 잡는 방법이 있나요? 델파이는 4.0을 ...
    • 안치봉
      1999.03.10 03:12
      이창석 wrote: > 반갑습니다. > 아침에 봄비가 조금 내리더니, 지금은 그쳤네요. > 몇일째 풀리지 않는...
    • 구창민
      1999.06.10 20:04
      최현호 께서 말씀하시기를... > 델파이상에서 다른 컴퓨터의 공유디렉토리를 네트워크 드라이브로 잡는 ...
    • 이창석
      1999.03.12 00:33
      안치봉 wrote: > 이창석 wrote: > > 반갑습니다. > > 아침에 봄비가 조금 내리더니, 지금은 그쳤네요. ...
    • 신인재
      1999.03.12 04:33
      > procedure TForm1.Button1Click(Sender: TObject); > var > i,y:integer; > begin > if opendialo...
    • 정성호
    • 1999.06.10 05:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김성률
      1999.03.06 05:11
      먼저 대단히 죄송합니다. 이해를 도우기 위한 측면만 생각하다 보니 제가 봐도 말도 않되는 것을 소스라고 ...
    • 안치봉
      1999.03.08 00:34
      김성률 wrote: > 먼저 대단히 죄송합니다. 이해를 도우기 위한 측면만 생각하다 보니 제가 봐도 말도 않되...
    • 공대규
      1999.06.10 22:35
      델파이에서 ActiveForm 어플리케이션으로 만드시는 것이 좋을 듯 합니다. 일단 File-New-ActiveX-ActiveFo...
    • 기련이
      1999.03.05 01:12
      저도 프로그램을 테스트 해 보았는데 문제가 생겼어요. body의 내용이 정상적으로 나타나지 않고 마치 암...
    • 안치봉
      1999.03.05 23:06
      기련이 wrote: > 저도 프로그램을 테스트 해 보았는데 문제가 생겼어요. > body의 내용이 정상적으로 나...
    • 기련이
      1999.03.06 02:33
      도와주셔서 정말 감사합니다. 제가 메일을 보낸 것은 OUTLOOK EXPRESS이고, 메일서버는 MS EXCHANGE서...
    • 안치봉
      1999.03.06 04:46
      기련이 wrote: > 도와주셔서 정말 감사합니다. > > 제가 메일을 보낸 것은 OUTLOOK EXPRESS이고, > ...
    • 기련이
      1999.03.10 02:30
      덕분에 문제를 해결하였습니다. Var InStr, OutStr: TStringStream; Begin InStr := TStringStr...