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
[52467] 에러 원인좀 찾아 주세요..
구윤태 [] 1094 읽음    2008-02-28 23:08
1.
프로젝트에  TCD_DataStruct.h  파일생성후

[TCD_DataStruct.h]

#ifndef __TCD_DataStructH__
#define __TCD_DataStructH__

typedef struct
{
   AnsiString  PatientsID;
   AnsiString  ChartNo;
   AnsiString  Name;
   TDateTime   Birth;
   AnsiString  Sex;
   AnsiString  Telephone;
   AnsiString  Address;
   AnsiString  Remark;
   TDateTime   RegistDate;
} PATIENT;

#endif
============================================================================
2.  프로젝트 공유 클래스 생성 TCD_ShareData.h
[TCD_ShareData.h]
#ifndef TCD_ShareDataH
#define TCD_ShareDataH
#include "TCD_DataStruct.h"

class TCD_ShareData
{
private:
        PATIENT pPatient;
public:
        TCD_ShareData();
        ~TCD_ShareData();
        void __fastcall SetPatient(PATIENT mPatient);
        PATIENT __fastcall GetPatient();
};
extern PACKAGE TCD_ShareData *tcdSD;
#endif


[TCD_ShareData.cpp]
#pragma hdrstop
#include <vcl.h>
#include "TCD_ShareData.h"
#include "Trace.h"

TCD_ShareData *tcdSD;
TCD_ShareData::TCD_ShareData()
{
}
TCD_ShareData::~TCD_ShareData()
{
}
void __fastcall TCD_ShareData::SetPatient(PATIENT mPatient)
{
  pPatient = mPatient;
}
PATIENT __fastcall TCD_ShareData::GetPatient()
{
  return pPatient;
}
#pragma package(smart_init)
===========================================================================================

3. Form 생성


#ifndef TCD_PatientInputH
#define TCD_PatientInputH

#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <jpeg.hpp>
#include <Mask.hpp>
#include <ComCtrls.hpp>


class Tpatientinput : public TForm
{
__published:    // IDE-managed Components
    TImage *Image1;
    TImage *okImage;
    TImage *cancelImage;
        TMaskEdit *patientidEdit;

    void __fastcall okImageClick(TObject *Sender);
    void __fastcall cancelImageClick(TObject *Sender);
public:        // User declarations
    __fastcall Tpatientinput(TComponent* Owner);
    //환자 데이터 구조체 저장
    void __fastcall patientDataStore();
};
extern PACKAGE Tpatientinput *patientinput;
//---------------------------------------------------------------------------
#endif



[TCD_PatientInput.cpp]
//공유데이터
#include <vcl.h>
#pragma hdrstop

#include "TCD_ShareData.h"
#include "Trace.h"

#pragma package(smart_init)
#pragma resource "*.dfm"

Tpatientinput *patientinput;

//ok 버튼
void __fastcall Tpatientinput::okImageClick(TObject *Sender)
{
//환자 정보 struct 저장
  patientDataStore();
}

void __fastcall Tpatientinput::patientDataStore()
{

  //구조체에 환자 정보 저장하기
  PATIENT mPatient;
  mPatient.PatientsID= this->patientidEdit->Text;
  TRACE("mPatient=%p  , mPatient.PatientsID=%s",mPatient,mPatient.PatientsID); //정상적으로 값이 표시 됩니다.
  tcdSD->SetPatient(mPatient);
}




---------------------------------------------------------------------------------------------
문의)
구조체 헤더정의후 , 공유 클래스를 생성해서 구조체 개체를 만들고
구초체를 받아서 처리하는 루틴 만든 다음
새로운 폼에서 공유클래스를 이용하여  PATIENT mPatient 생성한 곳에 , 객체를 전달 하여 주는 과정입니다.


TCD_PatientInput.cpp 소스에서 ok버튼을 실행시키면
구조체의 값이 저장되어 SetPatient(mPatient)를 통해서
TCD_ShareData.cpp 소스의 SetPatient함수를 실행시키는데

void __fastcall TCD_ShareData::SetPatient(PATIENT mPatient)
{
  TRACE("mPatient=%p  , mPatient.PatientsID=%s",mPatient,mPatient.PatientsID); //정상적으로 값이 표시됩니다.
  pPatient = mPatient; <-여기서 에러가 나타나는데 원인을 모르겠습니다.
}




에러 내용
Access violation at address 00432E0 in module 'TCD.exe' , Write of address 00000000

메세지가 나옵니다.

+ -

관련 글 리스트
52467 에러 원인좀 찾아 주세요.. 구윤태 1094 2008/02/28
52475     답변고맙습니다. 구윤태 940 2008/02/29
52474     Re:에러 원인좀 찾아 주세요.. 1148 2008/02/29
52473     Re:에러 원인좀 찾아 주세요.. 정성훈.해미 1088 2008/02/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.