할당해() 함수는 '대입문'과 같은 역할을 합니다.
예를 들어, 리스트박스0에 있는 모든 글자를 메모0으로 옮기려면
(메모0.내용 := 리스트박스0.내용 같은 것을 하고 싶을 때)
메모0.내용.할당해( 리스트박스0.내용 );
이렇게 처리합니다.
특히, 할당해() 함수는 같은 종류끼리 (또는 호환되는 종류끼리) 아무거나 대입할 수 있습니다.
ㅎ메모나 ㅎ리스트박스 같은 객체는 실제 담긴 내용은 다르지만 모두 ㅎ문자열 ('내용' 속성)이기 때문에 서로 대입, 즉 '할당해()'가 가능합니다.- 'ㅎ메모.내용'과 'ㅎ리스트박스.내용', 'ㅎ콤보박스.내용' 그리고 그냥 'ㅎ문자열'은 모두 'ㅎ문자열'과 같은 종류지만 똑같진 않습니다. 객체에 따라 기능이 다릅니다. 예를 들어 'ㅎ메모'의 경우는 파일저장해() 할 때 rtf로 저장하는 능력이 있습니다.
그런데, 'ㅎ문자열'에서 할당해() 함수는 대략 다음과 같이 구현되어 있습니다.
받는쪽 <- 주는쪽
받는쪽.갱신시작;
받는쪽.지워;
받는쪽.문자내용추가( 주는쪽 );
받는쪽.갱신끝;
받는쪽의 내용을 먼저 지우고 주는쪽의 내용을 추가해줍니다.
그런데, 받는쪽과 주는쪽이 같은 경우라면 지워()를 쓴 시점에서 받는쪽 뿐 아니라 주는쪽도 내용이 전부 사라지게 됩니다. 따라서 아무 내용도 추가되지 않습니다.
메모0.내용.할당해( 메모0.내용 );
이렇게 하면,
메모0.내용.지워;
와 결과가 완전히 같습니다.
자주 있는 경우는 아니지만, 창조(라기보단 창조에서 쓰는 델파이 VCL 구현)에서는 이런 식으로 자기 대입을 그다지 깔끔하게 처리하지 않기 때문에 코드를 짤 때 주의해야 합니다. |
|