Ome*_*men 5 delphi legacy-code delphi-3
我支持用Delphi 3编写的应用程序,我想在等待有机会将其升级到更新版本的Delphi时对源代码进行一些改进.我想要使用的一件事是Interfaces.我知道Delphi 3已经有了Interfaces的概念,但是我很难找到如何做等效的
if Supports(ObjectInstance, IMyInterface) then
Run Code Online (Sandbox Code Playgroud)
编写自己的"支持"功能实现.在Delphi 2009中,您可以使用
function MySupports(const Instance: TObject; const IID: TGUID): Boolean;
var
Temp: IInterface;
LUnknown: IUnknown;
begin
Result:= (Instance <> nil) and
((Instance.GetInterface(IUnknown, LUnknown)
and (LUnknown.QueryInterface(IID, Temp) = 0)) or
Instance.GetInterface(IID, Temp));
end;
Run Code Online (Sandbox Code Playgroud)
测试:
procedure TForm4.Button3Click(Sender: TObject);
var
Obj: TInterfacedObject;
begin
Obj:= TInterfacedObject.Create;
if MySupports(Obj, IUnknown) then
ShowMessage('!!');
end;
Run Code Online (Sandbox Code Playgroud)
希望它能在Delphi 3中运行
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |