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

Da Gambas-it.org - Wikipedia.
Riga 4: Riga 4:
 
* riscrittura ''ex novo'' del file senza il byte eliminato:
 
* riscrittura ''ex novo'' del file senza il byte eliminato:
  
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
   
 
   
 
   Dim fl As File
 
   Dim fl As File
Riga 11: Riga 11:
 
   Dim i As Integer
 
   Dim i As Integer
 
      
 
      
   fl = Open "<FONT color=gray>''/percorso/del/file''</font>" For Read
+
   fl = Open "<FONT color=darkgreen>''/percorso/del/file''</font>" For Read
 
    
 
    
  <FONT color=#006400>' ''Legge il file interamente (oppure, se si conosce l'esatta posizione del byte da eliminare, fino a quel byte da eliminare):''</font>
+
  <FONT color=gray>' ''Legge il file interamente (oppure, se si conosce l'esatta posizione del byte da eliminare, fino a quel byte da eliminare):''</font>
 
   While Not Eof(fl)
 
   While Not Eof(fl)
 
     Read #fl, g
 
     Read #fl, g
  <FONT color=#006400>' ''Inserisce ciascun byte del file in una variabile array di tipo Byte:''</font>
+
  <FONT color=gray>' ''Inserisce ciascun byte del file in una variabile array di tipo Byte:''</font>
 
     gg.Add(g)
 
     gg.Add(g)
 
   Wend
 
   Wend
Riga 22: Riga 22:
 
   fl.Close
 
   fl.Close
 
    
 
    
  <FONT color=#006400>' ''Rimuove il byte indicandone la relativa posizione nell'indice array:''</font>
+
  <FONT color=gray>' ''Rimuove il byte indicandone la relativa posizione nell'indice array:''</font>
 
   gg.Remove(i)
 
   gg.Remove(i)
 
    
 
    
   fl = Open "<FONT color=gray>''/percorso/del/file''</font>" For Create
+
   fl = Open "<FONT color=darkgreen>''/percorso/del/file''</font>" For Create
 
   
 
   
  <FONT color=#006400>' ''Riscrive ex novo il file leggendo dalla variabile array, priva ormai del byte che si doveva eliminare:''</font>
+
  <FONT color=gray>' ''Riscrive ex novo il file leggendo dalla variabile array, priva ormai del byte che si doveva eliminare:''</font>
 
   For j = 0 To gg.Max
 
   For j = 0 To gg.Max
 
     g = gg[j]
 
     g = gg[j]
Riga 35: Riga 35:
 
   fl.Close
 
   fl.Close
 
   
 
   
  '''End'''
+
  End

Versione delle 09:39, 24 giu 2024

Se vi è necessità di eliminare un byte all'interno di un file binario, è possibile 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:
Public Sub Button1_Click()

 Dim fl As File
 Dim g, j As Byte
 Dim gg As New Byte[]
 Dim i As Integer
   
 fl = Open "/percorso/del/file" For Read
  
' Legge il file interamente (oppure, se si conosce l'esatta posizione del byte da eliminare, fino a quel byte da eliminare):
 While Not Eof(fl)
   Read #fl, g
' Inserisce ciascun byte del file in una variabile array di tipo Byte:
   gg.Add(g)
 Wend

 fl.Close
  
' Rimuove il byte indicandone la relativa posizione nell'indice array:
 gg.Remove(i)
 
 fl = Open "/percorso/del/file" For Create

' Riscrive ex novo il file leggendo dalla variabile array, priva ormai del byte che si doveva eliminare:
 For j = 0 To gg.Max
   g = gg[j]
   Write #fl, g As Byte
 Next

 fl.Close

End