Differenze tra le versioni di "Porre sotto osservazione con Read Watch due o più file"
Riga 67: | Riga 67: | ||
fl1 = Open "''/percorso/del/primo/file''" For Read Watch | fl1 = Open "''/percorso/del/primo/file''" For Read Watch | ||
<FONT Color=gray>' ''Viene associato il primo oggetto File alla denominazione del proprio evento:''</font> | <FONT Color=gray>' ''Viene associato il primo oggetto File alla denominazione del proprio evento:''</font> | ||
− | Object.Attach(fl1, | + | Object.Attach(fl1, MMain, "eventofile1") |
fl2 = Open "''/percorso/del/secondo/file''" For Read Watch | fl2 = Open "''/percorso/del/secondo/file''" For Read Watch | ||
<FONT Color=gray>' ''Viene associato il secondo oggetto File alla denominazione del proprio evento:''</font> | <FONT Color=gray>' ''Viene associato il secondo oggetto File alla denominazione del proprio evento:''</font> | ||
− | Object.Attach(fl2, | + | Object.Attach(fl2, MMain, "eventofile2") |
'''End''' | '''End''' |
Versione delle 15:24, 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, MMain, "eventofile1") fl2 = Open "/percorso/del/secondo/file" For Read Watch ' Viene associato il secondo oggetto File alla denominazione del proprio evento: Object.Attach(fl2, MMain, "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