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

szy 2005-12-17 10:59:55
正在将以前自己写的for 2005和7版本的IDE专家移植到Delphi 2006,发现OTA的问题很多啊,
看来得等update2来修正了
...全文
206 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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的规范‘确定下来’。这样做可以更好的适应新的集成开发环境的变化需要。”
回复
相关推荐
发帖
非技术区
创建于2007-08-02

800

社区成员

Delphi 非技术区
申请成为版主
帖子事件
创建了帖子
2005-12-17 10:59
社区公告
暂无公告