Q&A

  • result 전에 메모리해제하면요?
안녕하세요.

  비트맵 파일을 생성을 해서 해제를 하는데요.

  result 값을 비트맵으로 해서 반환을 하니 해제 할때 에러가 발생하네요.

  시점을 언제 free를 해야 하나요? 아니면, 안해도 되는 건가요?


아래의 예에서 발생합니다. bmp를 jpg로 변환시.

var
  imgjpg : TJPEGImage;
  imgbmp : TBitmap;
begin
  try
    imgjpg := TJPEGImage.Create;
    imgbmp := TBitmap.Create;
    // jpg 파일을 읽어와서
    imgjpg.LoadFromFile( Path_Name );
    // bmp 형식으로 어사인 시킨다.
    imgbmp.Assign(TBitmap(imgjpg));
    result := ImgBmp;            ==> 여기가  비트맵형식으로 반환...
  finally
  //  imgbmp.Free;              ===> 반환하고 프리시키면 오류발생.
    imgjpg.Free;
  end; // end of try

2  COMMENTS
  • Profile
    우하하 2004.10.15 02:02
    type
      PBitmap = ^TBitmap;
      
    procedure loadjpgfile(Path_Name:PChar; NowBmp: PBitmap);
    var
      imgjpg : TJPEGImage;
    begin
      imgjpg := TJPEGImage.Create;
      try
        imgjpg.LoadFromFile(Path_Name);
        NowBmp^.Assign(imgjpg);
      finally
        imgjpg.Free;
      end;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
      imgBmp : TBitmap;
      jpgFileName : PChar;
    begin
      imgBmp := TBitmap.Create;
      try
        loadjpgfile(jpgFileName, @imgBmp);
        Image1.Picture.Assign(imgBmp);
      finally
        imgBmp.Free;
      end;
    end;



  • Profile
    정동욱 2004.10.14 18:57



    [...]
    위에서와 같이 imgbmp는 Free 하면 않됩니다.
    객체의 동적생성 이니 언젠가는 Free 해야 하지만 위와 같은 경우는
    객체의 생존 영역과 생존시간에 관한 위반 입니다.
    이 경우 최소한 이 함수 내에서는 Free 할수 없습니다.
    이 함수를 CALL 하는 곳에서 Free해야 합니다.

    • 정동욱
      2004.10.15 03:29
      [...] FTimer.Enabled = True 하면 무조건 타이머 돌아 갑니다.     if not...
    • 정동욱
      2004.10.15 04:04
      [...] 구현 하는 방법은 스킬에 따라 여러가지 있겠습니다만 델파이답게 구현 하는법을 한가지 ...
    • 진돌
    • 2004.10.15 01:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이승민
      2004.10.15 01:45
      자료실에 가셔서 ACM 관련 내용을 찾아서 참고 하시면 될것같네요. 콤포넌트들과 데모프로그램 들도 있...
    • 신철우
    • 2004.10.14 22:44
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 우하하
      2004.10.15 01:30
      혹시 레이블을 디자인모드에서 먼저 생성하셨다면.. var   TempLabel : array[0..2] of ^TLab...
    • 정동욱
      2004.10.14 23:22
         [줄바꿈]    Label1.WordWrap := True;    Label1.Caption :=...
    • 모영철
      2004.10.14 23:20
      MyLabel : array[0..100] of TLabel; 위처럼 선언 하시면 되구요.. 전 델파이6인데 줄바꿈 되는데요......
    • Maru
    • 2004.10.14 22:34
    • 1 COMMENTS
    • /
    • 0 LIKES
    • Maru
      2004.10.15 00:30
      아래의 경우 함수안에서 19를 자를때 19 하고뒤에 공백한칸을 포함시켜서 에러가 났네요.. 19만딱자르니...
    • 김길현
    • 2004.10.14 09:47
    • 2 COMMENTS
    • /
    • 1 LIKES
    • 우하하
      2004.10.15 02:02
      type   PBitmap = ^TBitmap;    procedure loadjpgfile(Path_Name:PChar; NowBmp: ...
    • 정동욱
      2004.10.14 18:57
      [...] 위에서와 같이 imgbmp는 Free 하면 않됩니다. 객체의 동적생성 이니 언젠가는 Free 해야 하...
    • 박원용
    • 2004.10.14 05:24
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 일그니
      2004.10.14 21:26
      혹시나 하는 맘으로 적어봅니다. 쿼리 컴포넌트의 질의어중 (insahyun / insacho)*100 AS insapercent ...
    • 모영철
      2004.10.14 21:13
        if  (QryGongJ.FieldByName('AFTER_QTY').AsString = '')   and (QryGon...
    • 박원용
      2004.10.15 09:22
      먼저 도움주셔서 정말 감사하구요.. %는 잘됩니다.. 그런데.. 특정 셀에 대한 조건을 부여했을때 색깔바...
    • 기타맨
    • 2004.10.14 04:57
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 기타맨
      2004.10.14 18:53
      답변자료에 있군요.
    • 희아빠
    • 2004.10.14 02:58
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 스바쉬
    • 2004.10.13 23:45
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이승민
      2004.10.14 01:02
      http://www.delmadang.com/cwb-bin/CrazyWWWBoard.exe?db=dmdres2&mode=read&num=648&page=1&backdepth=1 ...
    • 스바쉬
      2004.10.14 18:01
      .
    • 모영철
      2004.10.14 00:05
      그런경우 어떻게 값을 넣어줬는지는 모르겠는데요.. WM_USER + X 이렇게 해서 메세지를 날려서 받...
    • ㉳㉥ㅗ㉣ㅐ㉧ㅛ
      2004.10.14 00:37
      그래도 머가 먼지 모르겠네요...이쪽은 초보라 그런가벼요...
    • 최용일
      2004.10.14 01:28
      안녕하세요. 최용일입니다. 걍 메세지를 보내세요... PostMessage(CheckBoxHandle, BM_SETCHECK, BST...
    • ㉳㉥ㅗ㉣ㅐ㉧ㅛ
      2004.10.14 02:36
      감사합니다... 아래걸루 하니까 되구요...위에것은 그림만 되네요... 근디 버튼은 어떻게 하는지????...
    • 최용일
      2004.10.14 05:07
      안녕하세요. 최용일입니다. TSpeedButton이면 윈도우컨트롤이 아니니까 핸들도 없을테구요... 그 스...
    • 우하하
      2004.10.15 02:10
      비슷한 경험이 있었던 기억이.. TRichEdit 써보시죠. Win32에 있습니다.
    • ㉳㉥ㅗ㉣ㅐ㉧ㅛ
      2004.10.13 21:57
      혹시 그 컴포넌트들이 한 폼에 있는 것은 아니것죠... 비슷한 부분끼리 그룹으로 입력을 받으면 ...
    • 희망봉
    • 2004.10.13 18:49
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2004.10.13 22:07
      무슨 말씀이신지.... 스파이에서 핸들이 나오지 않는다면 그건 윈도우가 아닙니다. 버튼이나 폼들. 콤보...
    • 존재의바다
      2004.10.14 07:51
      문제를 정면돌파하지 마시고 우회하면 어떨까 합니다. 동작도 잘 되고 하면 굳이 종료시점에 장애나는...
    • 권성욱
      2004.10.14 02:36
      델마당에도 질문 하셨던거 같던데... Dll 을 호출 할때 stdcall로 호출하지 마시고, cdecl로 호출 ...
    • 김명찬
      2004.10.13 03:31
      VC++로 만든 DLL이 크게 1 전문생성 2 연결(connect) 3 전송(send) 4 수신(receive) 이런과정을 거치...
    • 석주현
      2004.10.13 18:14
      혹시 종료 하기 전에 커넥션을 안끊으신건 아닌지...ㅠ_ㅠ
    • 이승민
      2004.10.14 01:08
      저는 서버쪽에서 클라이언트가 접속되었을 때 일정시간에 한번씩 Ping data 를 보냅니다. 뭐 Ping 이라...
    • 최용일
      2004.10.13 02:23
      안녕하세요. 최용일입니다. 원래 TCP자체가 그러한 경우에 대해서 마땅히 대처할만한 방법을 제공하지는...
    • 김정은
    • 2004.10.12 21:18
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 서기원
      2004.10.13 01:17
      예전에 여긴가 델코에서 말씀하신 문제를 포함하여 TWebBrowser의 버그에 대해서 글을 읽은 것 같은데.......
    • 신철우
      2004.10.15 19:10
      아래경로는 설명만 잔뜩해놓고 다운로드링크가 없네요. 확실하게 알려주시면 고맙겠습니다.
    • 최용일
      2004.10.15 20:47
      안녕하세요. 최용일입니다. 글좀 읽어보세요. 위에 왼쪽에서 네번째에 EmbeddedWB이라고 써져 있잖아...
    • 김정은
      2004.10.13 22:45
      설치과정이 많이 되나요? 에구구~~그래도 함 깔아바야겠네요~ 즐거운 시간 많이 많이 보내세요~~
    • 이용남
      2007.02.02 19:04
      uses     RVClass, RVProj, RVCsStd;   var    ...
    • 정동욱
      2004.10.12 22:35
      [...] 결론만 말씀 드리면 TEvent 를 사용 해야 합니다. Execute 의 끝행에서 Event.WaitFot...
    • 최용일
      2004.10.12 07:51
      안녕하세요. 최용일입니다. 두개의 핸들값이 다르다면 님께서 다른 윈도우의 핸들을 찾으신겁니다. 윈도...