【发布时间】:2016-06-15 07:03:14
【问题描述】:
我想替换看起来像的代码
resourcestring
RESSTR_ERR1_TRYAGAIN = 'Error 1. Please try again.';
RESSTR_ERR2_TRYAGAIN = 'Error 2. Please try again.';
RESSTR_ERR3_TRYAGAIN = 'Error 3. Please try again.';
类似这样的:
resourcestring
RESSTR_ERR1 = 'Error 1.';
RESSTR_ERR2 = 'Error 2.';
RESSTR_ERR3 = 'Error 3.';
RESSTR_TRYAGAIN = 'Please try again.';
RESSTR_ERR1_TRYAGAIN = RESSTR_ERR1 + ' ' + RESSTR_TRYAGAIN; //error
RESSTR_ERR2_TRYAGAIN = RESSTR_ERR2 + ' ' + RESSTR_TRYAGAIN;
RESSTR_ERR3_TRYAGAIN = RESSTR_ERR3 + ' ' + RESSTR_TRYAGAIN;
但这会导致错误E2026 Constant expression expected.,这是我所理解的。
不过,我想知道是否有解决方案,允许我以上述方式定义RESSTR_ERRx_TRYAGAIN。 (目标是在不触及所有使用 RESSTR_ERRx_TRYAGAIN 的地方的情况下消除额外的翻译)。
到目前为止,我唯一的想法是以下,但我不想使用它,因为这很丑:
var
RESSTR_ERR1_TRYAGAIN: string;
//...
initialization
RESSTR_ERR1_TRYAGAIN := RESSTR_ERR1 + ' ' + RESSTR_TRYAGAIN;
//...
【问题讨论】:
-
真正的字符串比较复杂,这个例子只是为了说明。
-
我会声明函数来返回字符串
-
您可以在运行时格式化字符串:
Format('%S %S',[RESSTR_ERR1,RESSTR_TRYAGAIN])。 -
@LURD 已确认。但是我想避免修改所有已经使用资源字符串的地方。
-
然后按照大卫的建议去做。将
RESSTR_ERRx_TRYAGAIN设为函数。
标签: delphi delphi-xe4