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() | |
Dim fl As File | Dim fl As File | ||
Riga 11: | Riga 11: | ||
Dim i As Integer | Dim i As Integer | ||
− | fl = Open "<FONT color= | + | fl = Open "<FONT color=darkgreen>''/percorso/del/file''</font>" For Read |
− | <FONT color= | + | <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= | + | <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= | + | <FONT color=gray>' ''Rimuove il byte indicandone la relativa posizione nell'indice array:''</font> |
gg.Remove(i) | gg.Remove(i) | ||
− | fl = Open "<FONT color= | + | fl = Open "<FONT color=darkgreen>''/percorso/del/file''</font>" For Create |
− | <FONT color= | + | <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 |
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