Delphi: Executing Conditional Statements in a String

4.4k views Asked by At

How can I execute in Delphi a conditional statements in a String?

In PHP there is something like this:

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

There are 3 answers

4
David Heffernan On BEST ANSWER

I'm assuming you actually want to evaluate code that is not known until runtime. That's the only reason why you would have code in a string. If my assumption is correct, then you cannot do that readily in Delphi. Delphi is compiled. So in order to execute Delphi code you need to compile it.

You could consider using a scripting language for this part of your program. There are many available.

Of course, if all you want is a conditional operator in Delphi then there is none built in but the RTL provides IfThen:

function IfThen(AValue: Boolean; const ATrue: string; 
  AFalse: string = ''): string;

Description

Conditionally returns one of two specified values.

IfThen checks the expression passed as AValue and returns ATrue if it evaluates to true, or AFalse if it evaluates to false. In Delphi, if the AFalse parameter is omitted, IfThen returns 0 or an empty string when AValue evaluates to False.

1
whosrdaddy On

the closest thing you can get in Delphi is this :

Writeln('Hello ' + IIf(Name='', 'Guest', Name));

where IIf is defined as:

function iif(Test: boolean; TrueRes, FalseRes: string): string;
begin
 if Test then
  Result := TrueRes
 else
  Result := FalseRes;
end;

Please mind that this example only works with strings...

EDIT

As David suggested you can also use the IfThen function from the StrUtils unit

0
whisper1980 On

For a type independent IIF, use this:

function IIF(pResult: Boolean; pIfTrue: Variant; pIfFalse: Variant): Variant;
begin
  if pResult then
    Result := pIfTrue
  else
    Result := pIfFalse;
end;