当Delphi代码示例无法编译时,我该怎么办?

时间:2013-10-16 13:22:51

标签: api delphi changelog

以下是我从http://delphi.about.com/cs/adptips2004/a/bltip0104_4.htm

下载的代码示例
procedure WBLoadHTML(WebBrowser: TWebBrowser; HTMLCode: string) ;
var
   sl: TStringList;
   ms: TMemoryStream;
begin
   WebBrowser.Navigate('about:blank') ;
   while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
    Application.ProcessMessages;

   if Assigned(WebBrowser.Document) then
   begin
     sl := TStringList.Create;
     try
       ms := TMemoryStream.Create;
       try
         sl.Text := HTMLCode;
         sl.SaveToStream(ms) ;
         ms.Seek(0, 0) ;
         (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms)) ;
       finally
         ms.Free;
       end;
     finally
       sl.Free;
     end;
   end;
end;

我使用的是RAD Studio XE5,编译器抱怨WebBrowser实例的ReadyState和Document属性。

因此,在我所来自的Java世界中,当Java Gods弃用某些API功能时,他们会在API中引用我应该做的事情。

这似乎不会发生在Delphi世界中。刚刚从API中删除了TWebBrowser类的ReadyState和Document属性。

我相信这里有人可以将这段代码变成现实。但是,我需要找到更改Delphi API问题的一般解决方案。这不是我第一次遇到这个。

另一个例子是TButton曾经有一个名为Caption的属性,现在称为Text。那个我不得不猜测自己。

所以我想我正在寻找的是Delphi API更新日志,最好在线提供......

我在哪里可以找到这样的东西?

2 个答案:

答案 0 :(得分:4)

此代码示例是为VCL应用程序设计的。你已经把它放到FMX应用程序中了。通过切换到VCL应用程序解决问题。

那就是说,我无法推荐这段代码。它在Web浏览器控件上执行繁忙的等待!它包括对受到严重诽谤的呼吁,以及Application.ProcessMessages。繁忙的循环只是等到文档加载完毕。该组件提供了一个在发生这种情况时触发的事件,即DocumentComplete

答案 1 :(得分:2)

当代码示例无法编译时,我从编译器中读取消息并检查我是否在uses子句中包含了正确的单元。有时候我会参考文档,在极端情况下,我会对特定的库文件进行grep搜索,或者只是询问Delphi Gods,如果我当天感觉特别虐待狂。