Mi stavano ben fischiando le orecchie... :rollo:Originariamente inviato da flash.tato
nn ricordo il suo nick ma aveva l'avatar di Firefox che mangiava IE![]()
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).Originariamente inviato da flash.tato
Allora io voglio che se si apre un file lo apra in modalità esadecimale.
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:
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.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 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.![]()

Rispondi quotando