Che cos'è uno stream? TStream?
Un flusso è ciò che suggerisce il nome: un "fiume di dati" che scorre. Uno stream ha un inizio, una fine e sei sempre da qualche parte tra questi due punti.
utilizzando Delphi di Oggetti TStream che puoi leggere o scrivere su vari tipi di supporti di memorizzazione, come file su disco, memoria dinamica e così via.
Quali dati possono contenere uno stream?
Uno stream può contenere tutto ciò che ti piace, nell'ordine che preferisci. Nel progetto di esempio che accompagna questo articolo, i record di dimensioni fisse vengono utilizzati per scopi di semplicità, ma è possibile scrivere qualsiasi flusso di dati di dimensioni variabili in un flusso. Ricorda, tuttavia, che tu sei responsabile della famiglia. Non è possibile che Delphi "ricordi" che tipo di dati sono in uno stream o in quale ordine!
Stream contro array
Le matrici hanno lo svantaggio di avere una dimensione fissa che deve essere nota al momento della compilazione. Ok, puoi usare array dinamici.
Un flusso d'altro canto, può crescere fino alla dimensione della memoria disponibile, che è di dimensioni considerevoli sui sistemi di oggi, senza alcun lavoro "domestico".
Un flusso non può essere indicizzato, come può fare un array. Ma come vedrai di seguito, "camminare" su e giù per un ruscello è molto semplice.
Gli stream possono essere salvati / caricati su / da file in una semplice operazione.
Flavors of Streams
TStream è il tipo di classe (astratto) di base per gli oggetti stream. Essere astratti significa che TStream non dovrebbe mai essere usato come tale, ma solo nelle sue forme discendenti. Per lo streaming di qualsiasi tipo di informazione, scegliere una classe discendente in base alle esigenze specifiche di archiviazione e dati. Per esempio:
- TFileStream (per lavorare con i file)
- TMemoryStream (per lavorare con un buffer di memoria)
- TStringStream (per manipolare stringhe in memoria)
- TBlobStream (per lavorare con i campi BLOB)
- TWinSocketStream (per leggere e scrivere su una connessione socket)
- TOleStream (per l'utilizzo di un'interfaccia COM per leggere e scrivere)
Come vedrai, TmemoryStream e TFileStream sono notevolmente intercambiabili e compatibili.
Scarica un progetto di esempio!