Differenze tra le versioni di "Watch"
Da Gambas-it.org - Wikipedia.
Riga 36: | Riga 36: | ||
==Lettura dei dati contemporaneamente da più file== | ==Lettura dei dati contemporaneamente da più file== | ||
− | Per la lettura contemporanea dei dati da più file aperti, sarà necessario coniugare l'apertura e l'osservazione del file tramite ''Open... For Read Watch'' con il Metodo "Object.Attach()" per gestire l' | + | Per la lettura contemporanea dei dati da più file aperti, sarà necessario coniugare l'apertura e l'osservazione del file tramite ''Open... For Read Watch'' con il Metodo "Object.Attach()", associando l'Oggetto file alla definizione dell'Evento. |
+ | |||
+ | Vediamo un esempio pratico, per gestire l'Evento della ricezione dei dati Midi da un dispositivo Midi esterno mediante il file-device che si genera nella cartella "/dev": | ||
Private varFile1 As File | Private varFile1 As File | ||
Private varFile2 As File | Private varFile2 As File | ||
Riga 43: | Riga 45: | ||
Public Sub Form_Open() | Public Sub Form_Open() | ||
− | varFile1 = Open "<Font Color=darkgreen>''/percorso/del/primo/file''</font>" For Read Watch | + | varFile1 = Open "<Font Color=darkgreen>''/percorso/del/primo/file-device-MIDI''</font>" For Read Watch |
<Font Color=gray>' ''Viene associato l'oggetto ''File'' alla denominazione del proprio evento:''</font> | <Font Color=gray>' ''Viene associato l'oggetto ''File'' alla denominazione del proprio evento:''</font> | ||
<FONT color=#B22222>Object.Attach</font>(varFile1, FMain, "eventoMidi1") | <FONT color=#B22222>Object.Attach</font>(varFile1, FMain, "eventoMidi1") | ||
− | varFile2 = Open "<Font Color=darkgreen>''/percorso/del/secondo/file''</font>" For Read Watch | + | varFile2 = Open "<Font Color=darkgreen>''/percorso/del/secondo/file-MIDI''</font>" For Read Watch |
<Font Color=gray>' ''Viene associato l'oggetto ''File'' alla denominazione del proprio evento:''</font> | <Font Color=gray>' ''Viene associato l'oggetto ''File'' alla denominazione del proprio evento:''</font> | ||
<FONT color=#B22222>Object.Attach</font>(varFile2, FMain, "eventoMidi2") | <FONT color=#B22222>Object.Attach</font>(varFile2, FMain, "eventoMidi2") | ||
Riga 86: | Riga 88: | ||
Dim oss2 As Observer | Dim oss2 As Observer | ||
− | varFile1 = Open "<Font Color=darkgreen>''/percorso/del/primo/file''</font>" For Read Watch | + | varFile1 = Open "<Font Color=darkgreen>''/percorso/del/primo/file-device-MIDI''</font>" For Read Watch |
<Font Color=gray>' ''Viene "osservato" l'oggetto ''File'' per l'evento:''</font> | <Font Color=gray>' ''Viene "osservato" l'oggetto ''File'' per l'evento:''</font> | ||
oss1 = New <FONT color=#B22222>Observer</font>(varFile1) As "eventoMidi1" | oss1 = New <FONT color=#B22222>Observer</font>(varFile1) As "eventoMidi1" | ||
− | varFile2 = Open "<Font Color=darkgreen>''/percorso/del/secondo/file''</font>" For Read Watch | + | varFile2 = Open "<Font Color=darkgreen>''/percorso/del/secondo/file-device-MIDI''</font>" For Read Watch |
<Font Color=gray>' ''Viene "osservato" l'oggetto ''File'' per l'evento:''</font> | <Font Color=gray>' ''Viene "osservato" l'oggetto ''File'' per l'evento:''</font> | ||
Riga 99: | Riga 101: | ||
− | <Font Color=gray>' ''Vengono intercettati i dati provenienti dal primo file:''</font> | + | <Font Color=gray>' ''Vengono intercettati i dati provenienti dal primo file-device:''</font> |
Public Sub eventoMidi1_Read() | Public Sub eventoMidi1_Read() | ||
Riga 111: | Riga 113: | ||
− | <Font Color=gray>' ''Vengono intercettati i dati provenienti dal secondo file:''</font> | + | <Font Color=gray>' ''Vengono intercettati i dati provenienti dal secondo file-device:''</font> |
Public Sub eventoMidi2_Read() | Public Sub eventoMidi2_Read() | ||
Versione attuale delle 15:00, 10 giu 2024
Se con OPEN viene specificata la parola-chiave WATCH, allora il file viene così visto dall'interprete:
- Se almeno un byte può essere letto dal file, allora l'evento "File_Read()" viene chiamato;
- Se almeno un byte può essere scritto nel file, allora l'evento "File_Write()" viene chiamato.
Come esempio mostreremo il caso in cui viene aperto un file-device in lettura (For Read) e viene osservato specificando la parola-chiave Watch:
Private varFile As File Public Sub Form_Open() varFile = Open "/percorso/del/file" For Read Watch End Public Sub File_Read() Dim b As Byte While Not Eof(varFile) ' Fin tanto che non è giunto alla fine del file... ' ...legge il file e carica un byte nella variabile "b"... Read #varFile, b ' ...e lo mostra in console: Print b Wend End Public Sub Button1_Click() varFile.Close End
Lettura dei dati contemporaneamente da più file
Per la lettura contemporanea dei dati da più file aperti, sarà necessario coniugare l'apertura e l'osservazione del file tramite Open... For Read Watch con il Metodo "Object.Attach()", associando l'Oggetto file alla definizione dell'Evento.
Vediamo un esempio pratico, per gestire l'Evento della ricezione dei dati Midi da un dispositivo Midi esterno mediante il file-device che si genera nella cartella "/dev":
Private varFile1 As File Private varFile2 As File Public Sub Form_Open() varFile1 = Open "/percorso/del/primo/file-device-MIDI" For Read Watch ' Viene associato l'oggetto File alla denominazione del proprio evento: Object.Attach(varFile1, FMain, "eventoMidi1") varFile2 = Open "/percorso/del/secondo/file-MIDI" For Read Watch ' Viene associato l'oggetto File alla denominazione del proprio evento: Object.Attach(varFile2, FMain, "eventoMidi2") End ' Vengono intercettati i dati provenienti dal primo file: Public Sub eventoMidi1_Read() Dim b1 As Byte Read #varFile, b1 Print b1 End ' Vengono intercettati i dati provenienti dal secondo file: Public Sub eventoMidi2_Read() Dim b2 As Byte Read #varFile2, b2 Print b2 End
oppure in modo analogo mediante Observer:
Private varFile1 As File Private varFile2 As File Public Sub Form_Open() Dim oss1 As Observer Dim oss2 As Observer varFile1 = Open "/percorso/del/primo/file-device-MIDI" For Read Watch ' Viene "osservato" l'oggetto File per l'evento: oss1 = New Observer(varFile1) As "eventoMidi1" varFile2 = Open "/percorso/del/secondo/file-device-MIDI" For Read Watch ' Viene "osservato" l'oggetto File per l'evento: oss2 = New Observer(varFile2) As "eventoMidi2" End ' Vengono intercettati i dati provenienti dal primo file-device: Public Sub eventoMidi1_Read() Dim b1 As Byte Read #varFile1, b1 Print b1 End ' Vengono intercettati i dati provenienti dal secondo file-device: Public Sub eventoMidi2_Read() Dim b2 As Byte Read #varFile2, b2 Print b2 End