스트링 그리드를 입력받아 가공하여 리턴하는 함수를 만들고 있습니다.
아래와 같이 코딩하니 잘되던데 이런 종류의 함수들이 점점 늘어나니 컴파일에서는 정상이지만 실행중 비정상적인 오류가 발생됩니다.
function MyFunction(SG : TStringGrid) : TStringGrid;
begin
Result := TStringGrid.Create(Result);
.
.
.
.
.
end;
검색하다보니
Result := TStringGrid.Create(Result);
Result := TStringGrid.Create(Nil);
Result := TStringGrid.Create(Self);
의 경우로 사용되길래 Nil로 선언하니 더이상 실행중 오류가 발생되지 않네요.
문제는 해결했지만 찜찜해서 질문합니다.
이 세가지의 차이가 무엇인지 궁금하네요. ^^
두번째 줄은 StringGrid의 Owner를 nil로 설정 (즉, Owner가 없음)
세번째 줄은 일반함수에선 별 의미 없음, Self는 객체의 메소드내에서 자기자신을 가리킬때 쓰임.