我在delphixe6应用程序中使用存储库中的syneditr117。 我想强调一下Python代码。在
为此,我在表单上放置了一个SynEdit组件。 此外,我还添加了SynPythonSyn组件。 我已经通过Objectinspector把它们连接起来了。在
现在我可以突出显示一些Python关键字。 搜索了几个小时后,我打开了源文件synhighterpython.pas 包含在SynEdit包中的synzip。在
有一个部分包含python的所有关键字:
// List of keywords
KEYWORDCOUNT = 29;
KEYWORDS: array [1..KEYWORDCOUNT] of UnicodeString =
(
'and',
'assert',
'break',
'class',
'continue',
'def',
'del',
'elif',
'else',
'except',
'exec',
'finally',
'for',
'from',
'global',
'if',
'import',
'in',
'is',
'lambda',
'not',
'or',
'pass',
'print',
'raise',
'return',
'try',
'while',
'yield'
);
我的问题是,“exec”是最后一个突出显示的关键字。 列表中“exec”后面的所有其他内容将不会突出显示。在
有人知道什么会导致这次失败吗?在
谢谢你!在
我可以让语法高亮显示工作。似乎填充在synhighterpython.pas在一个列表中包含关键字和非关键字。然后它假设组合的列表被排序。在
所以问题出现在函数IdentKind中(可能:PWideChar)它使用FKeywords.查找(s,i)搜索匹配的关键字。“按定义“查找”只适用于已排序的列表。我的解决方法是修改这行代码,使用indexof函数进行搜索,如下所示。在
我:=FKeywords.IndexOf(s)
The search functions are documented on this link
相关问题 更多 >
编程相关推荐