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
[54942] Re:Re:.bpl로 만든 runtime package안에서 다른Form에 있는 변수 읽을 때 Access Error?
쏘가리 [] 1362 읽음    2008-10-20 10:20
아 정말 감사합니다.
해결했습니다.


아루스 님이 쓰신 글 :
: 웬지.......
: ArDataForm1 의
: 생성자에서 ArData_Frm1 = this; 를
: 소멸자에서 ArData_Frm1 = NULL; 을
: 넣어주면 될 것 같네요.
:
:
: 쏘가리 님이 쓰신 글 :
: : runtime package 로 ArData.bpl을 만들었습니다.
: : 그런데 Package안에 만들은 ArData_Frm1과 ArData_Frm2 간의 변수를 사용하려면
: : Access Error가 발생을 하네요. 도무지 방법을 찾을 길이 없습니다.
: : ArData_Unit2.cpp 파일의 Button1Click 함수에서 ArData_Frm1->Name = "KKKK";
: : 이렇게 ArData_Unit1에 선언되어 있는 변수에 쓸려고 하면 에러가 발생합니다.
: : 알고 계시는 분은 꼭 답변해주시면 감사하겠습니다.
: :
: : ArData_Unit1.cpp
: : //---------------------------------------------------------------------------
: :
: : #include <vcl.h>
: : #pragma hdrstop
: :
: : #include "ArData_Unit1.h"
: : #include "ArData_Unit2.h"
: : //---------------------------------------------------------------------------
: : #pragma package(smart_init)
: : #pragma link "AdvGrid"
: : #pragma link "BaseGrid"
: : #pragma resource "*.dfm"
: : TArData_Frm1 *ArData_Frm1;
: : //---------------------------------------------------------------------------
: : __fastcall TArData_Frm1::TArData_Frm1(TComponent* Owner)
: :     : TForm(Owner)
: : {
: : }
: : //---------------------------------------------------------------------------
: : void initialization(void)
: : {
: :   RegisterClass(__classid(TArData_Frm1));
: : }
: :
: : void finalization(void)
: : {
: :   UnRegisterClass(__classid(TArData_Frm1));
: : }
: :
: : #pragma startup initialization
: : #pragma exit finalization
: : //----------------------------------------------------------------------------
: : void __fastcall TfrmOrderEnquiry::FormClose(TObject *Sender,
: :       TCloseAction &Action)
: : {
: :   Action = caFree;
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall TArData_Frm1::FormClose(TObject *Sender, TCloseAction &Action)
: : {
: :     Action = caFree;
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall TArData_Frm1::Button1Click(TObject *Sender)
: : {
: :     TForm *ar_data = new TArData_Frm2(NULL);
: :     ar_data->Show();
: : }
: : //---------------------------------------------------------------------------
: :
: : ArData_Unit1.h
: : //---------------------------------------------------------------------------
: :
: : #ifndef ArData_Unit1H
: : #define ArData_Unit1H
: : //---------------------------------------------------------------------------
: : #include <Classes.hpp>
: : #include <Controls.hpp>
: : #include <StdCtrls.hpp>
: : #include <Forms.hpp>
: : #include "AdvGrid.hpp"
: : #include "BaseGrid.hpp"
: : #include <Grids.hpp>
: : //---------------------------------------------------------------------------
: : class TArData_Frm1 : public TForm
: : {
: : __published:    // IDE-managed Components
: :     TButton *Button1;
: :     TAdvStringGrid *AdvStringGrid1;
: :     void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
: :     void __fastcall Button1Click(TObject *Sender);
: : private:    // User declarations
: :
: : public:        // User declarations
: :     AnsiString Name;
: :     __fastcall TArData_Frm1(TComponent* Owner);
: : };
: : //---------------------------------------------------------------------------
: : extern PACKAGE TArData_Frm1 *ArData_Frm1;
: : //---------------------------------------------------------------------------
: : #endif
: :
: : ArData_Unit2.cpp
: : /---------------------------------------------------------------------------
: :
: : #include <vcl.h>
: : #pragma hdrstop
: :
: : #include "ArData_Unit2.h"
: : #include "ArData_Unit1.h"
: : //---------------------------------------------------------------------------
: : #pragma package(smart_init)
: : #pragma resource "*.dfm"
: : TArData_Frm2 *ArData_Frm2;
: : //---------------------------------------------------------------------------
: : __fastcall TArData_Frm2::TArData_Frm2(TComponent* Owner)
: :     : TForm(Owner)
: : {
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall TArData_Frm2::Button1Click(TObject *Sender)
: : {
: :     ArData_Frm1->Name = "KKKK";  <------여기서 에러 발생
: :                 ShowMessage(ArData_Frm1->Name);
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall TArData_Frm2::FormClose(TObject *Sender, TCloseAction &Action)
: : {
: :     Action = caFree;
: : }
: : //---------------------------------------------------------------------------
: : void init_Unit2(void)
: : {
: :   RegisterClass(__classid(TArData_Frm2));
: : }
: :
: : void final_Unit2(void)
: : {
: :   UnRegisterClass(__classid(TArData_Frm2));
: : }
: :
: : #pragma startup init_Unit2
: : #pragma exit final_Unit2
: :
: : ArData_Unit2.h
: : //---------------------------------------------------------------------------
: :
: : #ifndef ArData_Unit2H
: : #define ArData_Unit2H
: : //---------------------------------------------------------------------------
: : #include <Classes.hpp>
: : #include <Controls.hpp>
: : #include <StdCtrls.hpp>
: : #include <Forms.hpp>
: : //---------------------------------------------------------------------------
: : class TArData_Frm2 : public TForm
: : {
: : __published:    // IDE-managed Components
: :     TButton *Button1;
: :     void __fastcall Button1Click(TObject *Sender);
: :     void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
: : private:    // User declarations
: : public:        // User declarations
: :     __fastcall TArData_Frm2(TComponent* Owner);
: : };
: : //---------------------------------------------------------------------------
: : extern PACKAGE TArData_Frm2 *ArData_Frm2;
: : //---------------------------------------------------------------------------
: : #endif
: :
: :
: : bpl 파일 콜 하는 프로그램 부분
: :
: : try {
: :      PHandle = LoadPackage("ArData.bpl");
: : } catch (...) {
: :     ShowMessage("LoadPackage Error!!!");
: : }
: :
: : AClass = GetClass("TArData_Frm1");
: :
: :  if (AClass != NULL) {
: :      Application->CreateForm(AClass, &AForm);
: :      AForm->Show();
: :   }

+ -

관련 글 리스트
54939 .bpl로 만든 runtime package안에서 다른Form에 있는 변수 읽을 때 Access Error? 쏘가리 1183 2008/10/18
54940     Re:.bpl로 만든 runtime package안에서 다른Form에 있는 변수 읽을 때 Access Error? 아루스 1372 2008/10/20
54942         Re:Re:.bpl로 만든 runtime package안에서 다른Form에 있는 변수 읽을 때 Access Error? 쏘가리 1362 2008/10/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.