Inno Setup报错:需闭合方括号(']'),代码语法疑问求助
问题原因及解决方法
Inno Setup 使用的 Pascal Script 不支持 ['a'..'f'] 这种用 .. 表示字符范围的集合写法,这就是触发Closing square bracket (']') expected报错的核心原因——编译器无法识别该语法,将..判定为非法符号,进而认为你遗漏了闭合的]。
两种可行的修正方案:
1. 明确列出集合内所有字符
把范围展开为单个字符,修改后的代码如下:
if not ((ProductKeyPage.Values[1][i] in ['a','b','c','d','e','f']) or (ProductKeyPage.Values[1][i] in ['A','B','C','D','E','F']) or (ProductKeyPage.Values[1][i] in ['0','1','2','3','4','5','6','7','8','9'])) then
2. 使用CharInSet函数简化判断
Inno Setup 内置了CharInSet函数,支持直接用范围语法判断字符归属,代码会更简洁:
if not (CharInSet(ProductKeyPage.Values[1][i], ['a'..'f']) or CharInSet(ProductKeyPage.Values[1][i], ['A'..'F']) or CharInSet(ProductKeyPage.Values[1][i], ['0'..'9'])) then
也可以合并范围进一步精简代码:
if not CharInSet(ProductKeyPage.Values[1][i], ['0'..'9', 'a'..'f', 'A'..'F']) then
内容的提问来源于stack exchange,提问作者user3161924
相关产品推荐
相关产品推荐

