Der Unterschied ist, dass deine im Public-Teil deklarierte Variable zu deiner Klasse TForm1 gehört.
Das heisst zum Beispiel :
Wenn in deiner Project-
Unit (Project1 standardmässig) zum Beispiel zuerst form1 dann form 2 aufgerufen wird also so:
Code:
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
und im Create-event deiner Form1 auf eine Public deklarierte Variable zugegriffen wird (zB. ShowMessage(Form2.variable)), wird es unweigerlich zu einer Zugriffsverletzung kommen.
Warum? eben weil Form2 noch nicht existiert und somit auch nicht die Public Variablen.
Ist die Variable aber in deiner zweiten
Unit Global deklariert und du machst Showmessage(variable), geht alles, weil globale Variablen zum Start des Programmes initialisiert werden.
Will heissen : Sobald Formx := nil oder nicht existent ist, ist die public Variable auch nicht existent.
Hoffe man verstehts
mfg smk