아래와 같이 advgrid에서의 충돌현상이 일어난다.
OleInitialize를 중복해서 호출하기 때문에 발생하는 문제가 아닌가 추측되며, 정확한 문제점이 무엇인지는 잘 모르겠다. -_-; 다만 advgrid.pas 파일에서 Initialization 구문을 주석처리하여 문제를 해결할 수 있었다.
advgrid.pas 파일을 수정하여 해결한다.
initialization
{$IFNDEF TMSDOTNET}
{$IFNDEF TMSDISABLEOLE}
// Initialize; <- 주석처리
Initialize; <- 주석처리 해제
{$ENDIF}
{$ENDIF}
{$IFNDEF TMSDOTNET}
{$IFNDEF TMSDISABLEOLE}
Initialize; <- 주석처리 해제
{$ENDIF}
{$ENDIF}
[AdvGrid.pas의 Initialize 함수 내용]
procedure Initialize;
var
Result : HResult;
begin
Result := OleInitialize(Nil);
Assert(Result in [S_OK, S_False], Format ('OleInitialize failed ($%x)', [Result]));
// Assert(Result in [S_OK, S_False], Format ('OleInitialize failed ($%x)', [Result])); <- 주석처리
end;
var
Result : HResult;
begin
Result := OleInitialize(Nil);
// Assert(Result in [S_OK, S_False], Format ('OleInitialize failed ($%x)', [Result])); <- 주석처리
end;
[2007년 12월 10일 추가 내용]
TMS Grid에서 굳이 Remobject등을 사용하지 않더라도, OleInitialize로 인해 에러가 발생한다는 등의 내용이 Google 검색 결과 나왔고, 해당 부분을 주석처리 하게 될 경우, TMS 단독으로 사용될 때에는 역시 문제가 발생할 소지가 있기 때문에, Initialize 부분을 주석처리 하던것을 주석처리 해제하고, Initialize 함수에서 Oleinitialize가 실패했을때 발생하는 Assert 구문을 주석처리한다.
TMS Grid에서 굳이 Remobject등을 사용하지 않더라도, OleInitialize로 인해 에러가 발생한다는 등의 내용이 Google 검색 결과 나왔고, 해당 부분을 주석처리 하게 될 경우, TMS 단독으로 사용될 때에는 역시 문제가 발생할 소지가 있기 때문에, Initialize 부분을 주석처리 하던것을 주석처리 해제하고, Initialize 함수에서 Oleinitialize가 실패했을때 발생하는 Assert 구문을 주석처리한다.