Porre sotto osservazione con Read Watch due o più file
Se si tenta di porre sotto osservazione con Read Watch due o più file, e si impostano le due Eventi di lettura "File_Read()" per ciascun file osservato, viene sollevato un errore di coesistenza di più di una della predetta sub-procedura di lettura di file posti sotto osservazione.
Per ovviare a questo grosso problema, che impedisce di porre sotto osservazione con Read Watch due o più file, sono possibili almeno tre soluzioni.
Uso di una Classe specifica aggiuntiva
La prima modalità prevede la creazione - per ciascun file che si intende porre sotto osservazione con le parole chiave Read Watch - di una specifica Classe aggiuntiva.
Nell'esempio astratto, che segue, porremo sotto osservazione due file-device.
Nella Classe principale porremo sotto osservazione un file:
Private fl As File Public cl As New Class1 Public Sub Main() ' Invochiamo la sub-procedura della Classe secondaria per porre sotto osservazione il secondo file: cl.Osserva() ' Poniamo sotto osservazione il primo file: fl = Open "/percorso/del/primo/file" For Read Watch End Public Sub File_Read() Dim s As String Read #fl, s, -256 Print s End
Nella Classe secondaria specifica porremo sotto osservazione il secondo file:
Private fl As File Public Procedure Osserva() fl = Open "/percorso/del/secondo/file" For Read Watch End Public Sub File_Read() Dim s As String Read #fl, s, -256 Print s End
Uso del Metodo "Object.Attach()"
La seconda modalità prevede l'uso del Metodo ".Attach()" della Classe Object.
Private fl1 As File Private fl2 As File Public Sub Main() fl1 = Open "/percorso/del/primo/file" For Read Watch ' Viene associato il primo oggetto File alla denominazione del proprio evento: Object.Attach(fl1, Me, "Eventofile1") fl2 = Open "/percorso/del/secondo/file" For Read Watch ' Viene associato il secondo oggetto File alla denominazione del proprio evento: Object.Attach(fl2, Me, "Eventofile2") End ' Vengono intercettati i dati provenienti dal primo file: Public Sub Eventofile1_Read() Dim b1 As Byte Read #fl1, b1 Print b1 End ' Vengono intercettati i dati provenienti dal secondo file: Public Sub Eventofile2_Read() Dim b2 As Byte Read #fl2, b2 Print b2 End
Uso della Classe Observer
La terza modalità prevede l'uso della Classe Observer.
Private fl1 As File Private fl2 As File Public Sub Main() Dim oss1 As Observer Dim oss2 As Observer fl1 = Open "/percorso/del/primo/file" For Read Watch ' Viene osservato il primo oggetto File per l'Evento: oss1 = New Observer(fl1) As "Eventofile1" fl2 = Open "/percorso/del/secondo/file" For Read Watch ' Viene osservato il secondo oggetto File per l'Evento: oss2 = New Observer(fl2) As "Eventofile2" End ' Vengono intercettati i dati provenienti dal primo file: Public Sub Eventofile1_Read() Dim b1 As Byte Read #fl1, b1 Print b1 End ' Vengono intercettati i dati provenienti dal secondo file: Public Sub Eventofile2_Read() Dim b2 As Byte Read #fl2, b2 Print b2 End