OK ich habs!
Kann man das irgendwie ohne
RTTI hinbekommen?
Delphi-Quellcode:
Class Function TWSClient.GetClient<T>(Addr: string):T;
var RIO: THTTPRIO;
aGuid:TGuid;
begin
Result := nil;
RIO := GetLocalRio;
try
//Result := (RIO as T);//[dcc32 Fehler] E2015 Operator ist auf diesen Operandentyp nicht anwendbar
//Result := T(RIO);//Das geht Aber es produziert zugriffsverletzungen... dank Refcount;
aGuid := TRttiInterfaceType(TRttiContext.Create.GetType(TypeInfo(T))).GUID ;
if not Supports(RIO,aGuid,Result) then
Result := nil;
RIO.URL := Addr
finally
if (Result = nil) then
RIO.Free;
end;
End;