Pascal代码报Identifier expected错误 移除else分支后正常问题求解
问题原因
你遇到的是Pascal类语言(包括Inno Setup使用的Pascal Script)的通用语法限制:if 分支闭合的 end 和紧随其后的 else 之间不允许写分号。
你原始代码中if分支的end后多写了分号,编译器会判定整个if语句已经结束,后续的else就成了没有匹配前置if的非法标识符,因此抛出Identifier expected错误。
正确写法
不需要删除整个else分支,仅去掉if分支末尾end后的分号即可:
function InitializeSetup: Boolean; begin if (not IsUpgrade()) then begin MsgBox(ExpandConstant('{cm:BaseAppMissing}'), mbError, MB_OK); Result := False; end // 此处移除分号即可 else begin Result := True; end; end;
补充说明
你删除else分支后代码可以正常运行,是因为单分支if语句的闭合end后添加分号是符合语法规则的,不会触发编译错误。
内容的提问来源于stack exchange,提问作者kzaiwo
相关产品推荐
相关产品推荐

