entweder ich hab es eifnach übersehen oder du hast vergessen Instanzen von TRechteck etc. zu erstellen (rechteck := TRechteck.Create). Das Freigeben der Instanzen würde dann auch fehlen.
Es wäre auch interessant zu wissen an welcher Stelle der Fehler um die Ursache einzugrenzen. Generell kommt eine AccessViolation (Zugriffsverletzung) immer wenn du auf Speicher falsch zugreifst oder auf Speicher der nicht zu deinem Programm gehört (lässt sich auch einiges über die Suchfunktion finden).
Achja, Herzlich Willkommen in der
DP