Q&A

  • 프레임의 create, destroy를 override 하면 안되는가요?
안녕하세요.
메모리루수를 테스트하려고 빈폼에 빈 프레임을 추가하고 프레임의 create, destroy를 override 했습니다.
type
  TFrame2 = class(TFrame)
  private
    { Private declarations }
  public
    { Public declarations }
    constructor create(aowner : TComponent); override;
    destructor destroy; override;
  end;

implementation

{$R *.dfm}

constructor TFrame2.create(aowner: TComponent);
begin
  inherited;
  ShowMessage('constructor');
end;

destructor TFrame2.destroy;
begin
  ShowMessage('destructor');
  inherited;
end;
이걸 실행하니 destroy통보가 나오지 않고 오류통보가 뜨는데요.
memproof로 테스트해보면 버
4  COMMENTS
  • Profile
    홍성락 2008.10.20 23:44
    TFrame에도 create, destroy의 override가 가능합니다.
    오류와 메모리 릭이 발생하였다면 재대로 죽지 못한겁니다. TFrame의 생성시킨 Owner가 Destroy되기전에 TFrame을 먼저 Destroy해보세요. 예를 들어 TFrame의 생성시킨 Owner폼의 Close이벤트에서 pTFrame2.Destroy; (변수 pTFrame2 : TFrame2; 일 경우)을 해보십시요
  • Profile
    steps 2008.10.20 23:51
    홍성락님 감사합니다.
    메인폼의 close이벤트에서 프레임.free; 를 호출하니 버그가 없어집니다.
    이런건 델파이메모리관리자 오류가 아닌가요?
  • Profile
    홍성락 2008.10.21 00:28
    해당 유닛내의 로컬은 자동으로 해줍니다. 그리고 위와 같은경우에도 생성한 폼이 죽을때 같이 TFrame2글래스를 destroy합니다, 그러나 먼저 생성시킨 폼이 죽기때문에 죽인후 되돌아갈 주소가 없어서 나는 버그입니다, 즉 ShowMessage뿐만아니라 다른 루틴을 돌리경우 타이밍이 안맞아 오류가 날때도 안날때도 있게됩니다, 그래서 습관적으로 종료시에는 사용한걸 destroy하고 해당 틀래스에도 안전한 destroy를 override해주는것이 필요합니다
  • Profile
    steps 2008.10.21 03:51
    음 델파이가 좀더 친절하게 이런것까지 해줬으면 ...
    성락님 답변 감사드립니다.
    • 이정욱
      2008.10.21 18:29
      잘 됩니다.. 일반적으로 띄우는 방법과 같습니다.
    • 야단났네~*
      2009.01.15 03:15
      NewForm.Show; 이렇게 하시면 Access 뭐시기 에러가 나올겁니다. 메모리에 Form이 Load되지 않아서 ...
    • 임채민
    • 2008.10.21 02:03
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.10.21 02:30
      무슨 말씀이신가요???
    • 석주현
      2008.10.21 02:49
      아마도 답을 쓰신다는게 답글로 안가고 그냥 올라왔나보네요. ㅠ_ㅠ
    • 석주현
      2008.10.21 03:01
      첫장만 나오게 하려면 아마도 <!--CodeS--> QuickRep1.PrinterSettings.FirstPage := 1; Qu...
    • 석주현
      2008.10.21 02:48
      밑에도 말씀드렸지만 저도 저 레코드 타입을 못찾아서 포기 하고 제가 알려드렸던 홈피에 있는걸로 깔...
    • 아르스
      2008.10.21 18:30
      후... 약 3일간의 삽질끝에 해결했습니다. 도움말에 보면 저런 문제가 발생할때는 패치가 실패했거...
    • 박찬호
    • 2008.10.20 19:49
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.10.20 20:21
      제어판의 국가및 언어 옵션을 영어나 다른 걸로 모두 다 바꾸면 아마 다시 리부팅 할겁니다. 그런 후...
    • 박찬호
      2008.10.20 22:22
      소나기님... 알려주신대로 작업을 했는데도 마찬가지로 나타납니다. 다른 프로그램 문제가 없는...
    • 홍성락
      2008.10.21 00:43
      대부분 OS언어가 다른 경우 나타납니다, 만약 한글OS에서라면 제어판의 국가및 언어 옵션의 3번째 탭의...
    • 석주현
      2008.10.21 02:46
      위에 말씀드린 국가 및 언어 옵션에 나와 있는 모든 것을 다 타 언어로 바꾼 후에 다시 바꾸시면 됩니다....
    • coderoad
    • 2008.10.20 08:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 장성호
      2008.10.20 10:39
      <!--CodeS--> function AlphabatToNumber(Alpha: Char): Integer; begin Result:=Integer...
    • coderoad
      2008.10.20 20:16
      앗. 이런 기발한 방법이... 정말로 고맙습니다.
    • 과학상자
      2008.10.20 21:04
      소나기님 정말 감사합니다... 저..실행파일로 만들어 주시면 안될까여 ;;;
    • 장성호
      2008.10.20 22:49
      ㅋㅋ 소나기님 배포를 해야할지도 모르니 setup.exe 파일도 미리 만들어 주세요
    • 장성호
      2008.10.21 21:58
      과학상자님 시스템 환경변수 수정및 적용이 SetEnvironmentVariable API로 잘안됩니다. 아래 팁을 ...
    • 석주현
      2008.10.22 00:34
      아래 보면 알지만 시샵님께서 한마디 하셔서 ㅡ_ㅡ;; 암튼 장성호님 팁 정말로 좋은거 같네요. 감사...
    • 석주현
    • 2008.10.21 02:52
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 과학상자
    • 2008.10.21 07:00
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 과학상자
      2008.10.21 08:01
      혼자 끙끙 거리며 왜안될까 하며 이것저것 만져 봐서 안되 가지고 다시글 올린 거에요... 아! 소나기 ...
    • 과학상자
      2008.10.21 10:34
      소나기님... 밑에 답글이여 ;;
    • 이정욱
      2008.10.21 18:32
      델파이 질답의 가장 중요한 점은 질문하신분께 조금의 정보와 기술을 알려드리는 것입니다.. 이런식의 프...
    • 석주현
      2008.10.21 20:37
      예 정욱님 죄송합니다. 다음 부터 유념하겠습니다.
    • 과학상자
      2008.10.22 08:09
      이정욱님 너무 하십니다!!!!!!! ㅠ.ㅠ 삐짐 -
    • steps
    • 2008.10.19 05:26
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2008.10.20 23:44
      TFrame에도 create, destroy의 override가 가능합니다. 오류와 메모리 릭이 발생하였다면 재대로 죽지 ...
    • steps
      2008.10.20 23:51
      홍성락님 감사합니다. 메인폼의 close이벤트에서 프레임.free; 를 호출하니 버그가 없어집니다. 이런건...
    • 홍성락
      2008.10.21 00:28
      해당 유닛내의 로컬은 자동으로 해줍니다. 그리고 위와 같은경우에도 생성한 폼이 죽을때 같이 TFrame2글...
    • steps
      2008.10.21 03:51
      음 델파이가 좀더 친절하게 이런것까지 해줬으면 ... 성락님 답변 감사드립니다.
    • 석주현
      2008.10.19 00:06
      저도 예전에 그거 받아서 아무리 깔려고 해도 안돼서 원래 TBX 라이브러리쪽 개발한 싸이트에 가서 ...
    • 아르스
      2008.10.19 02:21
      우어~~ TBX 포기하고 SpTBXLib를 설치를 해봤는데... 역시나 에러 나네요 ㅡㅡ;;; 폼위에 SpT...
    • 아르스
      2008.10.19 03:13
      http://club.telepolis.com/silverpointdev/sptbxlib/ 여기에서 MultiInstaller.exe 를 받아서 실행...
    • 석주현
      2008.10.19 04:11
      거참 이상하네요. 전 델마당인가에서 받은거 패치고 뭐고 다해도 안돼서 위에꺼 받아서 한번에 잘되었...
    • 아르스
      2008.10.20 21:51
      컥!! 패치를 잘못해서 발생한 에러군요.. 생각보다 패치가 까다롭네요 ㅠㅠ 어쨋건 패치를 제대...
    • steps
    • 2008.10.18 04:30
    • 9 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2008.10.18 05:07
      일단 검사하시려면 FastMM를 사용해서 제거하세요. 보통 일반 배열은 setlength(la, 0)만 해도 메모리 ...
    • steps
      2008.10.19 02:11
      홍성락님 프로젝트파일의 uses절 제일 처음에 fastmm4를 추가하고 다시 컴파일한후에 검사해보았지만 ...
    • 홍성락
      2008.10.20 05:20
      fastmm4는 메모리릭을 찾아주는거지 없애주는건 아닙니다, 누적되거나 큰 릭이 발생하면 잡아줘야합니다,...
    • steps
      2008.10.20 21:29
      홍성락님 감사합니다. ocx테스트가 힘들어 exe로 만들어 보니 다음의 로그 파일이 생기는데요 이게 대체...
    • 홍성락
      2008.10.20 22:17
      TCriticalSection x 1... 이정도 작은 릭이면 잡을 필요도 없습니다, 특정 메모리에 누적도 없이 생기는...
    • steps
      2008.10.20 22:31
      이용한 서고들이 충돌하는가를 검사하려고 새 프로젝트에 빈 폼을 만들고 uses절을 복사한 후 하나씩 제...
    • 홍성락
      2008.10.20 22:38
      indy도 그럴겁니다, 저희도 메모리릭중 누적도 없는 xx - xx bytes: TCriticalSection x 1 이런건 잡을 ...
    • • • •
    • 최용일
      2008.10.18 03:53
      어쩌라구요? ForceDirectories('c:\myfolder');
    • 홍성락
      2008.10.18 05:00
      MkDir('c:\myfolder');도 있어요, 내용이 없어서 그냥 명련문만인지, 서브폴더 없이 그아래 폴더 생성...
    • 이정욱
      2008.10.18 05:23
      답변해 주신분들...너무 착하신듯....
    • 석주현
      2008.10.18 19:36
      ㅎㅎ 최근들어 최고의 질문이네요. ㅡ_ㅡ;;
    • 홍성락
      2008.10.18 05:17
      자세한건 잘모르겠는데요, 다른 어플하고 막무가내로 어떻게 해보라는 요구와 그 시스템 건들지 말라고 ...
    • 임정미
      2008.10.20 09:17
      제 질문에 항상 좋은 대답을 해 주셔서 감사합니다. 저도 기본적으로 다른 프로그램과 파일을 공유할땐 ...
    • 홍성락
      2008.10.20 22:01
      아! 곤란하시겠네요, 다른 어플 옵션으로 임시 생성하는 파일이라....그 어플이 저장시 계속 파일을 열고...
    • 이정욱
      2008.10.21 02:32
      전 날짜의 파일을 삭제 하는 프로그램을 하나 작성하시고, 그것을 윈도우 스케쥴러에서 하루에 한번씩 ...
    • 임정미
      2009.02.02 19:44
      RS232 사용해서 직접 받는 쪽으로 하고 있습니다. 관심 가져주셔서 감사합니다.
    • TOMATO
    • 2008.10.17 21:29
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2008.10.17 22:25
      안녕하세요.. 다른사람이 코딩을 해주면.. 어떤 의미가 있을까요..ㅎㅎ:: 아래 내용을 참고하셔서...
    • 장진환
      2008.10.20 23:35
      위 코드 참고하여 해결했어요 감사합니다 ^^
    • 최용일
      2008.10.17 08:35
      그냥 순수하게 아스키 문자열로 보내세요. 보내신 데이터는 아스키코드를 헥사값으로 변경해서 보낸거네...
    • 석주현
      2008.10.17 10:22
      <!--CodeS--> var tmpBuff : array[0..100] of Byte; begin tmpBuff[0] := $30; tmpBuf...
    • 장성호
      2008.10.17 13:24
      소나기님이 제시한 방법으로 하면됩니다. 한가지 팁을 알려드리면 string 2byte를 1Byte binary로...
    • 이정욱
      2008.10.18 05:25
      최신 버전이 아니면, 최신으로 소스를 바꾸시는것이 좋습니다. 사용하시는것이 델2007이 나오기 전에 나...
    • 소울해커
      2008.10.18 20:18
      답변 감사합니다. 버전은 6.10 으로 라이센스를 받은 소스입니다. dac.inc 파일을 못찾아서...; ...
    • coderoad
    • 2008.10.17 03:11
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2008.10.17 21:46
      안녕하세요.. SHFormatDrive API 는 시스템의 포맷 다이얼로그를 띄워 주는 것입니다.. 그러므로, ...
    • coderoad
      2008.10.17 22:03
      감사합니다. 유용하게 사용하겠습니다.