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
[54939] .bpl로 만든 runtime package안에서 다른Form에 있는 변수 읽을 때 Access Error?
쏘가리 [] 1183 읽음    2008-10-18 20:51
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? 아루스 1373 2008/10/20
54942         Re:Re:.bpl로 만든 runtime package안에서 다른Form에 있는 변수 읽을 때 Access Error? 쏘가리 1363 2008/10/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.