Statt
KO_Schlange[0,0] := KO_Schlange[0,0] -22
würde ich
dec(KO_Schlange[0,0],22) verwenden, zumindest ausprobieren, analog bei den anderen Arrayelementen. Ist kürzer und ein wenig "gehobener".
Deine Fehler sind für mich allein aus der Quelltextbetrachtung nicht nachvollziehbar. Ob dynamische Arrays intern "verzeigert" sind, ist mir nicht bekannt (zumindest gibt der Debugger keine Speicheradressen, sondern Variableninhalte aus), doch selbst wenn, daran können Deine Probleme m.E. nicht liegen. Ich würde an Deiner Stelle - rein aus Interesse - mit dem internen bzw. integrierten Debugger der Sache auf den Grund zu gehen versuchen.