Differenze tra le versioni di "Porre sotto osservazione con Read Watch due o più file"
Riga 1: | Riga 1: | ||
Se si tenta di porre sotto osservazione con ''Read Watch'' due o più file, e si impostano le due sub-procedure 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''. | Se si tenta di porre sotto osservazione con ''Read Watch'' due o più file, e si impostano le due sub-procedure 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, | + | 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=== | ||
+ | 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. | ||
Riga 49: | Riga 53: | ||
Print s | 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 | ||
+ | <FONT Color=gray>' ''Viene associato il primo oggetto File alla denominazione del proprio evento:''</font> | ||
+ | Object.Attach(fl1, FMain, "eventofile1") | ||
+ | |||
+ | |||
+ | fl2 = Open "''/percorso/del/secondo/file''" For Read Watch | ||
+ | <FONT Color=gray>' ''Viene associato il secondo oggetto File alla denominazione del proprio evento:''</font> | ||
+ | Object.Attach(fl2, FMain, "eventofile2") | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | <FONT Color=gray>' ''Vengono intercettati i dati provenienti dal primo file:''</font> | ||
+ | '''Public''' Sub eventofile1_Read() | ||
+ | |||
+ | Dim b1 As Byte | ||
+ | |||
+ | Read #fl1, b1 | ||
+ | Print b1 | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | <FONT Color=gray>' ''Vengono intercettati i dati provenienti dal secondo file:''</font> | ||
+ | '''Public''' Sub eventofile2_Read() | ||
+ | |||
+ | Dim b2 As Byte | ||
+ | |||
+ | Read #fl2, b2 | ||
+ | Print b2 | ||
+ | |||
'''End''' | '''End''' |
Versione delle 15:21, 27 apr 2015
Se si tenta di porre sotto osservazione con Read Watch due o più file, e si impostano le due sub-procedure 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
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.
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, FMain, "eventofile1") fl2 = Open "/percorso/del/secondo/file" For Read Watch ' Viene associato il secondo oggetto File alla denominazione del proprio evento: Object.Attach(fl2, FMain, "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