Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: Jor11 - Maggio 14, 2015, 11:49:08 am

Titolo: ritornare un valore intero
Inserito da: Jor11 - Maggio 14, 2015, 11:49:08 am
Salve sto cercando di fare un programma che si "parla" con un file batch e mi servirebbe ritornare un valore in modo da "intercettarlo" dal batch.Sapevo che in c esiste il comando 'return' per ritornare un valore, ma si puo usare solo alla fine del programma. In pascal esiste un comando simile ma che si usa all'interno del programma e non solo alla fine?

Spero di essermi spiegato bene.

Ringrazio in anticipo.
Titolo: Re:ritornare un valore intero
Inserito da: nomorelogic - Maggio 14, 2015, 03:40:02 pm
credo tu stia cercando questo
http://www.freepascal.org/docs-html/rtl/system/halt.html (http://www.freepascal.org/docs-html/rtl/system/halt.html)
Titolo: Re:ritornare un valore intero
Inserito da: Jor11 - Maggio 14, 2015, 06:02:10 pm
No mi scuso ma penso di non essermi espresso bene.
Con il comando che mi hai postato restituisce un valore alla fine del programma, io invece sto cercando di ritornare un valore mentre il programma e ancora in esecuzione cerco di farti un esempio:
Program esempio;
Var
A:integer;
Begin
Readln(a);
If a=1 then ('qui dovrebbe ritornare un       valore che leggera il batch')
else begin
           A:=a+1;
           Writeln(a);
End.

Grazie in anticipo.
Titolo: Re:ritornare un valore intero
Inserito da: nomorelogic - Maggio 15, 2015, 08:41:06 am
non penso si possa fare una cosa come quella che chiedi
un batch esegue 1 comando alla volta e tutto quello che puoi fare č usare lo standard output (a meno di ricorrere ad Inter Process Comunication)

potresti provare a scrivere nello standard output
Codice: [Seleziona]
Program esempio;
Var
A:integer;
Begin
Readln(a);
If a=1 then Writeln('valore che leggera il batch')
else begin
           A:=a+1;
           Writeln(a);
End.
Titolo: Re:ritornare un valore intero
Inserito da: Jor11 - Maggio 15, 2015, 02:47:06 pm
Avevo gia pensato di fare come mi hai proposto ma non saprei come leggere l'output. Per il valore da ritornare ho provato con "errorlevel"(comando batch) il quale controllava il valore che ritornava dal programma. Mentre come dici tu, scrivere nell'output, non riuscirei ad intercettare l'output. Per questo cercavo di ritornare un valore per poi leggerlo dal batch.

Per il momento ti ringrazio delle risposte.
Titolo: Re:ritornare un valore intero
Inserito da: schumi - Maggio 15, 2015, 04:42:13 pm
č capitato anche a me, se č il tuo programma a dover lanciare il batch lo esegui con un parametro in riga:
filebatch.bat xx

poi dentro il batch rilevi xx con la variabile %1

altrimenti dovresti scrivere il valore in un file e leggerlo dal batch ma ora non ricordo come.

ciao

Titolo: Re:ritornare un valore intero
Inserito da: Jor11 - Maggio 15, 2015, 08:19:31 pm
grazie mille dei consigli ma non ho capito cosa vuoi dire con le xx e come eseguire il batch dal programma.

grazie in anticipo e scusa ma sono un giovane programmatore e queste cose per me sono ancora un po difficili.
Titolo: Re:ritornare un valore intero
Inserito da: nomorelogic - Maggio 15, 2015, 10:15:02 pm
con
Codice: [Seleziona]
filebatch.bat xx
voleva suggerirti di invocare un file .bat con un parametro (appunto xx).

Il primo parametro, all'interno del .bat, lo trovi nella variabile %1
Titolo: Re:ritornare un valore intero
Inserito da: Jor11 - Maggio 16, 2015, 12:19:02 pm
Grazie dei consigli anche se non ho capito molto bene cercherņ di fare come mi hai consigliato.