(객체와 기록의 필요는 매우 복잡하지 않기 때문에).에서
SetValue(Button1, TValue.From(TButton.TButtonStyle(2)))
당신의 코드, AsOrdinal
의 사용이 잘못되었습니다. 그것은 TRttiOrdinalType
을 반환하는 함수입니다. 그러나 TRttiOrdinalType
는 described thus입니다 :
TRttiOrdinalType is the class used to describe all the Delphi ordinal value types, such as Integer, Byte, Word, and so on.
하지만 당신은 위의 코드를 달성하는 것 인하는 TButtonStyle
를 나타내는 TValue
를 제공해야합니다. AS를
옆으로, 나는 처음에이 같은 일반 TValue.From<T>()
기능을 사용하려 :
SetValue(Button1, TValue.From<TButton.TButtonStyle>(TButton.TButtonStyle(2)));
을하지만 그건 그냥 다음 내부 컴파일러 오류가 발생했습니다 :
[DCC Fatal Error] Unit58.pas(38): F2084 Internal Error: URW1147
QC#103129
제네릭을 사용할 때마다 나는 결국 이러한 내부적 오류로 인해 패배하게된다.
유형 추론을 사용하여 parameterised method을 호출하는 대체 양식을 지적한 Serg에게 감사드립니다. 내부 오류는 파울하지 않습니다.
감사합니다. 그게 전부입니다. – VibeeshanRC
제네릭을 오용 한 것 같습니다. 'SetValue (Button1, TValue.From (TButton.TButtonStyle (2)))); ' – kludg
@Serg 당신은 형식 유추를 사용하는 여러분이 제공 한 형식이 내부 오류를 발생시키지 않는다고 잘못되었습니다. 하지만 제네릭을 오용하지 않습니다. 내가 사용한 구문은 완벽하게 유효합니다. http://docwiki.embarcadero.com/RADStudio/en/Declaring_Generics#Parameterized_Methods –