如何在Inno Setup预处理器中大写字符串?

时间:2018-01-03 00:57:16

标签: inno-setup

我找到了LowerCase preprocessor function,但我没有看到UpperCase预处理函数。有一个Pascal脚本UppercaseLowercase

好的,预处理器中没有大写字母。我们应该如何在预处理器中使用大写字母?

2 个答案:

答案 0 :(得分:2)

UpperCase支持功能最终是added in Inno Setup 6.0.4,其功能类似于LowerCase

该转换仅影响“ A”和“ Z”之间的7位ASCII字符。

如果您需要将基本拉丁字母以外的字符大写,则必须转到StringChange或以noted by Martin Prikryl进行外部呼叫。

答案 1 :(得分:1)

Inno Setup中的上壳确实没有预处理器功能。

您可以定义自己的。

如果ascii a-z足够你,那就可以了:

#define UpperCase(str S) \
    S = StringChange(S, 'a', 'A'), \
    S = StringChange(S, 'b', 'B'), \
    S = StringChange(S, 'c', 'C'), \
    S = StringChange(S, 'd', 'D'), \
    S = StringChange(S, 'e', 'E'), \
    S = StringChange(S, 'f', 'F'), \
    S = StringChange(S, 'g', 'G'), \
    S = StringChange(S, 'h', 'H'), \
    S = StringChange(S, 'i', 'I'), \
    S = StringChange(S, 'j', 'J'), \
    S = StringChange(S, 'k', 'K'), \
    S = StringChange(S, 'l', 'L'), \
    S = StringChange(S, 'm', 'M'), \
    S = StringChange(S, 'n', 'N'), \
    S = StringChange(S, 'o', 'O'), \
    S = StringChange(S, 'p', 'P'), \
    S = StringChange(S, 'q', 'Q'), \
    S = StringChange(S, 'r', 'R'), \
    S = StringChange(S, 's', 'S'), \
    S = StringChange(S, 't', 'T'), \
    S = StringChange(S, 'u', 'U'), \
    S = StringChange(S, 'v', 'V'), \
    S = StringChange(S, 'w', 'W'), \
    S = StringChange(S, 'x', 'X'), \
    S = StringChange(S, 'y', 'Y'), \
    S = StringChange(S, 'z', 'Z'), \
    S

您可以将此功能添加到Inno Setup安装文件夹中的ISPPBuiltins.iss

如果需要可识别区域设置的大写,则可以从预处理器调用PowerShell。