Vai tranquillo, cose che succedono.
A me succede ogni tanto di usare classi non istanziate .... ::) ;D
Sembra un pò stupida la cosa, ma provate a fare questo e vedrete che non vi accorgete dell'errore formale:
type
TProva = class
public
nonusare: integer;
procedure Metodo;
procedure Calcola(a,b: integer);
end;
var Prova: TProva;
procedure TForm1.Button1Click(Sender: TObject);
begin
Prova.Metodo;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Prova.Calcola(2,3);
end;
procedure TProva.Metodo;
begin
ShowMessage('Eccomi qua, anche se non sono istanziato ...');
end;
procedure TProva.Calcola(a,b: integer);
begin
ShowMessage((a+b).ToString);
end;
In pratica create una nuova applicazione, inserite due pulsanti con i rispettivi eventi OnCLick, e copiate il codice qui sopra SENZA ISTANZIARE (cioè creare) la classe Prova.
Gira tutto, ed il motivo è che funzioni e procedure vengono allocate comunque anche se la classe non viene istanziata (diciamo che sono statiche). Invece, se cercate di usare le variabili interne (o anche altri dati della classe) senza avere istanziato la classe viene generata una eccezione, in quanto la memoria "di lavoro" non viene allocata senza istanza.
Ciao
P.S: ehmmm mancavano le implementazioni dei metodi ::)