Mi da dei caratteri che non legge, forse sono dei caratteri speciali,....
Prendiamo come esempio l'
header del file .png:
facendo un'analisi esadecimale del file, vediamo che i primi 4 byte sono:
89 50 4E 47.
Il valore non "leggibile in stampa" è il primo: 89, che in decimale = 137. ...in vero, puoi vederlo nel suo "carattere" corrispondente,
se vuoi, in questa maniera:
e vedrai comparire questo carattere:
‰ ...ma ai tuoi fini quel valore in quanto "
carattere", preso cioè come carattere testuale (...quel tipo
strano di carattere), non t'aiuta.
Del resto io ritengo che la cosa non ti debba preoccupare, poiché non tutti i file riportano nel proprio
header la denominazione della propria estensione. Il file .png sì, ma per esempio il file Midi no; così anche l'.mp3 non riporta i caratteri "
mp3" nell'
header. Ciò vuol dire che non potrai "estrapolare" l'estensione da lì da convertirla poi in stringa per mostrarla... per esempio in console.
C'è da capire se gli
header di tutti i tipi di file, che ci interessano, si trovano tutti ai primissimi byte di ciascun file.
A mio modesto parere, dovresti fare un elenco dei byte identificativi di ciascun tipo di file. Conoscendo i byte
ricorrenti (quindi
universali) in un determinato tipo di file, potresti effettuare una "
selezione" (e quindi il "
riconoscimento", l'"
identificazione") del tipo di file tramite una corrispondenza fra byte "raccolti" nel file da analizzare, e elenco presente nel programma.
...una cosa di 'sto genere (la butto di getto):
Public Sub Main()
Dim firma, nomifile, stringa, stringafinale As String
Dim a As Integer
For Each nomifile In Dir(User.Home & "/test")
Print nomifile
stringa = File.Load(User.Home & "/test/" & nomifile)
' verifico - per esempio - i primi 4 byte/carattere. Sono costretto - ahimé - a 'sto ciclo,
' per poter mutare ogni singolo carattere nel corrispondente codice ASCII:
For a = 1 To 4
stringafinale = stringafinale & Asc(Mid(stringa, a, 1))
Next
'...e li comparo con il mio seguente "elenco" presente nel programma:
Select case stringafinale
Case "137807871"
Print "Il file " & nomifile & " è di tipo PNG !"
Case "........ "
Print "Il file " & nomifile & " è di tipo ..... !"
Case etc etc
Select End
stringafinale = Null
Next
End