Hi,
ich habe ein Interface:
Delphi-Quellcode:
type
IChangeable = interface(IInterface)['{BAC01552-BB67-488E-B33C-16CFF2BA2F5B}']
function isChanged: Boolean;
procedure Change;
end;
Und Klassen die z. B. so aussehen:
TEditorFrame = class(TSynEdit, IFileFrame, IChangeable)
Sie sind alle mittelbare Nachfahren von TControl. Nun habe ich eine Variable:
FFrame: TControl;
Da sind irgendwelche TControl-Nachfahren drauf. Ob sie dieses Interface implementieren weiß ich nicht.
Nun habe ich es so versucht zu prüfen:
Delphi-Quellcode:
if (FFrame is IChangeable) then
if IChangeable(FFrame).isChanged then
...
Der Compiler bringt mir aber folgende Felhermeldungen:
Zitat:
umainide.pp(345,14) Error: Class or Object types "TControl" and "IChangeable" are not related
umainide.pp(345,14) Error: Incompatible type for arg no. 1: Got "IChangeable", expected "TClass"
Hint: Found declaration: $fpc_do_is(TClass, TObject):Boolean
umainide.pp(346,8) Error: Class or Object types "TControl" and "IChangeable" are not related
umainide.pp(387) Fatal: There were 3 errors compiling module, stopping
Ich habe per Google zwar was von einem
interfache "is" patch gefunden. Aber das war 2005. Inzwischen müsste der Patch doch drin sein?
Oder hab ich nen Denkfehler in meiner Prüfung drin?
Gruß
Felix