Autore Topic: attendere la fine di una sub  (Letto 1028 volte)

Offline skrokkio

  • Gamberetto
  • *
  • Post: 32
    • Mostra profilo
attendere la fine di una sub
« il: 07 Dicembre 2009, 19:06:54 »
eccomi di nuovo....

il mio programma  ha la seguente sub

sub masterizza()
..codice con tipo "shell growisofs" che mi serve a masterizzare..
end

io vorrei che ci fosse un controllo che verifichi la fine della masterizzazione
si puo' fare?

magari se fosse possibile "catchare" gli eventuali errori di growisofs....

vi ringrazio ancora della disponibilita'

ciao

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: attendere la fine di una sub
« Risposta #1 il: 07 Dicembre 2009, 19:14:13 »
Quando si utilizza un comando o un programma lanciato da terminale è possibile attendere che esso finisca semplicemente ponendo WAIT dopo il comando....in particolare

Codice: [Seleziona]
SUB masterizza()
  SHELL "growisofs" WAIT
END


Se vuoi sapere anche cosa "dice" il comando nel terminale allora devi fare in modo che tutto ciò che apparirebbe nel terminale sia cntenuto in una stringa...ovvero:

Codice: [Seleziona]
SUB masterizza()
DIM risposta AS STRING
   SHELL "growisofs" TO risposta
   WAIT
END

Offline skrokkio

  • Gamberetto
  • *
  • Post: 32
    • Mostra profilo
Re: attendere la fine di una sub
« Risposta #2 il: 07 Dicembre 2009, 19:32:10 »
io ho gia "riversato" l'output di shell "growisofs" in una textboxt ma avendo questo comando (perfettamente Funzionante) :
  'SHELL "growisofs -use-the-force-luke=dao -use-the-force-luke=break:1913760 -dvd-compat -speed=2 -Z " & textbox1.text & "=" & (Fileview1.dir &/ Fileview1.current) FOR INPUT OUTPUT AS "processo"

non riesco ad utilizzare la funzione Wait perche' perche' alla fine del comando c'e' la funzione  For Input Output... E se il Wait lo metto dopo non funziona

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: attendere la fine di una sub
« Risposta #3 il: 07 Dicembre 2009, 19:44:14 »
Se usi la strada del process allora il WAIT non ha senso...basta analizzare lo stato del processo ad intervalli regolari e saprai quando ha finito..se invece usi la tecnica che ho detto io allora puoi usare il WAIT....

Offline skrokkio

  • Gamberetto
  • *
  • Post: 32
    • Mostra profilo
Re: attendere la fine di una sub
« Risposta #4 il: 07 Dicembre 2009, 20:37:08 »
E' proprio questo il problema.
Ho provato in vari modi ma growisofs non da un output tale da poterlo definire "fine processo".
Mi spiego l'ultmo output che da growisofs e' "closing disk", purtroppo pero' dura molti minuti e non posso dire al programma di considerare finito il processo quando vede "closing disk" nell'output" perche' appena appare "closing disk" deve ancora chiuderelo il disco e quindi e' attivo.

Dovrei monitorare growisofs e vedere quando si chiude (o esce dalla memoria)....ma non so come fare.

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: attendere la fine di una sub
« Risposta #5 il: 07 Dicembre 2009, 20:56:53 »
forse questo ti puo' servire:

PUBLIC SUB Form_Open()

  EXEC [] FOR READ

END

' Questo evento di Process ti serve per reperire l'output
PUBLIC SUB Process_Read()
dim sLine as string

  READ #LAST, sLine, -256

END

'Quest'altro viene eseguito quando il processo termina.
PUBLIC SUB Process_Kill()


END

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: attendere la fine di una sub
« Risposta #6 il: 07 Dicembre 2009, 20:58:42 »
Se vuoi ti mando una piccola applicazione che, tramite il programma a linea di comando youtube-dl, mi scarica i video dal sito di youtube e che sfrutto appunto gli eventi di Process

Offline skrokkio

  • Gamberetto
  • *
  • Post: 32
    • Mostra profilo
Re: attendere la fine di una sub
« Risposta #7 il: 07 Dicembre 2009, 21:06:35 »
grazie, al massimo ti chiedero' in futuro il programma.Per Ora voglio sbatterci la testa per bene che devo imparare facendo prove su prove :P