Was verstehst du unter
Wertparameter?
Es gibt
call-by-reference und
call-by-value. Ersteres bedeute, dass nur eine Referenz auf die Speicheradresse übergeben wird. Das heißt, wird dieser Parameter in der Routine geändert, wird er er direkt an der Speicheradresse geändert und bleibt logischerweise nach verlassen der Routine geändert. zweiteres bedeute, dass eine Kopie der Variablen als Parameter übergeben wird. Eine Änderung hat also keinen Einfluss auf den ursprünglichen Wert.
Beispiel:
Delphi-Quellcode:
////////////////////////////////////////////////////////////////////////////////
//
// foo1
// call-by-reference
//
procedure foo1(var i: Integer);
begin
i := 5;
end;
////////////////////////////////////////////////////////////////////////////////
//
// foo2
// call-by-value
//
procedure foo2(i: Integer);
begin
i := 5;
ShowMessage(IntToStr(i));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
d: Integer;
begin
d := 1;
foo1(d);
ShowMessage(IntToStr(d));
end;
procedure TForm1.Button2Click(Sender: TObject);
var
d: Integer;
begin
d := 1;
foo2(d);
ShowMessage(IntToStr(d));
end;