Zitat von
Hansa:
Code:
procedure Test (VAR i : integer);
begin
i := 5;
end;
Wieso ist da kein Rückgabewert ???
Also gut
"Rückgabewert" bedeutet, dass die Rückgabe der Funktion nach Ablauf des Programmblocks (=Funktion) in das Register EAX geschrieben wird. Bei einer Funktion ist da was drin, bei einer Prozedurr wird da
nichts reingeschrieben.
Ein Var-Parameter ist
kein Rückgabewert. Anstatt
procedure Test (VAR i: Integer);
könntest du auch schreiben:
procedure Test (pi: PInteger);
VAR bedeutet, dass nicht der Speicherblock, den die Variable belegt, an die Funktion übergeben wird, sondern nur die Startadresse dieses Blocks. Die Funktion kann anhand dieser Adresse in den Speicherblock der Variablen schreiben, und somit kann sich der Wert derr Variablen ändern.