发现Delphi 2006的Open Tools API的bug比较严重阿

szy 2005-12-17 10:59:55
正在将以前自己写的for 2005和7版本的IDE专家移植到Delphi 2006,发现OTA的问题很多啊,
看来得等update2来修正了
...全文
250 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
szy 2005-12-18
  • 打赏
  • 举报
回复
没有, 这个不是我自己添加的, 它的内容应该不会是
TForm3;
begin
|
end;

因为这样编译一定通不过的
  • 打赏
  • 举报
回复
那个"type TForm3"只是Code Completion的一个标题名而已,
它的实际内容可能很多。
你看看那个classc完成的代码段有多长。
你应该查看一下你的"type TForm3"的完成内容,这是你自己添加的吧。
szy 2005-12-17
  • 打赏
  • 举报
回复
我在选项卡中把代码模版等功能全部去掉, 也还是这样
szy 2005-12-17
  • 打赏
  • 举报
回复
to DelphiGuy()
这个是bug啊,不是代码模板,这个时候Code Completion窗口中只有一条
"type TForm3", 所以回车后,应该只是完成"TForm3"才对,没想到还给我
来个分号,再加回车,再加begin..end;
  • 打赏
  • 举报
回复
这不是bug呀,这应该是增强。
你可以自己修改代码完成的模板。
szy 2005-12-17
  • 打赏
  • 举报
回复
问题2:
我用 (OTAEditorServices.TopView as IOTAEditActions).CodeCompletion(csCodelist
or csManual);来调用 code completion窗口的时候,在失败的时候(由于当前代码环境无法调用出来),发现每次调用,IDE中编辑器的反应速度特别特别慢,简直到了无法输入的地步,
这在Delphi 7和Delphi2005中都没有达到那么慢的速度,不知能有什么方法提高速度?
我这么做的主要目的是想在我的专家中实现自动invoke IDE自身的Code Completion,
类似于CnPack中的代码输入助手的功能。我甚至试了把调用Code Completion的代码
放在IDE的OnIdle中做,但是还是同样的很慢很慢,不知为何原因。谢谢!
szy 2005-12-17
  • 打赏
  • 举报
回复
to Scarlette(Lord of Borland)
您好, 我现在遇到两个问题, 您能否帮我看看,
问题1. 我现在的Code Completion的快捷键已经绑定到alt+space, 用以下方法绑定:
BindingServices.AddKeyBinding([ShortCut(VK_SPACE, [ssAlt])],
CodeCompletion, Pointer(csCodeList or csManual));

现在我在IDE中新建一个application
代码如下:

unit Unit3;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm3 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form3: TForm3;

implementation

{$R *.dfm}

procedure TFor|

end.

这里'|'是我光标所在的位置,当我用alt+space 激活Code Completion窗口后,
回车一下,本来正常的话,应该是TForm3|,但是奇怪的是代码变成了如下:

unit Unit3;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm3 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3;
begin ~~~~~~~~

end;

end.

奇怪吧?我想也有可能是IDE的bug。
Scarlette 2005-12-17
  • 打赏
  • 举报
回复
不一定是Bug吧,Delphi的Open Tools API几乎每个版本都有一些变化,有些版本更是根本性的改变。Borland自己对于OTA是这样说的,“对于OTA我们不会给出官方Specification,而仅仅给出与某个版本相关的帮助,目的是为了保证我们对于OTA有进行变更的余地,而不会将OTA的规范‘确定下来’。这样做可以更好的适应新的集成开发环境的变化需要。”

829

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧