객체나 포인터에 메모리가 할당(nil인지 아닌지)되어 있는지 검사하는 겁니다.
할당되어 있다면 true이고, 그렇지 않다면 false를 반환하죠.
객체나 포인터를 사용하기 전에 이걸로 검사를 하면, nil 포인터 참조로
인한 에러를 줄일 수 있습니다.
그런데, 주의하실 점은 Assigned 가 만능이 아니란 점입니다.
뭐냐 하면, 포인터 변수에 들어가 있는 값이 nil인지만 검사하기 때문에,
해당 포인터가 가리키는 것이 올바른 데이터가 들어있는지는 보장하지 못한다는 것입니다.
이런 포인터를 액세스 하려하면, 잘못된 주소를 접근해서 프로그램에서 에러가 발생하죠.
객체나 포인터에 메모리가 할당(nil인지 아닌지)되어 있는지 검사하는 겁니다.
할당되어 있다면 true이고, 그렇지 않다면 false를 반환하죠.
객체나 포인터를 사용하기 전에 이걸로 검사를 하면, nil 포인터 참조로
인한 에러를 줄일 수 있습니다.
그런데, 주의하실 점은 Assigned 가 만능이 아니란 점입니다.
뭐냐 하면, 포인터 변수에 들어가 있는 값이 nil인지만 검사하기 때문에,
해당 포인터가 가리키는 것이 올바른 데이터가 들어있는지는 보장하지 못한다는 것입니다.
이런 포인터를 액세스 하려하면, 잘못된 주소를 접근해서 프로그램에서 에러가 발생하죠.
주로, 다음과 같은 상황에서 발생합니다.
obj:=TObject.Create;
obj.Free; // 객체를 반환했지만, obj의 참조값은 nil이 아닙니다.
if Assigned(obj) then // obj의 값이 nil 이 아니기 때문에... True가 반환되죠 -_-;;;
obj.... // 그래서 obj를 사용하면 잘못된 주소를 접근했다는 에러 발생. -_-;;
하여간, 포인터는 주의해서 해야죠. ^^;