如何在Delphi中执行String中的条件语句?
在PHP中有这样的东西:
<?php
echo "Hello (isset($name) ? $name : 'Guest'));
?>
答案 0 :(得分:2)
我假设您实际上想要评估直到运行时才知道的代码。这就是你在字符串中使用代码的唯一原因。如果我的假设是正确的,那么你在Delphi中就不能这么做了。 Delphi是编译的。所以为了执行Delphi代码,你需要编译它。
您可以考虑为程序的这一部分使用脚本语言。有许多可用。
当然,如果你想要的只是Delphi中的一个条件运算符,那么就没有内置但是RTL提供了IfThen:
function IfThen(AValue: Boolean; const ATrue: string;
AFalse: string = ''): string;
<强>描述强>
有条件地返回两个指定值中的一个。
IfThen 检查作为AValue传递的表达式,如果计算结果为true则返回ATrue,如果计算结果为false则返回AFalse。在Delphi中,如果省略AFalse参数, IfThen 返回0或AValue评估为False时为空字符串。
答案 1 :(得分:2)
你能在Delphi中得到的最接近的是:
Writeln('Hello ' + IIf(Name='', 'Guest', Name));
其中IIf
定义为:
function iif(Test: boolean; TrueRes, FalseRes: string): string;
begin
if Test then
Result := TrueRes
else
Result := FalseRes;
end;
请注意,此示例仅适用于字符串...
修改强>
正如大卫建议你也可以使用IfThen
单位的StrUtils
功能
答案 2 :(得分:0)
对于类型独立的IIF,请使用以下命令:
function IIF(pResult: Boolean; pIfTrue: Variant; pIfFalse: Variant): Variant;
begin
if pResult then
Result := pIfTrue
else
Result := pIfFalse;
end;