Meldung kommt, wenn Code komplett compiliert wurde und danach Button1Click erfolgt.
Darum gibt es den
Debugger der zeigt z.B. in welcher Zeile es "knallt", bzw. man kann seinen Code Befehl für Befehl ausführen.
Du hast nur eine lokale Variable SaveDialog1, also mußt du entweder mit TSaveDialog.Create dafür eine Instanz erstellen,
oder den TOpenDialog auf die Form ziehen/legen (
hier muß die lokale Variable natürlich weg).
Dann, sind die globalen Variablen sowas von schlecht.
Die gehören in das Private der Formklasse und dann sollten sie ordentliche Namen bekommen, damit man "leicht" erkennt was die eigentlich machen.
Kommentare sind schoin wichtig, aber "sinnlose" Kommentare behindern nur und man übersieht "wichtige" Kommentare.
Vorallem "Einschreiben des ts" und "Einschreiben des Freizeischen" sind extrem kontraproduktiv, denn genau das geschriebene sieht man sofort an den Befehlen.
Wenn einer ständig twittert "bin aufgestanten ... hab rechten Schuh angezogen ... hab linken Schuh angezogen ... mach die Tür auf ... geh auf's klo ... mach tür zu ... *kacken* ...." dann liest keiner mehr das "bin gestorben" .... 800 Zeilen später ... zwischen den 100 "bin am sterben"-Zeilen.