Q&A

  • private, protected, public
델파이 소스를 들여다보다가 궁금한점이 있어서 질문합니다..

일반적으로 변수를 설정할때 private, protected, public 의 용도를 아주 조금 알고 쓰기는 하지만.. 여지껏 이렇다하게 큰 프로그램을 만들어본 적이 없는 저로서는 protected의 접근방법이 궁금합니다.

private 영역에 선언된 멤버들과 같이 접근권한이 제한되어 있지만 클래스가 선언된 유닛의 외부에서 이 지시어로 선언된 구성요소들은 그 클래스의 자손 클래스 영역 안에서는 사용이 가능하도록 되어 있다.. 정도로 알고 있거든요.



그런데 db 소스를 보다가 시험삼아 TDataSet의 protected 에 선언되어 있는 GetRecNo라는 함수를 한번 써 봤더니..

undeclared identifier라는 에러가 생깁니다.

물론.. 상단에는 db를 참조시켰구요..

Edit1.Text := IntToStr(DM.Query1.GetRecNo); 라구요..

물론 protected에 선언되어 있기때문에 이렇게 간단히 접근되리라고 생각하지 않습니다.



protected 에 선언되어 있는 메소드에는 어떻게 접근해야 할까요?

그리고..

소스의 왼쪽에 보면 노란도형, 연두색 도형이 있는데 이건 무슨 차이를 말하는 걸까요???



아.. 아는건 없고 모르는것 투성이라서.. 맨날 헤매고 있는 지영이..

아시는분.. 해답 좀 주셔요..

토요일이군요.. 좋은 주말되시구요.

1  COMMENTS
  • Profile
    전철호 1999.04.25 01:10
    강지영 wrote:

    > 델파이 소스를 들여다보다가 궁금한점이 있어서 질문합니다..

    > 일반적으로 변수를 설정할때 private, protected, public 의 용도를 아주 조금 알고 쓰기는 하지만.. 여지껏 이렇다하게 큰 프로그램을 만들어본 적이 없는 저로서는 protected의 접근방법이 궁금합니다.

    > private 영역에 선언된 멤버들과 같이 접근권한이 제한되어 있지만 클래스가 선언된 유닛의 외부에서 이 지시어로 선언된 구성요소들은 그 클래스의 자손 클래스 영역 안에서는 사용이 가능하도록 되어 있다.. 정도로 알고 있거든요.

    >

    > 그런데 db 소스를 보다가 시험삼아 TDataSet의 protected 에 선언되어 있는 GetRecNo라는 함수를 한번 써 봤더니..

    > undeclared identifier라는 에러가 생깁니다.

    > 물론.. 상단에는 db를 참조시켰구요..

    > Edit1.Text := IntToStr(DM.Query1.GetRecNo); 라구요..

    > 물론 protected에 선언되어 있기때문에 이렇게 간단히 접근되리라고 생각하지 않습니다.

    >

    > protected 에 선언되어 있는 메소드에는 어떻게 접근해야 할까요?

    > 그리고..

    > 소스의 왼쪽에 보면 노란도형, 연두색 도형이 있는데 이건 무슨 차이를 말하는 걸까요???

    >

    > 아.. 아는건 없고 모르는것 투성이라서.. 맨날 헤매고 있는 지영이..

    > 아시는분.. 해답 좀 주셔요..

    > 토요일이군요.. 좋은 주말되시구요.





    안녕하세요..

    전철호입니다.



    Protected로 선언된 변수와 메소드를 다른 Unit에서 이용하시려면

    해당 클래스를 상속을 받아서 사용 해야 합니다.

    델파이 에서는 private, public, published, protected로 변수나, 함수,

    메소드를 선언할 수 있는데

    private는 해당 유니트에서만 사용이 가능하고

    public, published는 모든 유니트에서 사용 가능하고,

    protected는 해당 유닛과 상속받은 클래스를 가지고 있는 유닛에서만

    사용 가능합니다.



    예를 들어서 TDataSet에 GetRecNo라는 메소드가 protected로

    되어 있다면

    TDataSet에서 상속을 받아서 사용해야 합니다.

    예제)

    DD : TDataSet 이라고 선언이 되어 있다면

    DD.GetRecno를 사용을 하시려면

    다음과 같이 코딩을 하시면 됩니다.



    type

    TAClass = class(TDataSet);

    ....

    ...

    TAClass(DD).GetRecno;



    그리고 도움말에서 연두색,파란색 같은 도형은 해당 클래스에서

    변수,함수,메소드 참조가 가능한지 여부와, 읽고/쓰기 가 가능한

    property인지를 나타내기 위해 사용한 것입니다.

    예를 들어 연두색 사각형은 클래스선언이 public으로 선언되었다는

    것이고

    파란색 화살표는 property가 읽기속성이라는 것이므로

    그값에 할당을 하면 안된 다는 것입니다.

    즉 일기속성은 클래스에서

    property Active : Boolean read GetActive;

    처럼 선언되어서 쓰기를 못합니다.



    더 자세한 내용은 제 홈페이지 팁란에 있으니 참고하시고

    그래도 궁금한 점이 있으시면 다시 물러 보시기 바랍니다.







    • 심주성
    • 1999.04.26 05:39
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.26 19:30
      심주성 wrote: > > 안녕하세요. 완전프로그래밍 초짜입니다. > > delphi4.0을 해볼려구 함 깔아...
    • 심주성
      1999.04.28 09:40
      안치봉 wrote: > > 안녕하세요. > > 잘은 모르겠지만 델파이4가 일부 그래픽카드와 충돌한다는 설도 ...
    • 강지영
    • 1999.04.26 01:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.26 01:47
      DBGrid의 Align이 문제인것 같네요. alClient나 다른 것이 설정되어 있으면 당연히 위치가 바뀌어 버립니...
    • 고혜정
    • 1999.04.25 12:36
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신호성
      1999.04.27 04:11
      고혜정 wrote: > 안녕하세요.. 오래간 만에 들어와보니 달라 졌군요. > 스토오드 프로시저 컴포넌트를 ...
    • 전형식
    • 1999.04.25 09:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.04.25 21:51
      전형식 wrote: > 안녕하세요.. > 델파이를 사랑하는 개발자 입니다. > 이번에 보이스관련 프로그래밍을 ...
    • 강지영
    • 1999.04.25 00:44
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 전철호
      1999.04.25 01:10
      강지영 wrote: > 델파이 소스를 들여다보다가 궁금한점이 있어서 질문합니다.. > 일반적으로 변수를 설정...
    • 박상현
    • 1999.04.24 23:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.25 08:02
      리스트에 없는 인덱스를 가리켰기 때문에 난 에러 입니다. 예를들면 리스트에 들어있는 아이템의 갯수가 3...
    • 한태진
      1999.04.25 04:23
      WhiteDragon wrote: > 제가 변환할려는 것은 도스용 dbf화일을 델파이 파라독스 화일인 db로 전환할려고 ...
    • 박홍석
    • 1999.04.24 20:25
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 강두헌
      1999.04.27 22:14
      박홍석 wrote: > 안녕하세요. > > 날짜형 필드를 가지고 쿼리하는 방법을 알고 싶습니다. > 여러가지...
    • 신인재
      1999.04.26 21:03
      박홍석 wrote: > 안녕하세요. > > 날짜형 필드를 가지고 쿼리하는 방법을 알고 싶습니다. > 여러가지...
    • 이헌
    • 1999.04.24 18:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.24 20:15
      TextOut의 마지막 인자는 String형입니다. 기본적으로 델파이 32비트에서는 String형의 길이는 제한이 없...
    • 박광호
    • 1999.04.24 18:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.24 20:32
      폼 이름이 Form2라고 가정을 하고 Form2는 TForm형이라고 가정을 할때, Form2 := TForm.Create(Self); ...
    • 김성희
    • 1999.04.24 09:25
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.24 12:05
      김성희 wrote: > 독립된 프로그램 사이에서 파라메터가 이동할수 있는 방법이나요? > 있다면 어떤방법인...
    • 박홍석
    • 1999.04.24 06:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.04.24 07:30
      박홍석 wrote: > 안녕하세요. > > 콤보박스를 펼쳐서 마우스로 아이템을 선택할려고 이동중일때 > 그 ...
    • 김경수
    • 1999.04.24 05:42
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.24 08:09
      이 문제의 키는 Font.Height 에 있습니다. 화면이 72 DPI일 경우 Font.Height 의 공식은 아래와 같습니다....
    • 김경수
      1999.04.24 12:42
      안녕하세요. 김경수입니다. 에구 size로 하니까 아래와 같은 문제가 없어지더군요. 답변 감사드립니다. ...
    • 김영회
    • 1999.04.24 04:00
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.24 08:11
      다른곳에서 잘되었다면 삼보에서도 잘 되어야 겠죠. 델파이와 BDE의 관계중 하나 가능성이 있는것이라면 ...
    • 초보자
    • 1999.04.24 02:28
    • 2 COMMENTS
    • /
    • 0 LIKES
    • chaser
      1999.04.24 03:24
      초보자 wrote: > 윈도우의 탐색기 처럼 한 폼에서 여러개의 부분으로 구분된 폼을 만들고 싶습니다. 어떻...
    • 초보자
      1999.04.24 21:53
      답변에 감사드립니다 한가지 더 질문올립니다. 화면을 양쪽으로 분할하는것은 이제 알았습니다. 그러면 ...
    • 손진운
    • 1999.04.24 02:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.24 04:32
      AsyncProfessional이라는 컴포넌트가 지원합니다. 유료구요... 구입문의는 나이렉스로 문의 바랍니다. 5...
    • 송동일
    • 1999.04.24 01:05
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.24 04:35
      송동일 wrote: > 델파이로 사다리 프로그램을 짜볼려고 하는데... > 통 감이 안 잡히네요... > 학교 다...
    • chaser
    • 1999.04.23 23:44
    • 0 COMMENTS
    • /
    • 0 LIKES