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

Da Gambas-it.org - Wikipedia.
 
(4 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 
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.
 
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.
 
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.
Riga 6: Riga 5:
 
Per poter scrivere solo alcuni dati con il comando ''Write'', è necessario aggiungere un terzo elemento alla corrispondente riga di comando:
 
Per poter scrivere solo alcuni dati con il comando ''Write'', è necessario aggiungere un terzo elemento alla corrispondente riga di comando:
 
  Write #file, puntatore, <FONT color=#B22222><B>n</b></font>
 
  Write #file, puntatore, <FONT color=#B22222><B>n</b></font>
laddove <FONT color=#B22222>''n''</font> rappresenta la quantità di byte, presenti nella variabile ''puntatore'', che dovranno essere scritti nel file.
+
laddove <FONT color=#B22222>'''n'''</font> rappresenta la quantità di byte, presenti nella variabile ''puntatore'', che dovranno essere scritti nel file. <SUP>&#091;[[#Note|Nota 1]]&#093;</sup>
  
  
Riga 14: Riga 13:
 
   Dim fl As File
 
   Dim fl As File
 
   Dim p As Pointer
 
   Dim p As Pointer
   Dim t As Stream
+
   Dim st As Stream
   Dim j As Byte
+
   Dim b As Byte
 
   
 
   
 +
<FONT color=gray>' ''Alloca un'area di memoria pari a dieci byte, che sarà puntata da una variabile di tipo "Puntatore":''</font>
 +
  p = Alloc(SizeOf(gb.Byte), 10)
 
   
 
   
  <FONT color=gray>' ''Allochiamo un'area di memoria pari a dieci byte,''
+
  <FONT color=gray>' ''Genera una variabile di tipo "Stream" dal "Puntatore", per poter scrivere nella variabile "Puntatore" medesima:''</font>
' ''che sarà puntata da una variabile di tipo "Puntatore":''</font>
+
  st = Memory p For Write
  p = Alloc(10)
 
 
   
 
   
 +
<FONT color=gray>' ''Scrive mediante la variabile di tipo "Stream" dieci byte all'interno di quell'area di memoria riservata:''</font>
 +
  For b = 97 To 106
 +
    Write #st, b As Byte
 +
  Next
 
   
 
   
<FONT color=gray>' ''Generiamo una variabile di tipo "Stream" dal "Puntatore",''
+
  fl = Open "<FONT color=gray>''/percorso/del/file''</font>" For Create
' ''per poter scrivere nella variabile "Puntatore" medesima:''</font>
 
  t = Memory p For Write
 
 
    
 
    
  <FONT color=gray>' ''Scriviamo mediante la variabile di tipo "Stream" dieci byte''
+
  <FONT color=gray>' ''Sposta il puntatore interno sul terzo byte dell'area di memoria riservata...''</font>
' ''all'interno di quell'area di memoria riservata:''</font>
+
  Seek #st, 2
  For j = 97 To 106
 
    Write #t, j As Byte
 
  Next
 
 
   
 
   
 +
<FONT color=gray>' ''...e scrive soltanto quattro byte, cominciando dal terzo, dell'area di memoria riservata puntata dalla variabile di tipo "Puntatore":''</font>
 +
  Write #fl, p, <FONT color=#B22222><B>4</b></font>
 
   
 
   
  fl = Open "''/percorso/del/file''" For Write Create
+
  fl.Close
    
+
   st.Close
<FONT color=gray>' ''Spostiamo il puntatore interno sul terzo byte dell'area di memoria riservata...''</font>
+
  Free(p)
  Seek #fl, 2
 
 
<FONT color=gray>' ''...e scriviamo soltanto quattro byte, cominciando dal terzo,''
 
' ''dell'area di memoria riservata puntata dalla variabile di tipo "Puntatore":''</font>
 
  Write #fl, p, <FONT color=#B22222><B>4</b></font>
 
 
   
 
   
 
  '''End'''
 
  '''End'''
 +
 +
 +
 +
=Note=
 +
[1] Vedere anche il seguente paragrafo: [[Write#Scrivere_in_un_file_i_dati_contenuti_in_un.27area_di_memoria_puntata_da_un_Puntatore|Scrivere in un file i dati contenuti in un'area di memoria puntata da un Puntatore]]

Versione attuale delle 17:55, 19 mag 2023

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. [Nota 1]


Esempio:

Public Sub Main()

 Dim fl As File
 Dim p As Pointer
 Dim st As Stream
 Dim b As Byte

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

' Genera una variabile di tipo "Stream" dal "Puntatore", per poter scrivere nella variabile "Puntatore" medesima:
 st = Memory p For Write

' Scrive mediante la variabile di tipo "Stream" dieci byte all'interno di quell'area di memoria riservata:
 For b = 97 To 106
   Write #st, b As Byte
 Next

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

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

 fl.Close
 st.Close
 Free(p)

End


Note

[1] Vedere anche il seguente paragrafo: Scrivere in un file i dati contenuti in un'area di memoria puntata da un Puntatore