2017-04-10 9 views
0

저는 여전히 Delphi XE4 (최신 델파이 컴파일러를 사용하는 최신 컴파일러)를 사용하고 있으며,이 버전의 TBasicAction에서 FClient를 완전히 숨겼다는 사실에 대한 구체적인 해결 방법이 필요합니다. XE4에 대한 해결 방법이므로 ~ 100 + actions 및 UI 요소로 깜박임을 방지하기 위해 클라이언트 런타임 연결/연결 끊기를 설정합니다.Delphi의 제네릭과 tlist에 대한 참조를 반환합니다 <class>

여기에 저의 간단한 시도와 필드 반환 만 있습니다.

TmscBasicActionCrack = class(TBasicAction) 
    end; 
{$IFDEF mymsDELPHIXE4} 
    TmscBasicActionHelper = class helper for TBasicAction 
    public 
    function Helper_Get_Private_FClients: TList<System.Classes.TBasicActionLink>; 
    end; 
{$ENDIF} 

{$IFDEF mymsDELPHIXE4} 
//------------------------------------------------------------------------------ 
function TmscBasicActionHelper.Helper_Get_Private_FClients: TList<System.Classes.TBasicActionLink>; 
begin 
    Result := Self.FClients; 
end; 
{$ENDIF} 

그러나, 나는 오류

E2003 선언되지 않은 식별자를 얻을 : TList를 <>

내가 처음에 안정성 문제가 들어 있기 때문에 내가 델파이와 제네릭을 사용하여 주위에 가지 않을 것을 인정해야

+ Lazarus/FreePascal과의 호환성 유지가 필요합니다.

는 델파이 다시 클래스 헬퍼를 변경 한 가장 최근의 버전을 알고,하지만 지금은 오류가 TList<T> 유형이 컴파일러 불명 한 것을 나타내는한다

+0

답변으로 작성하십시오 ... 그리고 받아 들일 것입니다. 감사합니다 :) – Tom

+0

베를린 이상으로 업그레이드 한 경우 클래스 도우미가 더 이상 작동하지 않을 경우 다시 작성해야합니다 ([Delphi 10.1 Berlin의 클래스 도우미에서 비공개 필드에 액세스하는 방법을 참조하십시오. ] (http://stackoverflow.com/questions/37351215/)). 문제에 대한 다른 해결책을 찾아야합니다. 왜'FClients'리스트에 직접 접근해야합니까? 그것은 사유로 인해 사적입니다. –

+0

나는 100 개 이상의 동작이 onidle에서 활성화/비활성화로 설정되어있는 다소 복잡한 명령을 사용합니다 ... 이제는 불행히도 규칙이 약간 복잡합니다 (동일한 프로젝트와 코드를 사용하여 컴파일/사용하는 6 가지 도구가 있기 때문에 규칙이 부분적으로 정의되어 있습니다) 일부 작업은 두 번 설정할 수 있습니다 (예, 모든 작업에 대해 부울 값을 만들고 작업 한 다음 작업을 설정할 수 있음) - 도구 모음에서 깜박임이 발생합니다. 내 솔루션은 오래 전에 액션 요소를 업데이트하면서 UI 요소에서 액션을 제거하는 것이 었습니다. – Tom

답변