Newsgroup: it.comp.programmare
Titolo: formato dei file cos'e'?

Mi sono sempre chiesto cos'e' il formato di un file.
Eppure ho capito che cambia moltissimo da un formato all'altro.
Eppure non so ancora cos'e'.
Lo domando a voi.
Arrisentirci

 Arrisentirci
Basta che non mi chiedi cos'è quel portatazza che è ficcato nel case su cui
c'è scritto 32x :-)
Ciao

 c'è scritto 32x :-)
Questa, signori miei, è una dotta citazione...


Ahhhhh... è un portatazza! Mi sono sempre chiesto come tenere in acqua i
gambi delle rose che ci mettevo dentro... :-)
MindFlavor.

 Questa, signori miei, è una dotta citazione...
E se ti dicessi che questa domanda mi è stata fatta sul serio ?
E la signora che me l'ha fatta non scherzava affatto !

 c'è scritto 32x :-)
Portatazza??????
E io che c'ho sempre messo dentro i C :-DDD
Ciao, Alex (To)

 Lo domando a voi.
Allora, sai come funziona un computer?
Non parlo di windows, programmi o sistemi operativi....
In pratica i computer lavorano su bit, ogni cosa è in realtà una gestione di
bit, milioni di milioni di bit con le macchine attuali.
Un file non è altro che una sequenza di bit memorizzati su qualcosa.
Il formato di un file in realtà esiste solo in concetti di più alto livello
ma a livello reale non cambia nulla.
Non c'è differenza tra un file .jpg e uno .exe Se li apro con un editor
leggo una loro "rappresentazione" di caratteri, posso fare la stessa cosa
con un .txt trasformandolo in exe solo che il SO che tenta di eseguire le
istruzioni si impalla e "muore".....
Se hai domande falle, il discorso è vastissimo
--
| /
| \Byte - Andrea Briganti
E-Mail 
kbyt...@freemail.it
ICQ 40872731

Quello che hai detto gia' lo sapevo.
Mi rivolgo ad anakin
Intendevo ad esempio chi crea un formato?
C'e' qualcuno che lo progetta?
E cos'e'?
In queto senso
Ciao

>Se hai domande falle, il discorso è vastissimo
Dimmi tutto quello che sai
Un po troppo?
Almeno dammi l'indice di tutto quello che sai sull'argomento :-)
Ciao

In queto senso
??? Shpiegati meglio!!!
Byez
un DeK queto queto...
--
DeK - Delirio & Kaos
FAN n.1 del CrossPost e dell' OT :)
Visita One Big Mob - 
http://dek.hey.to

??? Shpiegati meglio!!!
Per esempio come si fa a creare un formato di file?
Come si progetta?
Ciao

 Almeno dammi l'indice di tutto quello che sai sull'argomento :-)
Guarda la cosa essenziale è una, poi tutto il resto sono dei ragionamento.
La cosa principale è che ogni file è memorizzato come sequenza di bit.....
Poi un sistema operativo interpreta quel file in base all'estenzione, o ai
privilegi (prendo il caso di Unix), o al programma che si usa per aprirlo.
Il SO che tenta di eseguire un programma non fa altro che interpretare quei
bit considerandoli come codice macchina.
Un programma interpreta quei bit come un file da leggere, molte applicazioni
sono capaci di capire se è un loro file unicamente perchè quando li salvano
memorizzano nei primi byte un qualcosa che li identifica.
L'estenzione per win è utile per capire quale applicazione può leggere il
file...
Fai tu domande che è meglio! :-)


 Come si progetta?
Se io creo una applicazione X e i dati li salvo con una estenzione .xyz io
scrivo un formato interno per i dati.....


Come si progetta?
Mah, direi che il metodo "carta e penna" e' sempre valido.
Decidi in che modo rappresentare i dati.
In genere si parte con un header in cui si memorizzano delle
informazioni generali sul file (es. nome esteso, autore, sottoformato,
dimensioni, etc...)
Dopodiche vanno posti i blocchi dati.
Una volta deciso puoi (ma non e' "obbligatorio" anche se...) buttare
giu' delle procedure in un linguaggio di programmazione che producano
o aprano dei file nel formato che hai creato, partendo da un file
"grezzo".
Vediamo di fare un esempio.
Cio' che segue l'ho buttato giu' in tre quarti d'ora (contando anche
il tempo che mi ci e' voluto per farmi venire un'idea accettabile
per un formato... ormai hanno fatto veramente di tutto).
Dovrebbe coprire + o - tutti i fondamentali.
Ovviamente, il tutto andrebbe, in seguito, formalizzato meglio.
Ma poi anche io stenterei a capire quello che ho scritto.
Per cui preferisco una spiegazione esemplificativa.
L'IDIOZIA DEL SECOLO (o DE NONAVERUNKAXXODAFARE)
SCOPO
Voglio memorizzare un testo in cui uso solo 128 caratteri di base
(lettere, numeri e punteggiatura) consecutivi (come codice ASCII).
Supponiamo che non esistano tecniche di compressione: visto che
ogni carattere puo' essere memorizzato in 7 bit, decido di creare un
formato tale che 8 caratteri vengano messi in 7 byte.
TECNICA
Il record header e' a lunghezza variabile (non e' possibile
individuare a priori l'inizio del testo).
I campi dell'header sono a lunghezza variabile e vengono terminati da
un carattere null (' \0 ') ad eccezione di Charset e Offset(1 byte).
I record dati sono a lunghezza fissa di 7 byte.
La struttura dati termina quando viene incontrato un byte nullo ' \0 '
sia in un record in cui siano presenti altri dati sia (se necessario)
in un nuovo record appositamente creato (tutto nullo)
Il file sara' salvato, prevalentemente, con estensione TX7
DETTAGLI
Il file sara' composto di tre parti.
Un ID di lunghezza e contenuto fisso, un header formato da un numero
variabile di campi (alcuni a lunghezza fissa, altri a lunghezza
variabile), ed un numero indeterminato di record dati di lunghezza
fissa.
L' ID occupera' i primi tre byte e sara', in ASCII, T X 7
(Decimale: 84 88 55)
L' header e' cosi' strutturato
Oggetto: Contiene una breve descrizione dell'argomento del testo
Autore: Il nome (o i nomi) dell'autore (degli autori) dove disponibile
Charset (1 B): Contiene il codice del set di caratteri usato, se
	standard. Se il codice e' ' \0 ' significa che e' stato
	utilizzato un set non standard. (eventuale tabella)
Charset Path (opzionale): Presente solo se Charset = ' \0'
	Contiene la path che punta al set di caratteri non standard
	utilizzato per il testo.
Offset (1 B): E' il codice del primo carattere (default=32)
I dati sono rappresentati da record dello stesso formato.
Un record dati e' cosi' ottenuto.
Si prende una serie di otto caratteri:
	ABCDEFGH
Si considera la rappresentazione ASCII di ognuno:
65 66 67 68 69 70 71 72
Si sottrare ad ognuno, l'offset (per es. 32 (e' il valore di default))
33 34 35 36 37 38 39 40
Si considera la rappresentazione binaria:
| 00100001 00100010 00100011 00100100 00100101 00100110 00100111 00101000
Come si puo' vedere, il bit + significativo (se l'offset e' stato
scelto bene) e' uno zero, per cui eliminiamolo ottenendo:
0100001 0100010 0100011 0100100 0100101 0100110 0100111 0101000
E raggrupando in byte si ottiene:
01000010 10001001 00011010 01000100 10101001 10010011 10101000
Che diventa, quindi:
34 137 26 68 169 147 168
E questo e' il nostro record dati.
Il procedimento va reiterato fino al EOF.
Se l'ultimo byte dell'ultimo record dati non e' un ' \0 ', va aggiunto
un ulteriore record di sette byte nulli.
Cio' consentira', in futuro, di espandere il supporto del formato,
aggiungendo ulteriori dati in coda (es. charset, immagini, caratteri
a 8 bit, che non rientrano nei 128 stabiliti...)
FINE
A voi la parola.
Byez
un DeK e l'arte dello cazzeggio
