Differenze tra le versioni di "Conoscere in tempo reale il file-device "pts" dell'ultimo Terminale appena aperto"

Da Gambas-it.org - Wikipedia.
(Creata pagina con 'Per conoscere in tempo reale il file-device "pts" dell'ultimo Terminale appena aperto, ci serviremo di un ciclo: '''Public''' Sub Main() Dim fl As File Dim b As Byte ...')
 
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Per conoscere in tempo reale il file-device "pts" dell'ultimo Terminale appena aperto, ci serviremo di un ciclo:
+
Per conoscere in tempo reale il file-device "pts" dell'ultimo Terminale appena aperto, ci serviremo di un ciclo oppure, ancora meglio, dell'oggetto ''Timer''.
 +
 
 +
Vediamo un possibile esempio pratico:
 +
Private tempus As Timer
 +
Private ss As New String[]
 +
 +
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
 
   
 
   
  Dim fl As File
+
  Dim b As Byte
  Dim b As Byte
+
  Dim pts As String
  Dim s As String
 
 
    
 
    
  <FONT Color=gray>' ''Verifichiamo innanzitutto quanti file 'pts' ono presenti in '/dev/pts':''</font>
+
  With tempus = New Timer As "Tempus"
   b = Dir("/dev/pts", Null, gb.Device).Count
+
    .Delay = 10
 +
    .Start
 +
  End With
 +
 
 +
  <FONT Color=gray>' ''Verifica quanti file-device ci sono nella cartella "/dev/pts":''</font>
 +
  b = Dir("/dev/pts").Count
 +
  Print "Sono attualmente presenti "; b; " file-device nella cartella '/dev/pts':\n"
 +
 
 +
<FONT Color=gray>' ''Assegna ad ogni elemento della variabile array di tipo Stringa "ss" il nome di ciascun''
 +
' ''file-device 'pts' presente nella cartella '/dev/pts/' all'avvio del programma:''</font>
 +
   For Each pts In Dir("/dev/pts")
 +
    Print pts,
 +
    ss.Push(pts)
 +
  Next
 +
  Write "\n\n"
 +
 
 +
'''End'''
 
   
 
   
  Do
+
'''Public''' Sub Tempus_Timer()  <FONT Color=gray>' ''Consente di verificare se un Terminale sia stato aperto.''</font>
    Wait 0.01
 
  Loop Until b < Dir("/dev/pts", Null, gb.Device).Count
 
 
    
 
    
  <FONT Color=gray>' ''L'ultimo file 'pts' creato è posizionato nel 1° elemento del vettore generato dalla funzione "Dir()":''</font>
+
  Dim pts As String
   s = Dir("/dev/pts", Null, gb.Device)[0]
+
  Dim fl As File
+
 
  Print "Il file 'pts' del Terminale appena aperto è: "; s
+
  <FONT Color=gray>' ''Effettua la verifica di quale file-device corrisponde a quello del Terminale appena aperto:''
+
' ''il file-device nuovo, non presente nella variabile vettore di tipo stringa, è quello del terminale:''</font>
 +
   For Each pts In Dir("/dev/pts")
 +
    If Not ss.Exist(pts) Then
 +
      Print "Aperto Terminale associato al file '/dev/pts/"; pts; "'"
 +
      ss.Push(pts)
 
  <FONT Color=gray>' ''Scriviamo qualcosa nel Terminale che è stato appena aperto:''</font>
 
  <FONT Color=gray>' ''Scriviamo qualcosa nel Terminale che è stato appena aperto:''</font>
  fl = Open "/dev/pts" &/ s For Write
+
      fl = Open "/dev/pts" &/ pts For Write
 +
      Write #fl, "Questo è\nil primo testo.\n"
 +
      Wait 0.1
 +
      Write #fl, "Questo è\nil secondo testo.\n"
 +
      fl.Close
 +
    Endif
 +
  Next
 +
 
 +
  ss.Remove(0, ss.Count)
 
    
 
    
   Write #fl, "Questa è\nuna prova !\n"
+
   For Each pts In Dir("/dev/pts")
     
+
    ss.Push(pts)
   fl.Close
+
   Next
 
    
 
    
 
  '''End'''
 
  '''End'''

Versione attuale delle 15:49, 27 ago 2022

Per conoscere in tempo reale il file-device "pts" dell'ultimo Terminale appena aperto, ci serviremo di un ciclo oppure, ancora meglio, dell'oggetto Timer.

Vediamo un possibile esempio pratico:

Private tempus As Timer
Private ss As New String[]


Public Sub Main()

  Dim b As Byte
  Dim pts As String
 
  With tempus = New Timer As "Tempus"
    .Delay = 10
    .Start
  End With
 
' Verifica quanti file-device ci sono nella cartella "/dev/pts":
  b = Dir("/dev/pts").Count
  Print "Sono attualmente presenti "; b; " file-device nella cartella '/dev/pts':\n"
  
' Assegna ad ogni elemento della variabile array di tipo Stringa "ss" il nome di ciascun
' file-device 'pts' presente nella cartella '/dev/pts/' all'avvio del programma:
  For Each pts In Dir("/dev/pts")
    Print pts,
    ss.Push(pts)
  Next
  Write "\n\n"
  
End

Public Sub Tempus_Timer()   ' Consente di verificare se un Terminale sia stato aperto.
 
  Dim pts As String
  Dim fl As File
 
' Effettua la verifica di quale file-device corrisponde a quello del Terminale appena aperto:
' il file-device nuovo, non presente nella variabile vettore di tipo stringa, è quello del terminale:
  For Each pts In Dir("/dev/pts")
    If Not ss.Exist(pts) Then
      Print "Aperto Terminale associato al file '/dev/pts/"; pts; "'"
      ss.Push(pts)
' Scriviamo qualcosa nel Terminale che è stato appena aperto:
      fl = Open "/dev/pts" &/ pts For Write
      Write #fl, "Questo è\nil primo testo.\n"
      Wait 0.1
      Write #fl, "Questo è\nil secondo testo.\n"
      fl.Close
    Endif
  Next
  
  ss.Remove(0, ss.Count)
  
  For Each pts In Dir("/dev/pts")
    ss.Push(pts)
  Next
  
End