procedure DoSomething(var Parameter: WideString); begin // Do something here with Parameter. // Original passed variable will be changed, // because Parameter has been passed as a Var. end; function DoAnother(Parameter: WideString): WideString; begin // Do something here with Parameter, // and return Result as a string. Result := ''; end; var S: WideString; begin DoSomething(S); FileName := DoAnother(S); end.