C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[50196] Re:eaceess violation
수야!╋ [sooya23] 1036 읽음    2007-08-07 18:31
수얍니당.

올리신 소스 그대로 테스트를 해봤습니다.

전혀 문제 없더군요.

다른 부분의 문제일 것 같습니다.

1. 메모리 침범
2. Obj가 엉켜서 메모리가 뒤죽박죽현상

1번 해결방법
  memset이나 메모리 연산부 등 메모리 초기화나 배열사용, 포인터 사용에 있어 문제가 발생하여 해당부분의 메모리값을 초기화 혹은 0으로 바꾸고 계실 가능성이 있습니다. 전체적인 디버깅을 통해서 메모리 침범이 일어나고 있지 않은지 확인하셔야 합니다.
기본 소스에 문제가 없음을 확인하시기 위해서는 새 프로젝트에 올리신 소스만 추가하여 실행해보시면 정상적임을 확인하실 수 있습니다.
기본소스만 올렸는데 문제가 발생한다면
Tfrmfuntion
TfrmSubbutton
TfrmRecipe
TfrmRecipeSubbutton
의 생성부 및 초기화, 등등의 모든 부분을 확인하시는게 좋을것 같군요.
기본적으로 확인하시려면 위의 폼들을 넣지 않은채 그냥 TForm과 TButton의 기본으로 생성하여 테스트하십시요.
(예제)
         SCREEN_LIST.pScreen[0] = new TForm( this );
         SCREEN_LIST.pScreen[0]->Parent = this ;

         SCREEN_LIST.pButton[0] = ( TForm* ) new TButton(this );
         SCREEN_LIST.pButton[0]->Parent = this ;

         SCREEN_LIST.pScreen[1] = new TForm(this );
         SCREEN_LIST.pScreen[1]->Parent = this ;

         SCREEN_LIST.pButton[1] = ( TForm* ) new TButton(this );
         SCREEN_LIST.pButton[1]->Parent = this ;

2번 해결방법
프로젝트 폴더내의 Obj 파일을 모두 제거하십시오.
그후 다시 빌드를 통해 재실행 해보시기 바랍니다.

걸음마 님이 쓰신 글 :
: 생성한 폼을 TMain에서도 보여(show())주고
: 다른 서브버튼  폼을 만들어서 그 폼에서도
: 다른 폼을 불러오려고 합니다.
: 그래서 헤더파일을 하나 만들어서 구조체를 만들었습니다.
: 그 구조체에 아래와 같이 각각의 폼의 포인터를 배열에 넣습니다.
:
:
: ######  DataStruct.h  #########
:
: struct  SCREEN {
:         TForm*  pScreen[30];
:         TForm*  pButton[30];
:         int i;
: };
:
: struct SCREEN  SCREEN_LIST;
:
: ######   TMain  부분  ##########
: __fastcall TMain::TMain(TComponent* Owner)
:
: void __fastcall TMain::InitForm()
: {
:         SCREEN_LIST.pScreen[0] = new Tfrmfuntion(pnlMain);
:         SCREEN_LIST.pScreen[0]->Parent = pnlMain;
:
:         SCREEN_LIST.pButton[0] = new TfrmSubbutton(pnlRight);
:         SCREEN_LIST.pButton[0]->Parent = pnlRight;
:
:         SCREEN_LIST.pScreen[1] = new TfrmRecipe(pnlMain);
:         SCREEN_LIST.pScreen[1]->Parent = pnlMain;
:
:         SCREEN_LIST.pButton[1] = new TfrmRecipeSubbutton(pnlRight);
:         SCREEN_LIST.pButton[1]->Parent = pnlRight;
:
:
: }
: 이렇게 버튼을 눌렀을때 폼을 보여줍니다.
: void __fastcall TMain::ToolButton2Click(TObject *Sender)
: {
:
:     SCREEN_LIST.pScreen[0]->Show();
:     SCREEN_LIST.pButton[0]->Show();
: }
:
: 똑같이 다른 폼에서 폼을 보여주기위해 다음과 같이 합니다...
: #######  TfrmSubbutton 부분 ################
: void __fastcall TfrmSubbutton::ToolButton1Click(TObject *Sender)
: {
:   if(SCREEN_LIST.pScreen[1] != NULL)
:       SCREEN_LIST.pScreen[1]->Show();
:
:
: }
:
: 근데 if문에서 참이 되지 않아 그냥 나가버립니다.
: TMain부분에서 구조체에 값을 넣어 줬는데 왜 if문에서 걸리지 않고 나가버리는지 모르겠습니다.
: 고수님들의 답변 부탁드립니다.

+ -

관련 글 리스트
50193 eaceess violation 걸음마 1073 2007/08/07
50198     Re:eaceess violation 장성호 994 2007/08/07
50196     Re:eaceess violation 수야!╋ 1036 2007/08/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.