Differenze tra le versioni di "Scrivere in un file solo alcuni dati presenti in un'area riservata di memoria"

Da Gambas-it.org - Wikipedia.
Riga 23: Riga 23:
 
   
 
   
 
   
 
   
  <FONT color=gray>' ''Generiamo una variabile di tipo "Stream" dal "Puntatore":''</font>
+
  <FONT color=gray>' ''Generiamo una variabile di tipo "Stream" dal "Puntatore",''
 +
' ''per poter scrivere nella variabile "Puntatore" medesima:''</font>
 
   t = Memory p For Write
 
   t = Memory p For Write
 
    
 
    
  <FONT color=gray>' ''Scriviamo dieci byte all'interno di quell'area di memoria riservata:''</font>
+
  <FONT color=gray>' ''Scriviamo mediante la variabile di tipo "Stream" dieci byte''
 +
' ''all'interno di quell'area di memoria riservata:''</font>
 
   For j = 97 To 106
 
   For j = 97 To 106
 
     Write #t, j As Byte
 
     Write #t, j As Byte

Versione delle 05:45, 8 nov 2013

Il caso è quello in cui si intende scrivere in un file soltanto alcuni dati contenuti in un'area riservata di memoria e puntata da una variabile di tipo puntatore.


Nell'esempio esplicativo si precederà innanzitutto a scrivere usa serie di dati nell'area riservata di memoria mediante i Memory-Stream. Successivamente si scrivernno nel file, aperto in scrittura, solo 4 byte, partendo dal terzo byte, precedentemente memorizzati nell'area riservata.

Per poter scrivere solo alcuni dati con il comando Write, è necessario aggiungere un terzo elemento alla corrispondente riga di comando:

Write #file, puntatore, n

laddove n rappresenta la quantità di byte, presenti nella variabile puntatore, che dovranno essere scritti nel file.


Esempio:

Public Sub Main()

 Dim fl As File
 Dim p As Pointer
 Dim t As Stream
 Dim j As Byte


' Allochiamo un'area di memoria pari a dieci byte,
' che sarà puntata da una variabile di tipo "Puntatore":
  p = Alloc(10)


' Generiamo una variabile di tipo "Stream" dal "Puntatore",
' per poter scrivere nella variabile "Puntatore" medesima:
  t = Memory p For Write
 
' Scriviamo mediante la variabile di tipo "Stream" dieci byte
' all'interno di quell'area di memoria riservata:
  For j = 97 To 106
    Write #t, j As Byte
  Next


  fl = Open "/percorso/del/file" For Write Create
 
' Spostiamo il puntatore interno al terzo byte dell'area di memoria riservata...
  Seek #fl, 2

' ...e scriviamo soltanto quattro byte, cominciando dal terzo,
' dell'area di memoria riservata puntata dalla variabile di tipo "Puntatore":
  Write #fl, p, 4

End