我从http://embtvstools.svn.sourceforge.net/
下载了embtvstools
(Embarcadero TVirtualShellTools)
然而,当我创建一个新包时,删除.pas文件(以及从VirtualTreeView中删除compilers.inc
)并编译该批次,我收到错误E2026,为什么会这样,我该如何避免/解决这个问题?
resourcestring
sAssociationChanged = 'Association Changed';
sItemCreate = 'Item Create';
sItemDelete = 'Item Delete';
....
const
// Literal translations of TShellNotifyEvent type. Useful when using the
// OnShellNotify event to print out what event occurred. VirtualShellUtilities.pas
// has a helper function ShellNotifyEventToStr that uses these.
VET_NOTIFY_EVENTS: array[0..19] of WideString = (
sAssociationChanged,
sAttributes,
sItemCreate,
.....
[Pascal Error] IDEVirtualResources.pas(155):E2026预期的常量表达式
[Pascal Error] IDEVirtualResources.pas(156):E2026预期的常量表达式 [Pascal Error] IDEVirtualResources.pas(157):E2026期望的常量表达式
更新
将widestring
更改为string
会阻止编译器抱怨,(我怀疑它会在其他地方创建一些问题,因为widestring<> string)我想保留widestring
类型的常量
答案 0 :(得分:4)
正如Uwe在评论中指出的,在Unicode版本的Delphi中resourcestring
的类型为WideString
。但是你使用的是Unicode前Delphi,因此resourcestring
只是AnsiString
。这解释了编译错误。
如何继续取决于您尝试做什么。如果您打算将这些字符串翻译成不同的语言,那么您可能处于绑定状态。如果您打算这样做,那么使用Unicode版本的Delphi显然会好得多。
所以,既然你坚持使用Unicode之前的Delphi,我猜你实际上并不需要翻译字符串。在这种情况下,只需将const
数组的声明从WideString
更改为string
。碰巧的是,这个数组是由这段代码声明的,但从未引用过。