Differenze tra le versioni di "Scrivere i valori contenuti da un file in un'area riservata di memoria"

Da Gambas-it.org - Wikipedia.
 
(5 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Per scrivere i valori contenuti all'interno di un'area riservata di memoria puntata da una variabile di tipo ''Puntatore'', si procederà innanzitutto a leggere il file e ad assegnare i dati letti in una variabile di tipo ''Stringa''. Successivamente si provvederà a scrivere mediante i ''Memory Stream'' i valori, contenuti dalla predetta variabile ''Stringa'', nell'area di memoria allocata.
+
Per scrivere i dati, letti da un file, all'interno di un'area riservata di memoria puntata da un ''Puntatore'', si procederà innanzitutto ad assegnare tali dati in una variabile di tipo ''Stringa''. Successivamente si provvederà a scrivere mediante i ''Memory Stream'' i valori, contenuti dalla predetta variabile ''Stringa'', nell'area di memoria allocata.
  
  
 
Mostriamo un semplice esempio:
 
Mostriamo un semplice esempio:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim fl As File
 
   Dim fl As File
Riga 10: Riga 10:
 
   Dim st As Stream
 
   Dim st As Stream
 
   
 
   
  fl = Open "''/percorso/del/file/da/leggere''" For Read
+
  fl = Open "<FONT Color=darkgreen>''/percorso/del/file/da/leggere''</font>" For Read
  Read #fl, s, -256
+
  Read #fl, s, Lof(fl)
  fl.Close
+
 
 
 
  <FONT Color=gray>' ''Viene allocata una quantità di memoria sufficiente a contenere i dati del file:''</font>
 
  <FONT Color=gray>' ''Viene allocata una quantità di memoria sufficiente a contenere i dati del file:''</font>
  p = Alloc(Lof(fl))
+
  p = Alloc(SizeOf(gb.Byte), Lof(fl))
 
  st = Memory p For Write
 
 
   
 
   
  <FONT Color=gray>' ''Si procede a scrivere i dati del file attualmente contenuti dalla variabile Stringa:''</font>
+
  <FONT Color=gray>' ''Dall'area riservata di memoria si genera una variabile "Stream" per potervi scrivere:''</font>
  Write #st, s
+
  st = Memory p For Write
 
   
 
   
  <FONT Color=gray>' ''Qui vengono poste le istruzioni che utilizzano la memoria allocata.''
+
  <FONT Color=gray>' ''Si procede a scrivere nell'area riservata di memoria i dati del file ora contenuti dalla variabile Stringa:''</font>
  ......
+
  Write #st, s
  ......</font>
 
 
   
 
   
 +
<FONT Color=gray>' ''Si fa qualcosa con l'area riservata di memoria ora contenente i dati sopra scritti:''</font>
 +
  ......
 
   
 
   
  <FONT Color=gray>' ''Viene liberata la memoria precedentemente allocata e chiuso il flusso:''</font>
+
<FONT Color=gray>' ''Viene chiuso il flusso di dati:''</font>
  Free(p)
+
  st.Close
  st.Close
+
  <FONT Color=gray>' ''Viene liberata la memoria precedentemente allocata e ci si assicura che il Puntatore non punti ad alcun indirizzo di memoria rilevante:''</font>
 +
  Free(p)
 +
  p = 0
 +
<FONT Color=gray>' ''Viene chiuso il file:''</font>
 +
  fl.Close
 
   
 
   
  '''End'''
+
  End

Versione attuale delle 16:15, 7 giu 2024

Per scrivere i dati, letti da un file, all'interno di un'area riservata di memoria puntata da un Puntatore, si procederà innanzitutto ad assegnare tali dati in una variabile di tipo Stringa. Successivamente si provvederà a scrivere mediante i Memory Stream i valori, contenuti dalla predetta variabile Stringa, nell'area di memoria allocata.


Mostriamo un semplice esempio:

Public Sub Main()

 Dim fl As File
 Dim s As String
 Dim p As Pointer
 Dim st As Stream

 fl = Open "/percorso/del/file/da/leggere" For Read
 Read #fl, s, Lof(fl)
 
' Viene allocata una quantità di memoria sufficiente a contenere i dati del file:
 p = Alloc(SizeOf(gb.Byte), Lof(fl))

' Dall'area riservata di memoria si genera una variabile "Stream" per potervi scrivere:
 st = Memory p For Write

' Si procede a scrivere nell'area riservata di memoria i dati del file ora contenuti dalla variabile Stringa:
 Write #st, s

' Si fa qualcosa con l'area riservata di memoria ora contenente i dati sopra scritti:
 ......

' Viene chiuso il flusso di dati:
 st.Close
' Viene liberata la memoria precedentemente allocata e ci si assicura che il Puntatore non punti ad alcun indirizzo di memoria rilevante:
 Free(p)
 p = 0
' Viene chiuso il file:
 fl.Close

End