Originariamente inviato da flash.tato
nn ricordo il suo nick ma aveva l'avatar di Firefox che mangiava IE
Mi stavano ben fischiando le orecchie... :rollo:
Originariamente inviato da flash.tato
Allora io voglio che se si apre un file lo apra in modalità esadecimale.
Questo è facile, basta usare gli stream, il modo di gestire i file (e non solo) del .NET Framework ereditato dal C++ (il miglior linguaggio che ci sia).
Tra parentesi, non si dice in modalità esadecimale, ma in modalità binaria, in contrapposizione alla modalità di testo, che converte determinati caratteri dallo stream - come il crlf e simili - in altri. La modalità binaria invece restituisce esattamente ciò che c'è nello stream.
Di seguito inserisco un esempio a tuo uso e consumo:
codice:
Imports System.IO
Public Sub Main()
'Piccolo esempio dell'utilizzo dei files binari (presuppone un'applicazione console)
'Variabile temporanea
Dim tint As Integer
'Apre il file
Dim str As New FileStream("c:\test.bin", FileMode.Open, FileAccess.ReadWrite)
'Si sposta all'offset 0x3D
str.Seek(&H3D, SeekOrigin.Begin)
'Legge il byte all'offset corrente e sposta avanti di 1 la posizione di lettura;
'restituisce -1 se siamo alla fine del file
tint = str.ReadByte()
If tint = -1 Then Console.WriteLine("End of file.") : Exit Sub
'Si sposta di 3 bytes avanti
str.Seek(3, SeekOrigin.Current)
'Scrive un byte all'offset corrente
str.WriteByte(94)
'Chiude il file
str.Close()
End Sub
Per operazioni più avanzate esistono le classi BinaryReader e BinaryWriter, ma considerando che il tuo programma deve eseguire operazioni abbastanza semplici Seek, ReadByte e WriteByte sono tutto ciò che ti serve.
Per il resto si tratta semplicemente di sistemare il programma in modo che segua la logica che hai descritto nel tuo primo post, operazione piuttosto semplice che lascio a te.