Allora:
codice:
nome := random(90)+1;
Questa riga è errata perchè se nome è di tipo string, non puoi assegnargli il risultato di una funzione che ritorna un integer. Riscrivila così:
codice:
nome := IntToStr(random(90)+1);
Altra cosa: il file tu lo assegni, lo crei, ma non lo chiudi. Aggiungi questa riga:
codice:
assignfile(f, 'c:\'+ nome + '.txt');
rewrite(f);
CloseFile(f);
Ultima cosa: questa riga,
codice:
until label1.text = 'fine';
anche se funziona è concettualmente sbagliata, perchè rende il ciclo infinito! Non si capisce qual'è il testo di Label1, che NON può essere cambiato dall'utente se non via codice... e anche se hai messo un bottone sul form che fa Label1.text := 'file';, NON riuscirai a premerlo perchè l'applicazione sta eseguendo il ciclo.
Se ho indovinato le tue intenzioni , allora aggiungi questa riga alla fine del ciclo:
codice:
Application.ProcessMessages;
until label1.text = 'fine';