【发布时间】:2017-11-09 19:22:31
【问题描述】:
我正在尝试使用 Delphi 插件突出显示 RAD Studio 中的 Delphi 代码。 我使用OpentoolsAPI 从编辑器中获取代码。
EditorServices := BorlandIDEServices as IOTAEditorServices;
Buffer := EditorServices.TopBuffer;
Editblock := EditorServices.TopView.GetBlock;
Buffer.EditPosition.Move(1,1);
Editblock.BeginBlock;
Editblock.Extend(10,5);
之后,打开的工具FAQ 告诉我使用自定义荧光笔。 我从这里复制了一个自定义荧光笔:http://www.delphi-central.com/syntax_highlighting.aspx
但是,文档仍然非常有限,我无法找到使用此自定义荧光笔的方法。 我目前正在尝试的是以下内容:
HighlightServices := BorlandIDEServices as IOTAHighlightServices;
SimpleHighLight := TSimpleHighlight.Create;
HighlightServices.AddHighlighter(SimpleHighLight);
Text := Editblock.Text; //string
StartClass := 1; //integer
SyntaxByte := SyntaxOff; //byte
SyntaxCode := @SyntaxByte; //POTASyntaxCode
SimpleHighLight.Tokenize(StartClass,Addr(Text),Text.Length, SyntaxCode);
但这会导致演示代码的这一行出现访问冲突错误:
FillChar(HighlightCodes^, LineBufLen, $E);
谁能给我一个正确实施的例子?或者帮我解决我做错了什么?
【问题讨论】:
-
好吧,看看代码,SysntaxByte(通过 SyntaxCode)必须至少和 Text 一样长,但事实并非如此。至于为什么会这样,我不知道。我猜这会将格式代码逐个字符地应用于原始文本。
-
你使用的是哪个 Delphi 版本?
-
10.2东京版
标签: delphi syntax-highlighting highlighting