Originariamente inviato da alka
Dichiarando il parametro facendolo precedere dalla parola chiave var, qualsiasi modifica ad esso all'interno della routine viene mantenuta anche al ritorno.
Perdonami ma non mi è chiaro cosa intendi.

Ti faccio il mio esempio:
da una function richiamo la procedura che ad ogni secondo mi modifica la stringa; questa stringa viene salvata in una variabile pubblica in modo da poterla riutilizzare da tutte le funzioni e procedure esistenti. Ora, ho due possibilità:
- ripassare la variabile dalla procedura alla funzione in modo che quest'ultima la restituisca all'applicazione come parametro di ritorno;
- passare la variabile rirettamente dalla procedura all'applicazione;

La seconda soluzione mi pare un po ardua, sempre che sia possibile, così ho optato per la prima. La procedura crea la stringa, la metto in una variabile pubblica e la assegno a Result della funzione per poi stamparla a video. Per qualche motivo non va.
Essendo la procedura richiamata da una funzione, quando la routine della procedura termina, la funzione riprende dai comandi successivi alla chiamata oppure termina il processo punto e basta?

Dato il seguente codice per attivare il timer:

var
response: string;

function prova(): string;
begin
timer.interval := 3000;
timer.OnTimer := avviatimer; // all'evento Ontimer avvio la procedura 'avviatimer'
timer.enable := true; // abilito il timer scatenando l'evento Ontimer
Result := response; //recupero il valore creato dalla procedura e lo passo all'applicazione
end;

procedure avviatimer(Sender: TObject);
begin
Response := response+'OK ';
end;


L'esempio in teoria dovrebbe dare come ritorno una stringa di questo tipo 'OK OK OK ' invece non stampa nulla quindi il dubbio è che terminata la procedura, la funzione chiamante non riprende la sua esecuzione.