Q&A

  • [초보]스트링그리드 생성 질문입니다.
스트링 그리드를 입력받아 가공하여 리턴하는 함수를 만들고 있습니다.
아래와 같이 코딩하니 잘되던데 이런 종류의 함수들이 점점 늘어나니 컴파일에서는 정상이지만 실행중 비정상적인 오류가 발생됩니다.

function MyFunction(SG : TStringGrid) : TStringGrid;
begin
  Result := TStringGrid.Create(Result);
  .
  .
  .
  .
  .
end;

검색하다보니
Result := TStringGrid.Create(Result);
Result := TStringGrid.Create(Nil);
Result := TStringGrid.Create(Self);

의 경우로 사용되길래 Nil로 선언하니 더이상 실행중 오류가 발생되지 않네요.
문제는 해결했지만 찜찜해서 질문합니다.
이 세가지의 차이가 무엇인지 궁금하네요. ^^
2  COMMENTS
  • Profile
    최용일 2010.05.25 03:57
    첫번째 줄의 Result는 undefined이구요. (무슨값이 들어가 있을지 아무도 모릅니다.) Owner를 참조할때 Access Violation에러가 발생할 가능성이 큼.
    두번째 줄은 StringGrid의 Owner를 nil로 설정 (즉, Owner가 없음)
    세번째 줄은 일반함수에선 별 의미 없음, Self는 객체의 메소드내에서 자기자신을 가리킬때 쓰임.
  • Profile
    김우현 2010.05.25 16:59
    답변 감사드립니다. ^^