Var Keyword
The var
keyword declares one or more variables. If
you use the var
keyword at the unit level, it
declares global variables whose lifetime is that of the entire unit.
If you use the var
keyword in a subroutine, you
are declaring local variables whose scope and lifetime are limited to
that
subroutine.
You can also supply an initial value for a global variable, but not for a local variable.
Without an initial value, a global variable is initialized to zero
(empty string, nil
pointer, etc.), and a local
variable is not initialized.
Local variables are not usually initialized, but Delphi ensures that
memory-managed variables, such as strings, dynamic arrays,
Variant
s, and interfaces are properly
managed.
The Result
variable is special. It is initialized
by the caller, not the subroutine, and the initial value is not
necessarily zero.
unit Debug; interface var FileName: string = 'c:debug.txt'; procedure Log(const Msg: string); implementation uses SysUtils; procedure Log(const Msg: string); var F: TextFile; TimeStamp: string; begin AssignFile(F, FileName); if FileExists(FileName) then Append(F) else Rewrite(F); try TimeStamp := DateTimeToStr(Now); WriteLn(F, '[', TimeStamp, '] ', Msg); finally CloseFile(F); end; end; end.