В чем разница между двумя строками кода. Оба пытаются получить путь, а один работает, а другой бросает ошибку. я работаю над Delphi-7TypeCasting: какая разница между двумя строками кода?
Path:= (((FFormOwner as TForm).Designer) as IDesigner).GetPrivateDirectory; --Working
Path:= IDesigner(TForm(FFormOwner).Designer).GetPrivateDirectory ; --Error
Ниже приведен код, который использует строку кода для получения пути.
constructor TsampleComponent.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FFormOwner:=TForm(Owner);
if not (Owner is TForm) then
repeat
FFormOwner:=TForm(FFormOwner.Owner);
until (FFormOwner is TForm) or (FFormOwner.Owner=nil);
if (csDesigning in ComponentState) then
Path:= (((FFormOwner as TForm).Designer) as IDesigner).GetPrivateDirectory
else
Path:=ExtractFilePath(Application.EXEName);
.
.
end;
Возможный дубликат [В чем разница между использованием каста с использованием (Object as TClass) и TClass (Object)] (http://stackoverflow.com/questions/2449790/whats-the-difference-between-casting-using-object -as-tclass-and-tclassobject) – fantaghirocco
@fantaghirocco Это не обман, потому что это интерфейсы –