Differenze tra le versioni di "Eliminare un byte all'interno di un file binario"
Da Gambas-it.org - Wikipedia.
Riga 6: | Riga 6: | ||
'''Public''' Sub Button1_Click() | '''Public''' Sub Button1_Click() | ||
− | + | Dim fl As File | |
− | + | Dim g, j As Byte | |
− | + | Dim gg As New Byte[] | |
− | + | Dim i As Integer | |
− | + | fl = Open "<FONT color=gray>''/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> | ||
+ | While Not Eof(fl) | ||
+ | Read #fl, g | ||
+ | <FONT color=#006400>' ''Inserisce ciascun byte del file in una variabile array di tipo Byte:''</font> | ||
+ | gg.Add(g) | ||
+ | Wend | ||
− | + | fl.Close | |
− | |||
+ | <FONT color=#006400>' ''Rimuove il byte indicandone la relativa posizione nell'indice array:''</font> | ||
+ | gg.Remove(i) | ||
+ | |||
+ | fl = Open "<FONT color=gray>''/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=#006400>' '' | ||
− | |||
For j = 0 To gg.Max | For j = 0 To gg.Max | ||
g = gg[j] | g = gg[j] |
Versione attuale delle 07:58, 18 mag 2023
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