Differenze tra le versioni di "Watch"

Da Gambas-it.org - Wikipedia.
(Creata pagina con 'Se con ''OPEN'' viene specificata la parola chiave '''WATCH'''''Corsivo'', allora il file viene così visto dall'interprete: * Se almeno un byte può essere letto dal file, al...')
 
Riga 1: Riga 1:
Se con ''OPEN'' viene specificata la parola chiave '''WATCH'''''Corsivo'', allora il file viene così visto dall'interprete:
+
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 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.
 
* Se almeno un byte può essere scritto nel file, allora l'evento File_Write() viene chiamato.
Riga 21: Riga 21:
 
   
 
   
 
   
 
   
   While Not Eof(varFile) <Font Color= #006400>' ''Fin tanto che non è giunto alla fine del file...''</font>
+
   While Not Eof(varFile) <Font Color=gray>' ''Fin tanto che non è giunto alla fine del file...''</font>
  <Font Color= #006400>' ''...legge il file e carica un byte nella variabile "by"...''</font>
+
  <Font Color=gray>' ''...legge il file e carica un byte nella variabile "by"...''</font>
 
     Read #varFile, by
 
     Read #varFile, by
  <Font Color= #006400>' ''...e lo mostra in console:''</font>
+
  <Font Color=gray>' ''...e lo mostra in console:''</font>
 
     Print by
 
     Print by
 
   Wend
 
   Wend
Riga 39: Riga 39:
  
 
==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 47: Riga 47:
 
   
 
   
 
   varFile1 = Open "''/percorso/del/primo/file''" For Read Watch
 
   varFile1 = Open "''/percorso/del/primo/file''" For Read Watch
  <Font Color=#006400>' ''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")
 
   Object.Attach(varFile1, FMain, "eventoMidi1")
 
   
 
   
 
   
 
   
 
   varFile2 = Open "''/percorso/del/secondo/file''" For Read Watch
 
   varFile2 = Open "''/percorso/del/secondo/file''" For Read Watch
  <Font Color=#006400>' ''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")
 
   Object.Attach(varFile2, FMain, "eventoMidi2")
 
    
 
    
Riga 58: Riga 58:
 
   
 
   
 
   
 
   
  <Font Color=#006400>' ''Vengono intercettati i dati provenienti dal primo file:''</font>  
+
  <Font Color=gray>' ''Vengono intercettati i dati provenienti dal primo file:''</font>  
 
  '''Public''' Sub eventoMidi1_Read()
 
  '''Public''' Sub eventoMidi1_Read()
 
    
 
    
Riga 70: Riga 70:
 
   
 
   
 
   
 
   
  <Font Color=#006400>' ''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()
 
    
 
    
Riga 94: Riga 94:
 
   varFile1 = Open "''/percorso/del/primo/file''" For Read Watch
 
   varFile1 = Open "''/percorso/del/primo/file''" For Read Watch
 
   
 
   
  <Font Color=#006400>' ''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 Observer(varFile1) As "eventoMidi1"
 
   
 
   
Riga 100: Riga 100:
 
   varFile2 = Open "''/percorso/del/secondo/file''" For Read Watch
 
   varFile2 = Open "''/percorso/del/secondo/file''" For Read Watch
 
   
 
   
  <Font Color=#006400>' ''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 Observer(varFile2) As "eventoMidi2"
 
    
 
    
Riga 106: Riga 106:
 
   
 
   
 
   
 
   
  <Font Color=#006400>' ''Vengono intercettati i dati provenienti dal primo file:''</font>  
+
  <Font Color=gray>' ''Vengono intercettati i dati provenienti dal primo file:''</font>  
 
  '''Public''' Sub eventoMidi1_Read()
 
  '''Public''' Sub eventoMidi1_Read()
 
    
 
    
Dim b1 As Byte
+
  Dim b1 As Byte
 
    
 
    
  Read #varFile1, b1
+
  Read #varFile1, b1
 
   
 
   
  Print b1
+
  Print b1
 
   
 
   
 
  '''End'''
 
  '''End'''
 
   
 
   
 
   
 
   
  <Font Color=#006400>' ''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
 
   
 
   
  Print b2
+
  Print b2
 
   
 
   
 
  '''End'''
 
  '''End'''

Versione delle 09:13, 10 set 2013

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) ed osservato con specificando la parola Watch:

Private varFile As File


Public Sub Form_Open()

 varFile = Open "percorso/del/file" For Read Watch

End


Public Sub File_Read()
 
 Dim by 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, by
' ...e lo mostra in console:
    Print by
  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