Delphi:在字符串中执行条件语句

时间:2013-12-06 13:29:08

标签: string delphi conditional execute statements

如何在Delphi中执行String中的条件语句?

在PHP中有这样的东西:

<?php 
echo "Hello (isset($name) ? $name : 'Guest')); 
?>

3 个答案:

答案 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;