Wieso bindest du an dieser Stelle beide Interfaces ein? Würde es nicht reichen nur ISkinMagneticEx
einzubinden? Das Interface ist doch von ISkinMagnetic
abgeleitet und kennt somit alle Funktionen? Wo liegt hier der Vorteil bzw. wieso sollte man das so machen?
Beim Cast mit as funktionierte es ohne nicht:
Delphi-Quellcode:
type
IA =
interface
['
{8F0408FB-9757-45F0-9549-75A2751A7D0C}']
end;
IB =
interface(IA)
['
{22475A3F-306B-4F66-9449-A6C0A4873C9E}']
end;
TA =
class(TInterfacedObject,
IB)
end;
//...
var
TestA: IA;
TestB:
IB;
begin
TestB := TA.Create;
TestA := TestB
as IA;
// Interface nicht unterstützt
end;
Fügt man IA in der Klasse hinzu, geht es. (Klar könnte man in dem Beispiel direkt zuweisen ohne as.)