Weil Buffer typenlos ist -> In Fact ist var Buffer
nichts anderes als const Buffer: Pointer
.
Angenommen, Buffer wäre kein Var-Parameter, woher soll Delphi dann wissen, wieviel Speicher es übergeben soll?
Dazu bräuchte man dann wieder ne Menge Compiler-Magic.
Wie du schon sagst, sind
var
und
const
technisch das gleiche. Der Unterschied ist: Du kannst einen var-Parameter an eine Subroutine mit const-Parameter übergeben, aber nicht einen const-Parameter an eine Subroutine mit var-Parameter.
Delphi-Quellcode:
procedure Bar(const Y: integer);
begin
...
end;
procedure Foo(var X: integer);
begin
Bar(X);
end;
Geht.
Delphi-Quellcode:
procedure Bar(var Y: integer);
begin
...
end;
procedure Foo(const X: integer);
begin
Bar(X);
end;
Geht NICHT.