Da du keine Klasse mit einer Deklaration hast, in der die Methoden bekannt gemacht werden - auch für den Compiler, sondern eine einfache Sammlung von Routinen in einer
Unit, geht der Compiler von oben nach unter vor. Und wenn er in der Funktion
calc auf den Funktionasaufruf
Addiere stößt, weiß er damit nichts anzufagen, weil die Funktion
Addiere erst weiter unten im Quelltext implementiert wird.
Du hast jetzt zwei Möglichkleiten, die beide schon erwähnt wurden. Entweder du sortierst die Funktionen in deinem Quellcode um, was hier noch möglich ist, oder aber, wenn das nicht möglich ist, kannst du dem Compiler die Routinen auch mit sogenannten
foward-Deklarationen bekannt machen:
function Addieren(x, y: Byte): Word; forward;
Das reicht schon, weil der Compiler nur wissen muss, wie der Funktionskopf aussieht, um entscheiden zu können, ob die Funktion korrekt aufgerufen wird.
Das noch mal zum Verständnis zu den Lösungen meiner Vorposter.