Delphi: What is the difference between passing a var by Value or Reference to procedure or function? What is the practical result? In programming, "call by value" and "call by reference" are different ways to pass parameters to functions. The main difference is whether the function receives a copy of the parameter's value or a reference to the parameter's location. Call by value =========== What's passed: A copy of the parameter's value; Effect on original data: Changes to the parameter don't affect the original data; When it's used: To protect the original data from being changed. Call by reference ============== What's passed: A reference to the parameter's location; Effect on original data: Changes to the parameter affect the original data; When it's used:To modify the original data or work with large data structures. We can says that call by value is generally more secure, while call by reference can lead to unintended side effects.