Hallo Fabian,
ein mehrdimensionales, dynamisches Array belegt keinen zusammenhängenden Speicherbereich. Das Löschen solltest du also besser so durchführen:
Delphi-Quellcode:
for y := 0 to High(PGrid^) do
for x := 0 to High(PGrid^[y]) do
PGrid^[x, y] := 0;
In der letzten Ebene (x) könntest du prinzipiell auch mit FillChar arbeiten.
In Zeile 63 ist wahrscheinlich der Endwert der y-Schleife falsch:
FOR y := AHeight - 2 DOWNTO 12 DO // 1 statt 12?
Bei der Schleife zum Einfärben der Bitmap solltest du die Schleifenparameter prüfen. Der Zugriff auf PGrid^[AWidth, AHeight] dürfte ebenfalls zu einem Fehler führen. Eine einfache Verschiebung beider Laufvariablen um 1 führt allerdings zu Problemen im ELSE-Zweig.
Gruß Hawkeye