2009-09-18 2 views
1

클래스 선언에서 Ctrl + Space를 눌러 오버라이드 할 수있는 기본 클래스의 가상 메소드 목록을 가져올 수 있습니다.델파이 : 기본 메소드를 오버라이드하는 코드

이 목록은 매우 제한적인 것으로 보입니다. 전의.

TMyBaseClass = class(TInterfacedObject) 
protected 
    procedure mymethod; virtual; 
end; 

TMyClass = class(TMyBaseClass) 
protected 
    {Ctrl+Space here...} 
end; 

TMyClass에서 TinterfacedObject 및 TObject에서 메소드를 가져 오지만 TMyBaseClass에서는 가져 오지 않습니다. 왜 그런가요?

-Vegar

편집 : 내 델파이 버전 ... 가끔 이러한 IDE 툴이 작동 2007

+0

어떤 델파이 버전을 사용하고 있습니까? –

+0

죄송합니다. 델파이 2007을 사용하고 있습니다. – Vegar

답변

6

때문에 사용하고 때로는 그들이이 AFAIK 문제가되지 않습니다하지 (과를 잊어 버렸 그 Delphi/RAD Studio에서만 사용 가능).

예를 들어, IDE에서 현재 삽입 지점까지 소스를 적절하게 구문 분석 할 수 없다는 의미의 다른 편집이있는 경우 그러한 것들이 "손상 될"수 있습니다.

필자는 개인적으로 빠른 Ctrl + F9를 사용하여 컴파일 오류가 있는지 잘 모를 수도 있습니다. 10 번 중에 9 번은 코드 통찰력을 수정합니다.

새로운 단위로 예제를 그대로 재현하면 예상 한대로 코드 완성 목록에 "mymethod"가 생기므로 실제로 기본 클래스와 파생 클래스가 실제로 다른 코드로 구분 될 수 있습니다. 어쩌면 별도의 단위로, 그리고 다른 코드에는 코드 완성을 호출하려고하는 시점의 두 선언 사이에 "사이에"오류가 포함되어 있습니까?

더 일반적인 점으로는, "일할 때 잘 지내고"그런 일에 의지하지 않고 습관과 습관을 개발하려고 노력하는 것이 좋습니다. 이 경우 유일한 대체 방법은 재정의 할 방법에 대한 지식이며 이는별로 도움이되지 않습니다.

+0

현재의 사례는 내 작은 코드 단편보다 조금 복잡합니다. 하지만 모든 것이 컴파일되고 예외적으로 작동하지 않는다는 것이 내 경험입니다. 좀처럼 작동하지 않는 것이 아무것도없는 것보다 낫다면, 나는 모른다. – Vegar

+2

성공적인 컴파일 후에 * 작업을 수행 할 수 있습니까? 때때로 IDE는 "따라 잡기"위해 약간의 "뉘앙스"또는 격려가 필요합니다. – Deltics

+0

그래서 여기에 물어볼 정도로 나에게 좌절감을 안겨 주었다면 컴파일이나 빌드하는 데 도움이되지 않습니다. – Vegar

관련 문제