Differenze tra le versioni di "Eliminare un byte all'interno di un file binario"

Da Gambas-it.org - Wikipedia.
 
(5 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Se vi è necessità di <Span style="text-decoration:underline">eliminare</span> un byte all'interno di un file binario, è possibile adottare la seguente procedura, che può essere suddivisa in tre fasi:
+
Se vi è necessità di <Span style="text-decoration:underline">eliminare</span> un byte all'interno di un file binario, è possibile anche adottare la seguente procedura, che può essere suddivisa in tre fasi:
 
* lettura dei dati presenti nel file;
 
* lettura dei dati presenti nel file;
 
* eliminazione del byte prescelto;
 
* eliminazione del byte prescelto;
* riscrittura ''ex novo'' del file senza il byte eliminato:
+
* riscrittura ''ex novo'' del file senza il byte eliminato.
  
  '''Public''' Sub Button1_Click()
+
Per realizzare queste tre fasi si utilizzeranno alcune risorse dell'array di tipo Byte[]:
 +
  Public Sub Main()
 
   
 
   
Dim fl As File
+
  Dim fl As File
Dim g, j As Byte
+
  Dim bb As New Byte[]
Dim gg As New Byte[]
 
Dim i As Integer
 
 
      
 
      
   fl = Open "percorso_del_file" For Read
+
   fl = Open "<FONT color=darkgreen>''/percorso/del/file''</font>" For Read
 
 
<FONT color=#006400>' ''leggiamo il file interamente (oppure, se conosciamo
 
' ''l'esatta posizione del byte da elimanre, fino a quel byte da eliminare):''</font>
 
  While Not Eof(fl)
 
    Read #fl, g
 
<FONT color=#006400>' ''Inseriamo ciascun byte del file in una variabile array di tipo Byte:''</font>
 
    gg.Add(g)
 
  Wend
 
 
    
 
    
 +
  bb = New Byte[Lof(fl)]
 +
 +
<FONT color=gray>' ''Legge il file interamente, inserendo ciascun byte del file in una variabile array di tipo Byte[]:''</font>
 +
  bb.Read(fl, 0, Lof(fl))
 +
 
   fl.Close
 
   fl.Close
 
    
 
    
 +
<FONT color=gray>' ''Rimuove il byte indicandone la relativa posizione nell'indice array (in questo esempio viene eliminato il valore-byte d'indice 4):''</font>
 +
  bb.Remove(4)
 +
 
 +
  fl = Open "<FONT color=darkgreen>''/percorso/del/file''</font>" For Create
 
   
 
   
  <FONT color=#006400>' ''Rimuoviamo il byte indicandone la relativa posizione nell'indice array:''</font>
+
  <FONT color=gray>' ''Riscrive ex novo il file leggendo dalla variabile array, priva ormai del byte che si doveva eliminare:''</font>
   gg.Remove(i)
+
   bb.Write(fl, 0, bb.Count)
 
 
  fl = Open percorso For Create
 
 
   
 
   
<FONT color=#006400>' ''Riscriviamo ex novo il file leggendo dalla variabile array,:''
+
  fl.Close
' ''priva ormai del byte che dovevamo eliminare:''</font>
 
  For j = 0 To gg.Max
 
    g = gg[j]
 
    Write #fl, g As Byte
 
  Next
 
 
  fl.Close
 
 
   
 
   
  '''End'''
+
  End

Versione attuale delle 09:59, 24 giu 2024

Se vi è necessità di eliminare un byte all'interno di un file binario, è possibile anche adottare la seguente procedura, che può essere suddivisa in tre fasi:

  • lettura dei dati presenti nel file;
  • eliminazione del byte prescelto;
  • riscrittura ex novo del file senza il byte eliminato.

Per realizzare queste tre fasi si utilizzeranno alcune risorse dell'array di tipo Byte[]:

Public Sub Main()

  Dim fl As File
  Dim bb As New Byte[]
   
  fl = Open "/percorso/del/file" For Read
  
  bb = New Byte[Lof(fl)]

' Legge il file interamente, inserendo ciascun byte del file in una variabile array di tipo Byte[]:
  bb.Read(fl, 0, Lof(fl))

  fl.Close
  
' Rimuove il byte indicandone la relativa posizione nell'indice array (in questo esempio viene eliminato il valore-byte d'indice 4):
  bb.Remove(4)
 
  fl = Open "/percorso/del/file" For Create

' Riscrive ex novo il file leggendo dalla variabile array, priva ormai del byte che si doveva eliminare:
  bb.Write(fl, 0, bb.Count)

  fl.Close

End