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
[53755] Re:다른 폼의 변수값을 사용하는 방법?
장성호 [nasilso] 1765 읽음    2008-06-24 18:08
[전연변수와 지역변수]
TForm1 class에 선언된 변수라면

그건 전역변수가 아닙니다.

그건 TForm1 class의 멤버 변수 입니다.

만약에
TForm1 *fm1=new TForm1(NULL);
TForm1 *fm2=new TForm1(NULL);


위와같이 TForm1 을 두개 생성했다면

int a,b 도 fm1 과 fm2에 따로 있게 되는거죠



[ Form1 에 대해]

그리고 Form1 에 대해

TForm1은 class 입니다.  class는 설계도죠
설계도를 가지고 물건을 만들었습니다.

그것을 Form1 이라는 변수에 넣어두면 Form1으로 접근할수 잇는것이지
Form1으로 접근하면 무조근 되는게 아닙니다.

TForm1 *fm1=new TForm1(NULL); 이처럼 TForm1을 생성했다면
이 폼의 int a에 접근하려면 fm1->a 이렇게 해야겠죠?

그런데 Form1으로 접근해도 에러 나지 않는 이유는?

Project1.cpp 같은 project 파일을 보시면 알수 있습니다.

     Application->Initialize();
     Application->CreateForm(__classid(TForm1), &Form1);  // 여기서 TForm1을 새성해서 Form1변수에 할당함
     Application->Run();


Application->CreateForm ... 에서 해주는것입니다.

만약
   1. 폼을 자동으로 생성하지 않았거나
   2. 자동생성한게 있더라도 또다른 TForm1을 생성했거나
   등등...

의 이유로 잘못된 접근이 일어날수 있죠


[전연변수는?]

Form1 같은게 전연 변수 입니다.

Unit1.h 에 보시면 extern으로 선언되어 있습니다.
     extern PACKAGE TForm1 *Form1;

실제 선언은 Unit1.cpp 에 보시면 나와있죠? 
    TForm1 *Form1;


님께서 unit1에 전역 변수를 선언해 사용하고 싶다면
Form1처럼 하는 방법이 있습니다.

    Unit1.h  에는  class 멤버가 아니고
    Form1 선언된 그위치 즈음에
    extern int a,b;  이렇게 선언하시구

    Unit1.cpp 에
    int  a,b 이렇게 선언해서 쓰시면 됩니다.


[멤버변수]
  int a,b를  TForm1의 멤버변수로 해서 쓰려면?
  변수 선언에는 문제없습니다

  그런데 참조한 Form1이 엉뚱한 놈이라서 그런것 같습니다.


그럼..
 

 




윤성중 님이 쓰신 글 :
: 예를 들어서 
: Form1에  전역 변수로 int a,b 라는 변수를 설정했습니다.
: 그리고 Form2에서 a 값에 따라서 b라는 변수에 값을 각각 다른 값을 입력하고 싶습니다.
: 그런데 Form1 에 있는 a 값을 가져 올수가 없습니다.
: 아래와 같이 프로그램을 만들었습니다.
:
: Fomr1의 헤더 파일에
: public:       
:       int a, b;
:        
: 에 위와 같이 변수 할당을 하고
: Form2 에서
: switch *Form1->a){
:
:       case 1:
:               b=2;
:        case 2:
:              c=4:
: }
: 위와같이 설정했는데 a값이 0으로만 계속 읽혀 집니다.
: 뭐가 잘못 됐나요? 답변 부탁드립니다.

+ -

관련 글 리스트
53752 다른 폼의 변수값을 사용하는 방법? 윤성중 1173 2008/06/24
53759     Re:다른 폼의 변수값을 사용하는 방법? 아제나 1339 2008/06/24
53755     Re:다른 폼의 변수값을 사용하는 방법? 장성호 1765 2008/06/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.