The IfNull function checks the variant aValue1, and if it is null (it has a vartype equal to 1), then it will return the replacement value of aValue2.

If aValue1 is not null, then it will return its own value aValue1.

A variable can be forced to null.

Please also review IfEmpty and also the String Function IfBlank.

Declaration: Function IfNull( const aValue1, aValue2 : Variant) : Variant;

Several examples are illustrated in the following.

procedure ScriptEvent (var Value : variant);
var
aVarVar, bVarVar, cVarVar : variant;
begin
aVarVar := null; //aVarVar is set to NULL
LogInfo('aVarVar = '+IntToStr(VarType(aVarVar))); //NULL variant variable returns a VarType of 1
bVarVar := 'Test'; //bVarVar is set to 'Test'
 
LogInfo('');
LogInfo('1st pass . . .');
cVarVar := IfNull(aVarVar, 'Param1 is null');
LogInfo('bVarVar = '+bVarVar); //bVarVar is 'Test'
LogInfo('cVarVar = '+cVarVar); //cVarVar is 'Param1 is null'
 
LogInfo('');
LogInfo('2nd pass . . . ');
cVarVar := IfNull(aVarVar, bVarVar + ' result!'); //aVarVar is NULL
LogInfo('bVarVar = '+bVarVar); //bVarVar is 'Test'
LogInfo('cVarVar = '+cVarVar); //cVarVar is 'Test result!' (ie. bVarVar+' result!')
 
LogInfo('');
LogInfo('3rd pass . . . ');
cVarVar := IfNull(aVarVar, 'Result!'); //aVarVar is NULL
LogInfo('bVarVar = '+bVarVar); //bVarVar is 'Test'
LogInfo('cVarVar = '+cVarVar); //cVarVar is 'Result!'
 
LogInfo('');
LogInfo('4th pass . . . ');
cVarVar := IfNull(null, 'Param1 is the CONST null!'); //Param1 is 'null'
LogInfo('bVarVar = '+bVarVar); //bVarVar is 'Test'
LogInfo('cVarVar = '+cVarVar); //cVarVar is 'Param1 is the CONST null!'
 
LogInfo('');
LogInfo('5th pass . . . ');
cVarVar := IfNull('We are Param1', 'We are Param2!'); //Param1 is 'We are Param1'
LogInfo('bVarVar = '+bVarVar); //bVarVar is 'Test'
LogInfo('cVarVar = '+cVarVar); //cVarVar is 'We are Param1'
 
end;