Newsgroup: it.comp.lang.delphi
Titolo: Filebin

Ciao a tutti
E da un po di tempo che programmo in Delphi 2.0.
Ho sempre fatto dei piccoli guchi e,vorrei aprofondire
le mie conoscenze.
Vorrei fare un programma ma non sono capace di creare
un archivio in modo birari.
Vorri che qualcuno mi metterbe sur la via,o se puo darmi
delle indicazioni o non sarebbe di rifiuto un piccolo esempio.
Vi ringrazio a tutti anche se non potete aiutarmi Grazie :-))





 wrote

ma certo che possiamo aiutarti.
L'archivio che tu cerchi di realizzare, consiste nella creazione di un tuo
formato proprietario che rappresenta ogni record dell'archivio.
Ora non so l'importanza dei dati in questo archivio ne la velocità e la
semplicità d'uso che tu vuoi ottenere.
Ti posso comunque dire che non è cosa semplice gestire un archivio in
binario ma nemmeno in modalità testo.
Se cerchi di ottenere le stesse funzionalità offerte da un archivio
database, allora troppo devi sudare per far qualcosa di simile e ottenere le
stesse prestazioni.
A parte questo, per rappresentare un record del tuo archivio, ti conviene
dichiarare un tipo di dato che è proprio un record.
Ad esempio:
type TMioRecord = record
            Nome       : string[50];
           Cognome : string[30];
          Telefono  : string[20];
        end;
in modo che puoi rappresentare con una sola variabile il record letto o
scritto su file.
Quindi se usi la classe TFileStream, fai così:
procedure Scrittura;
var SStream : TFileStream;
      MioRecord : TMioRecord;
begin
  SStream:=TFileStream('nome_file_del_tuo_archivio', fmCreate);
   SStream.Write(MioRecord, SizeOf(MioRecord));
   SStream.Free;
end;
procedure Lettura;
var LStream : TFileStream;
      MioRecord : TMioRecord;
begin
  LStream:=TFileStream.Create('nome_file_del_tuo_archivio', fmOpenRead);
  LStream.Read(MioRecord, SizeOf(MioRecord));
  LStream.Free;
end;
come vedi non mi sono sprecato tanto perchè sei tu che ti devi organizzare
la cosa secondo le tue esigenze. Aggiungi pure dei blocchi try -finally dove
necessario, cosa che io ho omesso ( per far prima ) nelle due procedure.
Poi c'è un'ultima cosa. Se il tuo file binario occupa 100 Mb, tu per
leggerlo dovrai fare un ciclo dall'inizio alla fine del file leggendo un
record alla volta che poi andrai a memorizzare in una TStringGrid ( per
dire ). Però questo procedimento è molto dispendioso di memoria perchè legge
tutti i 100 Mb e poi li butta in memoria. I sistemi database funzionano
differentemente altrimenti come si fa a lavorare su grossi archivi ?
Poi hai anche il problema dell'ordinamento, ricerca ecc......sempre in
termini di tempo di esecuzione !!
Sono tutte cose che si risolvono ma devi analizzare bene cosa vuoi ottenere
in modo da passare su un sistema database appena conviene.
Una delle cose belle dei file binari o dei file proprietari è che puoi
leggerli solo tu che hai stabilito il formato interno, quindi se ci vuoi
memorizzare qualcosa da nasconderci, puoi star quasi sicuro che essa rimane
inviolata. Attenzione che non parlo in termini assoluti, il problema della
sicurezza rimane sempre e non c'è nulla di totalmente sicuro ma
l'inviolabilità è solo una questione di tempo che dipende dal sistema usato
per proteggere i dati.
Ti saluto.....per ulteriori informazioni scrivi ancora.
Ciaoo !!
Antonio Tarolla