Definizione ed uso dei Memory Stream: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 1: Riga 1:
La classe '''MemoryStream''' crea flussi che utilizzano la memoria, anziché un disco o una connessione di rete.
La classe '''Memory-Stream''' crea flussi che utilizzano la memoria, anziché un disco o una connessione di rete.


Con Gambas-3 non è più possibile usare un puntatore (''Pointer'') in uno stream. Si deve invece utilizzare uno stream di memoria con l'istruzione ''MEMORY''.
Con Gambas-3 non è più possibile usare un puntatore (''Pointer'') in uno stream. Si deve invece utilizzare uno stream di memoria con l'istruzione ''MEMORY''.
Riga 17: Riga 17:
   
   
   Dim p As Pointer
   Dim p As Pointer
   Dim pSt As Stream
   Dim pS As Stream
   Dim j as Integer
   Dim j, by As Byte
  Dim by As Byte
   
   
   p = Alloc(4)  ''<Font Color= #006400>' riserviamo 4 byte da qualche parte in memoria''</font>
   p = Alloc(4)  ''<Font Color= #006400>' riserviamo 4 byte da qualche parte in memoria''</font>
Riga 25: Riga 24:
   pSt = Memory p For Write  ''<Font Color= #006400>' questa memoria sarà un flusso (stream) che creeremo appositamente, e...''</font>
   pSt = Memory p For Write  ''<Font Color= #006400>' questa memoria sarà un flusso (stream) che creeremo appositamente, e...''</font>
   
   
  ''<Font Color= #006400>'...nel quale andiamo a scrivere i 4 valori byte.''
  <Font Color= #006400>' ''...nel quale andiamo a scrivere i 4 valori byte.''
  '' ' Ogni valore byte occuperà la dimensione di 1 byte, quindi copriranno esattamente i 4 byte allocati:</font>
  ' ''Ogni valore byte occuperà la dimensione di 1 byte, quindi copriranno esattamente i 4 byte allocati:</font>
  Write #pSt, 80 As Byte
  For j = 80 to 83
    Write #pS, j As Byte
  Write #pSt, 81 As Byte
  Next
  Write #pSt, 82 As Byte
  Write #pSt, 83 As Byte
   
   
  '''End'''
  '''End'''

Versione delle 16:36, 14 lug 2012

La classe Memory-Stream crea flussi che utilizzano la memoria, anziché un disco o una connessione di rete.

Con Gambas-3 non è più possibile usare un puntatore (Pointer) in uno stream. Si deve invece utilizzare uno stream di memoria con l'istruzione MEMORY.

Sintassi:

Flusso = MEMORY Puntatore FOR [ READ ] [ WRITE ]

  • Se la parola chiave READ viene specificata, allora è permessa la lettura.
  • Se la parola chiave WRITE viene specificata, allora è permessa la scrittura.


Memory Stream in modalità "For Write"

se si intende creare una sequenza di byte &h80, &h81, &h82, &h83, lo si può fare con i chr(); oppure si può scrivere:

Public Sub Button1_Click()

 Dim p As Pointer
 Dim pS As Stream
 Dim j, by As Byte

  p = Alloc(4)   ' riserviamo 4 byte da qualche parte in memoria

  pSt = Memory p For Write   ' questa memoria sarà un flusso (stream) che creeremo appositamente, e...

' ...nel quale andiamo a scrivere i 4 valori byte.
' Ogni valore byte occuperà la dimensione di 1 byte, quindi copriranno esattamente i 4 byte allocati:
 For j = 80 to 83
   Write #pS, j As Byte
 Next

End


Memory Stream in modalità "For Read"

In modalità "For Read" i Memory-Stream possono essere usati per dereferenziare i puntatori passati da funzioni esterne.

Public Sub Button1_Click()

 Dim pEst As Pointer
 Dim pS As Stream
 Dim by As Byte

' Prendiamo da una funzione esterna un valore di tipo puntatore:
  funzione_esterna_che_passa_un puntatore(pEst)

' Usiamo i Memory Stream in modalità di "lettura":
  pS = Memory pEst For Read

'Andiamo a dereferenziare e, quindi, a leggere il dato:
  Read #pS, by
 
' Ora, a fini didattici, mostriamo il valore in console:
  Print by

End