Q&A

  • Self는 무었입니까??
Self는 무었입니까?

Ctrl+Space 해보면
var Self: TForm1

이렇게 나옵니다.
그렇다면 Self는 FormClass입니까?

저는 폼이 Close될때 Self := nil;
이런 문장을 사용합니다.
그런데 에러는 나지 않습니다.
TForm1 := nil; 이런 문장은 에러가 발행합니다.

그러면 Self는 객체 입니까?

저는 아무리 생각해도 이해가 잘 되지 않습니다.
Self는 무엇입니까?
4  COMMENTS
  • Profile
    이준해 2002.04.12 00:18

    self = 자기 자신

    폼 안에서 작업할 때 Self 는 TForm1 이라는 class 의 인스턴스 를 말합니다.
    (실제 메모리에 로드된 폼 : 통상 눈에 보이고 키입력 받고..
    마우스 입력 받는... 폼)

    그 인스턴스가 TForm1 은 아닙니다.
    TForm1 은 그 인스턴스를 찍어내는 형틀이죠..

    그럼 폼위에 올라간 버튼 ??
    Button1: TButton 이라고 가정해 보죠..

    TForm1 이라는 폼은 동시에 여러개가 만들어 질 수 있겠죠 ?
    예를 들어 MDI 폼에서는 동일한 폼이 여러개 생기는게 일반적이죠

    그럼 그 각 폼을 f1, f2, f3... 라고 해 보죠..
    그 각 폼은 안에 Button1 을 가지고 있을 겁니다.

    f1 에 있는 Button1 을 참조하려면.. 어케 해야 하나여 ??
    1. f1 입장에서는 내 안에 있는 버튼이니깐 이렇게 부릅니다.
       self.button1.....
    2. f2 입장에서는 자기 안에 있는 버튼은..
       역시 self.button1....

    그럼 모야 다 self 네...

    그럼 f1 에서 f2 에 있는 Button1 을 부르려면 ??

    1. f1 에서 f2 의 Button1 을 부르려면 ?
       f2.Button1... 이렇게 부른답니다.

       사람으로 생각해 보세여..
       (내 코에 뭐 묻었냐 ?  내가 내 신체를 지칭할 때.. 내 코, 내 손..)
       (영희 코에 코딱지 있다.. 다른 사람의 신체를 지칭할땐..
         영희 코, 준해 코.. 라고 하져  
         즉 앞에 이름이 붙는 거죠.)

       역시 객체도 다 이름이 있을 수도 있고..
       없다면 아무개... 모 이런식일 수 있고.. 어쨌건 하나를
       찍어낼 수 있는데..
       그때 그 찍은 넘을 부르는 변수 중에
       self 도 한가지입니다.

    2. 거꾸로 f2 에서 f3 에 있는 Button1 을 부르려면.. ??
       f3.button1.click.. 이렇게 되겠죠 ??
       (객체 지칭자).(객체 멤버)... 이런 식이죠..

    결론.. self 는 객체가 자기 자신을 참조할 때 사용하는 말이다.

    도움이 되길 바랍니다.

    이준해










  • Profile
    김경록 2002.04.11 19:56
    객체는 Active되어 있는 폼 자기자신을 뜻하는 것이
    아닐까여?
    C++에서 보면, *this라는 것이 있는데
    이것은 지금 참조되는 자신의 클래스를 뜻하는 것입니다..
    델파이에서 이것과 대비되는 것이 아닐까 생각합니다..
    폼도 클래스이니 말입니다..
    Application은 실행객체이므로,
    현재 실행되고 있는 모든 객체들에 대한 부모정도로 생각하면
    될 것 같구..
    뭐 이정도입니다..



  • Profile
    홍성락 2002.04.10 06:42

    hsr//////////////////////////////////////////////////////////
    정확히 설명하기엔...사용방법 위주로, 생각나는데로 적어봅니다.
    self는 객체클래스의 값(value)입니다,  
    폼이나 객체들의 Class가 아니라 Class형 변수정도로생각하시면됩니다.
    사용시 Sender는 호출하는자구요  self는 호출되는 자신정도로...
    설명이 좀 안되네요.

    위에서 var Self: TForm1의 의미는
    Self == Form1 즉 Self <> TForm1
    Self := nil; 는 Form1 := nil; 입니다
    그러나 Self는 사용하기에 따라 폼크래스핸들(변수)도 되지만
    각 객체글래스TObject의 핸들(변수)도 될수있으면 인자외에
    사용하시는것을 지양해야합니다.

    설명이 잘 안되네요...저도 개념이 정확하지 않아서요,
  • Profile
    돌멩이 2002.04.10 06:40


    제생각에는 객체 일것 같네요....머리 아프다..
    • 양윤선
    • 2002.04.10 12:18
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김동일
      2002.04.10 13:50
      저두 초보지만 어떤 에러가 나는지 알아야 답변이 있을것 같네여.. 선언만 하구 그만 두신게 아닌지 에러...
    • 양윤선
      2002.04.10 15:34
      ------------------------------------------------ unit U_procedure; interface uses  &nbs...
    • 최용일
      2002.04.10 18:14
      안녕하세요. 최용일입니다. 프로그래밍하기 전에 책한권 정독하시는 것이 좋은 방법일거 같네요... S...
    • 이경문
      2002.04.12 10:46
      음... FFT를 이용해서 묵음처리를 한다는 것이 frequency transform을 한 다음 저주파수 영역의 계수 크기...
    • 김동일
      2002.04.12 13:06
      -_ㅜ 그렇군요... 이곳 게시판에서 최용일님께서 DirectSound를 좋다구 하셔서 해보려구 했는데... 윈...
    • 최용일
      2002.04.10 18:40
      안녕하세요. 최용일입니다. ShellExecuteEx란 함수를 이용하세요... uses절에 ShellAPI유닛 추가하시...
    • 초보
      2002.04.10 20:28
      먼저 답변 감사합니다. 제가 질문을 똑바로 못한것 같네요. 등록정보 실행 시키는건 찾았는데.. ...
    • 최용일
      2002.04.10 23:01
      그거는 AVI파일에 들어있습니다. AVI파일포멧을 분석하시면 됩니다... 아래 사이트에서 검색해 보시면 A...
    • 초보
      2002.04.29 20:10
    • 돌멩이
    • 2002.04.10 06:03
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 이준해
      2002.04.12 00:18
      self = 자기 자신 폼 안에서 작업할 때 Self 는 TForm1 이라는 class 의 인스턴스 를 말합니다. (실...
    • 김경록
      2002.04.11 19:56
      객체는 Active되어 있는 폼 자기자신을 뜻하는 것이 아닐까여? C++에서 보면, *this라는 것이 있는데 이...
    • 홍성락
      2002.04.10 06:42
      hsr////////////////////////////////////////////////////////// 정확히 설명하기엔...사용방법 위주로...
    • 돌멩이
      2002.04.10 06:40
      제생각에는 객체 일것 같네요....머리 아프다..
    • 백진욱
    • 2002.04.10 05:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.04.10 06:04
      hsr////////////////////////////////////////////////////////// StringReplace('1,000', ',', '', [rf...
    • 김진선
    • 2002.04.10 03:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 머슴
      2002.04.10 03:58
      델파이6에서 XML 컴퍼넌트를 제공하고요... XML파서는 이미 익스플로어안에 포함되어 있고.. 이것 ...
    • 예성주
    • 2002.04.10 03:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이용관
      2002.04.10 05:53
      그건 논리에 맞지도 않는거거든요오.. 옛날부터 Socket 에서 TCP 든지 UDP 든지 간에, Server 와 Client...
    • 유인희
    • 2002.04.10 03:38
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 염상철
      2002.04.10 04:10
      쿼리문을 올려보세여..수정 쿼리와..삭제 쿼리..
    • 유인희
      2002.04.11 21:53
      음..삭제와 수정할때...ADOQuery를 사용하거든요~ 처음 삭제와수정은 되는데..연속으로 다시 수정 또는 삭...
    • 송혜란
    • 2002.04.10 03:35
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 우소
      2002.04.10 03:28
      여기 좌측에 보시면 유용한 도구에 보면 아스키 코드가 있어요.. 이걸 참조 하면 될듯 싶네요..
    • 김충식
      2002.04.10 20:16
      아앗~~~ 감사합니다... 이게 아스키 코드였군요.. 하하 바보같이.. 저는 따로 정의를 해놓은게 있는...
    • 염상철
      2002.04.10 03:16
      쿼리문을 어떻게 쓰셨습니까? 이경우는 ...쿼리를...2개 쓰시면 되겠습니다. 우선..db1,db2합친거..쿼리...
    • 차형석
      2002.04.10 19:18
      지송한데.... 어떤 프로시저에 코딩을 해야합니까? --;;; 솔직히 잘 모르겠어요.... 우선 ... 답변에 감...
    • 염상철
      2002.04.10 23:24
      저장을 하겟다는건..어떤 이벤트를 발생했을때..저장하는거겠쥐여..? 저장버튼을 눌렀을때...저장을 하려...
    • 차형석
      2002.04.11 19:42
      감사합니다... 이렇게 배려해 주셔서... 정말 감사드려요....
    • 박선지
    • 2002.04.10 01:50
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 동키호테
      2002.04.10 02:58
      질문을 보니깐 CD를 넣었을 경우 자동으로 실행하게 해달라 그말이죠? 음.. 'Autorun.inf'라는 파일을 ...
    • 이원근
    • 2002.04.10 00:01
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 조성배
    • 2002.04.09 23:37
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 공선옥
    • 2002.04.09 23:26
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정훈
      2002.04.09 23:59
      정확히 어떤 상황인지를 몰라서 답변이 될런지 모르겠네요.... 간단히 생각하면, 다음으로 넘어가는 순...
    • 염상철
      2002.04.09 23:52
                with qry_select do begin   &n...
    • 김경록
      2002.04.11 20:16
      음... 잘은 모르겠구여.. Dataset(Table, Query)의 BeforeEdit, AfterPost에서 어떤 액션을 취하느게 ...
    • 이미라
    • 2002.04.09 22:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.04.09 23:26
      hsr///////////////////////////////////////////////////////// 혹 Database의 Connected을 끊었다가(Fal...
    • 김도형
    • 2002.04.09 22:35
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 루단스
      2002.04.09 23:04
      먼저 구조체 정의 type     DataStr = record      ...
    • 김도형
      2002.04.09 23:39
      지금한거는 구냥 8자리를 4자리씩 끊었더라구여~ 그런데 만약 내가 쓰고자 하는것이.. 첫번째 넘은 2...
    • 최석기
      2002.04.10 00:03
      윗분이 답변하신걸 이해하시지 못하셨나보네요.. 레코드 구조를 님이 원하시는 구조로 잡아야 해요.. ...
    • 김도형
      2002.04.10 00:08
      앗... 잘되네여.... 앞에 구조체 선언해 준거를 자릿수라고 생각을  못한것 같네여~~~ ^^...