Dein Unterprogramm ist noch nicht ganz richtig. Denn im Unterprogramm willst Du ja nicht mit den Variablen a und b arbeiten (die im Hauptprogramm deklariert wurden), sondern mit den Parametern m und n. Auch hast Du vergessen p einen Typen zuzuweisen. Es muss also heißen:
Delphi-Quellcode:
procedure unterprogramm(m,n:real;var p : real)
var o:real;
begin
o:=m+n;
p:=o*p;
end;
Zu Deiner letzten Frage muss ich dann doch nochmal was weiter ausholen und meine vorigen Erklärungen ergänzen. Also noch einmal zu "call by reference": Wenn Du schreibst, der Wert von p an c überwiesen wird, ist das nicht ganz korrekt. (Kannste ja auch nicht wissen.) Denn im Grunde genommen ist p nur ein Zweitname für c.
Eine Variable ist ja eigentlich nur ein Speicherbereich. Und mit "c" sagst Du dem Compiler nur, auf welchen Bereich im Speicher er zugreifen soll. Wenn Du nun eine Variable durch "call by reference" übergibst (z.B. als p), dann greifst Du mit "p" auf denselben Speicherbereich zu wie mit "c". Der Wert von p wird also nicht an c "überwiesen", sondern der Wert p
ist der Wert von c.
Ich hoffe, das alles nicht zu viel auf einmal!
MfG
Peter
Christian S.
Admin in der Entwickler-Ecke