nil에 대한 질문이거든요.
nil의 의미가 객체의 포인터를 날려버리는 역활을 한다고 들었습니다.
아래의 소스를 보면 이전버튼의 클릭 이벤트 안에 포함된 소스인데요.
이전 버튼을 클릭 하면 디비그리드셀클릭 이벤트를 호출하는데 nil값을
넘겨 주거든요.
무슨 의미 인지 잘 모르겠어요
******** 소 스 **************
생략
with dminsa.qurJong do
begin
dbgJongCellClick(nil); <- 이넘이 의미를 모르겠어영 ㅠㅠ
end;
생략
*****************************
셀클릭 이벤트의 하는 역활이 뭐냐 하면은
디비그리드에 원하는 로우를 선택 하면
그 로우값을 읽어 들어서 옆에 있는 에디트창에다
뿌려 주는 역활을 하는겁니다.
예를 들어 edit1.text := FieldByName('aaa').AsAtring;
라는 식의 역활이죠 물론 쿼리를 던진 상태이고요.
파라메타에 nil을 던지는 이유가 뭐죠?
디비그리드의 셀의 값을 날려버리는건지,
아니면 셀이벤트 자체를 날려 버리는건지.
그리고 무얼 날려 버리는지 모르겠지만
날려서 얻는 효과가 뭔지 정말 모르겠어요.
(사실 의미 조차도 모르겠음다...^^;)
예전부터 궁금했는데...
다른곳에 신경 쓴다고 넘어 가버린 부분이거든요...
고수님들 갈켜 주세요...
아참 위의 소스는 물론 잘 돌아갑니다.
에러가 있는게 아니고요..
C에서 Null과 동일합니다..
이벤트 핸들러는 파라메터로 객체를 주고 받습니다..
대개 자동으로 생성해서 사용하시는 경우..
델파이가 해당 이벤트 핸들러를 실행시킨 객체를 전달합니다..
이렇게 되면 이벤트 핸들러에서 자신을 실행시킨 객체를 알고자할 때..
참조하면 되는 거지요..
그런데..
이벤트 핸들러를 프로그래머가 인위적을 실행시킬 때..
넘겨줄 객체가 마땅히 없으면..
Nil로 그냥 넘겨 버리는 거지요..
조심해야할 것은.. Nil은 아무것도 없는 것이기에..
Nil로 선언된 객체를 사용하면 Access Violation Error가 발생합니다..
잘 모르신다면 포인터를 조금 공부해두시는 편이 좋을 듯 합니다..
From 류..
왕초보 wrote:
> nil에 대한 질문이거든요.
> nil의 의미가 객체의 포인터를 날려버리는 역활을 한다고 들었습니다.
> 아래의 소스를 보면 이전버튼의 클릭 이벤트 안에 포함된 소스인데요.
> 이전 버튼을 클릭 하면 디비그리드셀클릭 이벤트를 호출하는데 nil값을
> 넘겨 주거든요.
> 무슨 의미 인지 잘 모르겠어요
>
> ******** 소 스 **************
> 생략
> with dminsa.qurJong do
> begin
> dbgJongCellClick(nil); <- 이넘이 의미를 모르겠어영 ㅠㅠ
> end;
> 생략
> *****************************
>
> 셀클릭 이벤트의 하는 역활이 뭐냐 하면은
> 디비그리드에 원하는 로우를 선택 하면
> 그 로우값을 읽어 들어서 옆에 있는 에디트창에다
> 뿌려 주는 역활을 하는겁니다.
> 예를 들어 edit1.text := FieldByName('aaa').AsAtring;
> 라는 식의 역활이죠 물론 쿼리를 던진 상태이고요.
>
> 파라메타에 nil을 던지는 이유가 뭐죠?
> 디비그리드의 셀의 값을 날려버리는건지,
> 아니면 셀이벤트 자체를 날려 버리는건지.
> 그리고 무얼 날려 버리는지 모르겠지만
> 날려서 얻는 효과가 뭔지 정말 모르겠어요.
> (사실 의미 조차도 모르겠음다...^^;)
>
> 예전부터 궁금했는데...
> 다른곳에 신경 쓴다고 넘어 가버린 부분이거든요...
> 고수님들 갈켜 주세요...
>
> 아참 위의 소스는 물론 잘 돌아갑니다.
> 에러가 있는게 아니고요..