Guide e Tutorials:indexed | ||||||||||||||||||||
Studio sui file binari (Terza parte) - conversione dei dati Nel corso di quest'articolo si vedrà come un file binario può essere aperto in modo piuttosto agevole e come il suo contenuto può essere decodificato in carattere testuale, in codice di carattere ASCII ed in esadecimale nonchè come possa essere determinata la posizione di ogni singolo byte. Il primo passo da compiere consiste nell'importare una casella di testo nel progetto ed impostare la proprietà Multiline su True in modo da poter elencare il valore dei byte dall'alto al basso, come si vedrà tra poco. In secondo luogo è necessario aprire il file in modalità binaria ossia con accesso Binary Access Read. In questo modo il contenuto del file sarà accessibile:
E' comunque utilizzabile qualsiasi estensione associata ad un file binario con un certo limite di memoria per evitare di ottenere un esaurimento di memoria. Il secondo passaggio consiste nel dichiarare e cominciare a definire la variabile testuale al quale verrà associato il contenuto del file binario. Chiamiamo tale variabile 'Contenuto':
in questo modo si comincerà a visualizzare l'intestazione della casella di testo ossia rispettivamente la posizione occupata dal carattere, il carattere stesso, la sua conversione in ASCII e in esadecimale. Adesso si dovrà dichiarare la variabile che contiene il valore di ogni byte. Questa è un operazione necessaria per evitare di ottenere un errore del tipo: Quindi dichiariamo la variabile sByte come Byte:
ed associamo ad essa il valore dei byte che ad uno ad uno vengono recuperati dal file binario, finchè questo non termina. Per indicare il termine di un file binario si può utilizzare senza problemi il sistema comune a tutti i files, indicando cioè EOF(NumeroFile):
Adesso si può convertire il byte nel carattere che rappresenta il suo valore, attraverso la funzione Chr. Essa infatti converte il set di caratteri non ASCII utilizzati nei file binari in un carattere di testo perfettamente interpretabile (nota: il set ASCII ha al massimo 255 caratteri a disposizione). Quindi basterà utilizzare la Chr per ottenere il risultato desiderato, nel seguente modo:
Ecco che quindi risulta semplice andare a completare tutta la tabella delle conversioni per ogni carattere, nel seguente modo:
Nell'intestazione iniziale infatti il primo parametro da aggiungere ad ogni lettura di byte era la posizione. La posizione viene calcolata aggiungendo 1 al contatore denominato i ad ogni lettura di byte. sChar è invece il carattere associato al byte che, come abbiamo già visto, è possibile determinare attraverso la funzione Chr. il terzo parametro è codice ASCII del carattere mentre l'ultimo è il valore esadecimale. Chiudendo il ciclo con l'istruzione Loop e chiudendo il file con Close in questo modo :
è adesso possibile avviare l'applicazione e leggere la tabella di conversione, che si dovrebbe presentare in questo modo:
|