Watch: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
(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...')
 
Nessun oggetto della modifica
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 10: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