Hallo Lee,
natürlich kriegst du eine Fehlermeldung, wenn du in einer Form namens "Form1" eine Prozedur hast, die "TMain.Test" heißt.
Benenne sie um in TForm1.Test oder nenne sie TForm1.Button2Click und alles wird gut.
Zur
Access Violation.
Na klar kommt die.
Du hast das ja alles so schön vereinfacht und die Funktionen, die ursprünglich innerhalb von "Test" lagen, ausgelagert.
Dann hast du warscheinlich eine Fehlermeldung "list unbekannt" oder so erhalten und zur Abhilfe in den ausgelagerten Funktionen list noch einmal deklariert.
So funktioniert das halt nicht.
Mein Tipp:
Höre auf mit deinen Verschlimmbesserungen.
Nimm die Prozedur "TMain.Test", benenne sie um in "TForm1.Button2Click", und dann wird das funktionieren.