Hallo Flo,
auf den ersten Blick glaube ich, dass es an folgendem liegt:
im else-Fall (wenn also der Stack am Anfang leer ist), schreibst du Key zweimal auf den Stack!
Delphi-Quellcode:
Anz:= 0;
OpStack.Push(key);
OpStack.PushObject(key,TObject(OpPosition))
Push(Key) schreibt den Operator auf den Stack.
Anschließend schreibt PushObject noch einmal Key auf den Stack und merkt sich
zusätzlich die Stufe des Operators.
Damit steht aber der Operator zweimal auf dem Stack. Lösche einmal den ersten Push Call. Wenn es dann noch nicht funktioniert, guck ich mir den Rest auch noch an.
Übrigens gefällt mir der Code schon ganz gut!