Visual Basic Simple
Informazioni aggiuntive sui nomi di file in Windows
Sincronizza Indice
Sincronizza Indice
Scarica il progetto
Scarica il progetto
Scarica il testo dell'articolo
Testo dell'articolo
Stampa l'articolo
Stampa l'articolo

Microsoft Windows 95 proviene da un'evoluzione del sistema Microsoft Windows 3.1, sistema a finestre basato sul sistema operativo MS-DOS. Questo sistema operativo memorizzava i files in un'area del disco detta FAT (File Allocation Table - Tavola di allocazione files).
All'interno della FAT del vecchio MS-DOS i nomi dei files risiedevano nel formato 8.3, ovvero dedicando fino a 8 caratteri per il nome più 3 caratteri per l'estensione del file, separati tra loro da un punto.

Essendo Windows 95 nipote di MS-DOS, per questioni di compatibilità, è stato costretto a mantenere tale formato di memorizzazione dei files (8.3). Tuttavia, Windows 95, ha introdotto la possibilità di denominare i files con nomi ed estensioni lunghe oltre il normale limite di DOS.

Come conciliare queste due affermazioni?
Ebbene, la modifica sostanziale nel file system che Windows 95 ha introdotto è stata quella della PM-FAT (Protected Mode File Allocation Table), detta anche VFAT (Virtual FAT): un sistema di memorizzazione dei files alquanto anomala, ma funzionante.

Le memorizzazioni dei files sono effettuate nel formato più ampio, messo a disposizione di Windows 95, ma, all'interno della FAT continuano ad esistere i nomi dei files in formato breve. Come avviene questo?
Ogni volta che Windows 95 memorizza un file nella FAT crea anche un alias, un nome alternativo, in formato 8.3. Quando proviamo ad analizzare un disco contenente nomi di files lunghi di Windows 95, continuiamo a vedere dei nomi brevi, nella forma canonica, ma nel momento in cui lo stesso disco viene letto da un sistema Windows, è possibile accedere ai nomi di file più ampi.

Gli alias dei nomi dei files sono sempre in maiuscolo, come definito dal formato FAT di MS-DOS, sebbene in Windows sia possibile scrivere nomi in minuscolo. Ogni alias è formato da una coda numerica (Numbered tail) che taglia il nome del file al 6° carattere. La coda numerica è formata dal carattere ASCII 126 (~), seguito da un numero da 1 a 9.

Ad esempio il file: Documento1.Doc viene memorizzato con l'alias DOCUME~1.DOC. Se nella stessa cartella esiste un file con nome DOCUME~1.DOC, l'alias prenderà il nome DOCUME~2.DOC, oppure DOCUME~3.DOC e così via, fino a trovare un nome di file libero. Il superamente del numero 9 della coda provoca un accorciamento della parte del file precedente ad essa. Otterremmo così DOCUM~10.DOC e così via.

Quando si opera con programmi progettati per MS-DOS, è molto probabile che i nomi dei files vengano accidentalmente corrotti, perdendo il formato lungo.

In Visual Basic l'istruzione DIR ci riporta sempre il nome di file lungo (a meno che questo non sia stato corrotto da qualche applicazione DOS), per cui è bene non affidarsi ad un matching (corrispondenza) del nome fornito con quello ricevuto.
Ad esempio l'istruzione Nome = Dir("C:\PROGRA~1", vbDirectory) potrebbe restituire nella variabile Nome il valore "Programmi", differente dal "PROGRA~1" fornito in entrata.

Esiste una funzione API per ottenere il nome MS-DOS di un file. La funzione si chiama GetShortPathName. Quando si lavora con files temporanei è bene affidarsi, quanto più possibile a files nel formato DOS convenzionale 8.3, per evitare spiacevoli inconvenienti di conversione o cambio di nome automatico.

Fibia FBI
10 Dicembre 2000

Scarica il progetto
Scarica il progetto
Scarica il testo dell'articolo
Scarica il testo dell'articolo
Stampa l'articolo
Stampa l'articolo