Differenze tra le versioni di "Porre sotto osservazione con Read Watch due o più file"

Da Gambas-it.org - Wikipedia.
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, è necessario creare - per ciascun file che si intende porre sotto osservazione con le parole chiave ''Read Watch'' - una specifica Classe.
+
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