2009-03-09 10 views
0

SDL 1.3 API를 사용하여 하나 이상의 SDL 렌더링 표면을 델파이 창에 임베드 할 수있는 간단한 컴포넌트를 작성하려고합니다. 컴파일과 설치는 잘되지만, 폼 디자이너에서 컴포넌트를 사용하려고하면 오브젝트 인스펙터에서 속성에 액세스하거나, 폼을 저장하거나, 컴포넌트를 삭제하고, 컴포넌트를 삭제하려고 시도 할 때마다 AV를 발생시킵니다. 폼을 실행하려고하면 링커 오류가 발생합니다. 어떤 이유로 든 DFM을 제대로 읽을 수 없습니다.내 사용자 지정 구성 요소가 IDE에서 AV를 발생시키는 이유는 무엇입니까?

DLL은 http://www.libsdl.org/tmp/SDL-1.3-dll.zip에서 찾을 수 있으며 내 구성 요소의 소스 코드는 here에서 다운로드 할 수 있습니다. SDL.pas는 JEDI-SDL 헤더 파일입니다. 나머지는 내 자신의 코드입니다.

양식 디자이너에서 AV를 올리는 이유가 없습니다. 런타임에 컨트롤을 동적으로 만들면 안정성 문제가 없습니다. 누구든지 이걸보고 어쩌면 내가 그것을 정리하는 데 도움이 될 수있는 몇 가지 피드백을 제공 할 수 있습니까?

답변

14

직접 디버깅 할 수 있습니다. 구성 요소가 들어있는 패키지 프로젝트를 엽니 다. Run | Parameters로 가서 IDE 자체를 호스트 어플리케이션으로 입력하십시오. IDE 내에서 IDE를 실행하십시오. 그런 다음 AV를 재생성하기위한 단계를 반복하면 IDE가 중단되어 어디에서 실패했는지 표시해야합니다. 거기에서 일반적인 디버깅 기술을 사용할 수 있습니다.

+0

확인. 게시 된 섹션에서 Flags 속성을 제거하면 문제가 사라집니다. IDE는 기본 Set 정의에 대한 RTTI를 조회하려고 할 때 질식합니다. Delphi 2009에서 모든 업데이트를 설치했습니다. 이것은 2009 년에 나쁜 RTTI를 발견 한 두 번째 사례입니다. 나는 그것을 QC에 넣을 것이다. –

+0

집합은 어떻게 선언됩니까? 세트에 몇 개의 요소가 있습니까? 최대 32 개의 요소 만 포함 할 수있는 세트 만 게시 할 수 있습니다. –

+0

TSdlWindowFlags = (sdlwFullscreen, sdlwOpenGl, sdlwShown, sdlwBorderless, sdlwResizable, sdlwMinimized, sdlwMaximized, sdlwInputGrabbed, dslwInputFocus, sdlwMouseFocus, sdwlForeign, sdlwForce32 = 31)의 집합입니다. 열거 형의 12 개 요소가 만들어져 "int"를 기대하는 C 루틴에 전달할 수 있습니다. –

관련 문제