Differenze tra le versioni di "Watch"

Da Gambas-it.org - Wikipedia.
Riga 3: Riga 3:
 
* Se almeno un byte può essere scritto nel file, allora l'evento "File_Write()" 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'':
Come esempio mostreremo il caso in cui viene aperto un file-device in lettura (''For Read'') ed osservato con specificando la parola ''Watch'':
 
 
  Private varFile As File
 
  Private varFile As File
 
   
 
   
Riga 10: Riga 9:
 
  '''Public''' Sub Form_Open()
 
  '''Public''' Sub Form_Open()
 
   
 
   
   varFile = Open "''percorso/del/file''" For Read <FONT color=#B22222>Watch</font>
+
   varFile = Open "<Font Color=gray>''/percorso/del/file''</font>" For Read <FONT color=#B22222>Watch</font>
 
'''End'''
 
 
   
 
   
 +
'''End'''
 
   
 
   
 
  '''Public''' Sub <FONT color=#B22222>File_Read()</font>
 
  '''Public''' Sub <FONT color=#B22222>File_Read()</font>
Riga 26: Riga 24:
 
   Wend
 
   Wend
 
    
 
    
  '''End'''
+
  '''End'''  
 
 
   
 
   
 
  '''Public''' Sub Button1_Click()
 
  '''Public''' Sub Button1_Click()
Riga 37: Riga 34:
  
 
==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'evento della ricezione dei dati Midi, associando l'oggetto file alla definizione dell'evento:
+
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'evento della ricezione dei dati Midi, associando l'oggetto file alla definizione dell'evento:
 
  Private varFile1 As File
 
  Private varFile1 As File
 
  Private varFile2 As File
 
  Private varFile2 As File
Riga 44: Riga 41:
 
  '''Public''' Sub Form_Open()
 
  '''Public''' Sub Form_Open()
 
   
 
   
   varFile1 = Open "''/percorso/del/primo/file''" For Read Watch
+
   varFile1 = Open "<Font Color=gray>''/percorso/del/primo/file''</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>
   Object.Attach(varFile1, FMain, "eventoMidi1")
+
   <FONT color=#B22222>Object.Attach</font>(varFile1, FMain, "eventoMidi1")
+
 
+
   varFile2 = Open "<Font Color=gray>''/percorso/del/secondo/file''</font>" For Read Watch
   varFile2 = Open "''/percorso/del/secondo/file''" 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>
   Object.Attach(varFile2, FMain, "eventoMidi2")
+
   <FONT color=#B22222>Object.Attach</font>(varFile2, FMain, "eventoMidi2")
 
    
 
    
  '''End'''
+
  '''End'''  
 
 
   
 
   
 
  <Font Color=gray>' ''Vengono intercettati i dati provenienti dal primo file:''</font>  
 
  <Font Color=gray>' ''Vengono intercettati i dati provenienti dal primo file:''</font>  
Riga 65: Riga 60:
 
   Print b1
 
   Print b1
 
   
 
   
  '''End'''
+
  '''End'''  
 
 
   
 
   
 
  <Font Color=gray>' ''Vengono intercettati i dati provenienti dal secondo file:''</font>
 
  <Font Color=gray>' ''Vengono intercettati i dati provenienti dal secondo file:''</font>
 
  '''Public''' Sub eventoMidi2_Read()
 
  '''Public''' Sub eventoMidi2_Read()
 
    
 
    
Dim b2 As Byte
+
  Dim b2 As Byte
 
    
 
    
 
   Read #varFile2, b2
 
   Read #varFile2, b2
Riga 78: Riga 72:
 
   
 
   
 
  '''End'''
 
  '''End'''
 
 
 
oppure in modo analogo mediante ''Observer'':
 
oppure in modo analogo mediante ''Observer'':
 
  Private varFile1 As File
 
  Private varFile1 As File
Riga 90: Riga 82:
 
   Dim oss2 As Observer
 
   Dim oss2 As Observer
 
   
 
   
   varFile1 = Open "''/percorso/del/primo/file''" For Read Watch
+
   varFile1 = Open "<Font Color=gray>''/percorso/del/primo/file''</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 Observer(varFile1) As "eventoMidi1"
+
   oss1 = New <FONT color=#B22222>Observer</font>(varFile1) As "eventoMidi1"
+
 
+
   varFile2 = Open "<Font Color=gray>''/percorso/del/secondo/file''</font>" For Read Watch
   varFile2 = Open "''/percorso/del/secondo/file''" 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>
   oss2 = New Observer(varFile2) As "eventoMidi2"
+
   oss2 = New <FONT color=#B22222>Observer</font>(varFile2) As "eventoMidi2"
 
    
 
    
  '''End'''
+
  '''End'''  
 
 
   
 
   
 
  <Font Color=gray>' ''Vengono intercettati i dati provenienti dal primo file:''</font>  
 
  <Font Color=gray>' ''Vengono intercettati i dati provenienti dal primo file:''</font>  
Riga 113: Riga 103:
 
   Print b1
 
   Print b1
 
   
 
   
  '''End'''
+
  '''End'''  
 
 
   
 
   
 
  <Font Color=gray>' ''Vengono intercettati i dati provenienti dal secondo file:''</font>
 
  <Font Color=gray>' ''Vengono intercettati i dati provenienti dal secondo file:''</font>

Versione delle 00:02, 22 apr 2023

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 "by"...
   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()" per gestire l'evento della ricezione dei dati Midi, associando l'oggetto file alla definizione dell'evento:

Private varFile1 As File
Private varFile2 As File


Public Sub Form_Open()

 varFile1 = Open "/percorso/del/primo/file" For Read Watch
' Viene associato l'oggetto File alla denominazione del proprio evento:
 Object.Attach(varFile1, FMain, "eventoMidi1")
 
 varFile2 = Open "/percorso/del/secondo/file" 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" For Read Watch

' Viene "osservato" l'oggetto File per l'evento:
 oss1 = New Observer(varFile1) As "eventoMidi1"
 
 varFile2 = Open "/percorso/del/secondo/file" 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: 
Public Sub eventoMidi1_Read()
 
 Dim b1 As Byte
 
 Read #varFile1, 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