내가 분명히이 컴파일되지 않는, 게터가
type
TLight = class
private
Ftimer : TTimer;
property IsAutoRotating: Boolean read Ftimer.Enabled;
을 말해봐 개인 VAR의 속성 값을 반환해야하지만 왜, 바람직하게는 별도의 VAR에 그 상태를 유지하지 않고이 문제를 (해결하는 방법 .
내가 분명히이 컴파일되지 않는, 게터가
type
TLight = class
private
Ftimer : TTimer;
property IsAutoRotating: Boolean read Ftimer.Enabled;
을 말해봐 개인 VAR의 속성 값을 반환해야하지만 왜, 바람직하게는 별도의 VAR에 그 상태를 유지하지 않고이 문제를 (해결하는 방법 .
게터과 재산의 세터 클래스의 방법해야하거나 부모의 - 또는 -. 클래스의 필드 또는 부모의
을 FTimer.Enabled가 없습니다 둘 때문에 위의 구조는하지 않습니다 작동. 게터 기능을 만들 수 있습니다. 및 FTimer (게터)의이 속성을 반환하고 FTimer (세터)의 속성을 설정합니다 세터 절차 :
유형 :
property Enabled: Boolean read GetEnabled write SetEnabled;
지금 클래스 완료 CTRL-SHIFT-C를 누르십시오. 이제 두 가지 방법이 만들어집니다. 게터 유형에
:
Result := FTimer.Enabled;
세터 유형에서 :
FTimer.Enabled := Value;
잇 짜잔!
.
속성 읽기 및 쓰기 지정자가 클래스의 필드 또는 메서드를 참조해야하므로 코드가 컴파일되지 않습니다. Ftimer.Enabled
이 아닙니다.
type
TLight = class
private
Ftimer : TTimer;
function GetIsAutoRotating: Boolean;
public
property IsAutoRotating: Boolean read GetIsAutoRotating;
end;
function TLight.GetIsAutoRotating : Boolean;
begin
Result := Ftimer.Enabled;
end;
그리고'property IsAutoRotating'을 클래스 선언의'published' 섹션으로 옮기고 싶을 것입니다. –
FTimer가 할당되지 않은 경우 생성 된 AV로부터 보호하십시오. – skamradt
왜 PA 속성 게시를 권하고 싶습니까? 속성에 문자열 이름을 통해 액세스해야한다는 증거는 없습니다. –
당신이 또는 컴파일해야 것 어떻게 생각 만든 :
이
, 당신은 getter 함수를 만들어야합니다? 응답은 질문의 "이유"부분에 대해 어떤 종류의 대답을 기대하는지 판단하는 데 도움이됩니다. –IsAutoRotating
속성을 구현하기 위해Rob + ftimer가 NIL이면 어떻게 될까요? –