Well if you only need one result you can use a function, it's more clear, look at WinAPI for example, it's full of functions, even procedures have a result, it's always nil/null/void
But if you use the register calling convention and the first 3 params are integers, you can get some speed since they are stored in registers (see Delphi docs), however i think on most OSes you only have cdecl so you don't get any extra speed by using this method