Differenze tra le versioni di "Porre sotto osservazione con Read Watch due o più file"
(Una versione intermedia di uno stesso utente non è mostrata) | |||
Riga 2: | Riga 2: | ||
Per ovviare a questo grosso problema, che impedisce di porre sotto osservazione con ''Read Watch'' due o più file, sono possibili almeno tre soluzioni. | 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=== | ===Uso di una ''Classe'' specifica aggiuntiva=== | ||
Riga 19: | Riga 18: | ||
<FONT Color=gray>' ''Poniamo sotto osservazione il primo file:''</font> | <FONT Color=gray>' ''Poniamo sotto osservazione il primo file:''</font> | ||
− | fl = Open "<FONT Color= | + | fl = Open "<FONT Color=darkgreen>'''''/percorso/del/primo/file'''''</font>" For Read Watch |
End | End | ||
Riga 39: | Riga 38: | ||
Public Procedure Osserva() | Public Procedure Osserva() | ||
− | fl = Open "<FONT Color= | + | fl = Open "<FONT Color=darkgreen>''/percorso/del/secondo/file''</font>" For Read Watch |
End | End | ||
Riga 65: | Riga 64: | ||
Public Sub Main() | Public Sub Main() | ||
− | fl1 = Open "<FONT Color= | + | fl1 = Open "<FONT Color=darkgreen>''/percorso/del/primo/file''</font>" 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, Me, "Eventofile1") |
− | fl2 = Open "<FONT Color= | + | fl2 = Open "<FONT Color=darkgreen>''/percorso/del/secondo/file''</font>" 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, Me, "Eventofile2") |
End | End | ||
Riga 116: | Riga 115: | ||
Dim oss2 As Observer | Dim oss2 As Observer | ||
− | fl1 = Open "<FONT Color= | + | fl1 = Open "<FONT Color=darkgreen>''/percorso/del/primo/file''</font>" For Read Watch |
<FONT Color=gray>' ''Viene osservato il primo oggetto File per l'Evento:''</font> | <FONT Color=gray>' ''Viene osservato il primo oggetto File per l'Evento:''</font> | ||
Riga 122: | Riga 121: | ||
− | fl2 = Open "<FONT Color= | + | fl2 = Open "<FONT Color=darkgreen>''/percorso/del/secondo/file''</font>" For Read Watch |
<FONT Color=gray>' ''Viene osservato il secondo oggetto File per l'Evento:''</font> | <FONT Color=gray>' ''Viene osservato il secondo oggetto File per l'Evento:''</font> |
Versione attuale delle 08:47, 23 giu 2024
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