Kas yra srautas? TStream?
Srautas yra tai, ką rodo jo pavadinimas: tekanti „duomenų upė“. Srautas turi pradžią, pabaigą ir jūs visada esate kažkur tarp šių dviejų taškų.
Naudojant Delfų „TStream“ objektai, kuriuos galite skaityti iš įvairių laikmenų arba rašyti tokiose laikmenose, kaip disko failai, dinaminė atmintis ir pan.
Kokius duomenis srautas gali turėti?
Sraute gali būti viskas, kas jums patinka, tokia tvarka, kokia jums patinka. Prie šio straipsnio pridedamame projekto pavyzdyje paprastumo sumetimais naudojami fiksuoto dydžio įrašai, tačiau sraute galite parašyti bet kokį kintamo dydžio duomenų derinį. Tačiau atminkite, kad jūs esate atsakingi už namų ruošą. Nėra taip, kad „Delphi“ galėtų „atsiminti“, kokie duomenys yra sraute ar kokia tvarka!
Srautai prieš masyvus
Masyvų trūkumas yra tas, kad jie turi fiksuotą dydį, kuris turi būti žinomas kompiliavimo metu. Gerai, kad galite naudoti dinaminius masyvus.
Iš kitos pusės, srautas gali išaugti iki turimos atminties, kuri yra gana didelė šiuolaikinėse sistemose, be jokių „namų ruošos“ darbų.
Srautas negali būti indeksuojamas kaip masyvas. Tačiau, kaip pamatysite žemiau, „vaikščioti“ aukštyn ir žemyn upeliu yra labai lengva.
Srautai gali būti išsaugomi / įkeliami į failus iš failų, atliekant vieną paprastą operaciją.
Skonių srautai
TS srautas yra srauto objektų bazinis (abstraktus) klasės tipas. Būti abstrakčiu reiškia, kad „TStream“ niekada neturėtų būti naudojamas kaip toks, o tik palikuonių pavidalu. Norėdami srautiniu būdu transliuoti bet kokią informaciją, pasirinkite mažėjančią klasę pagal konkrečius duomenų ir saugojimo poreikius. Pavyzdžiui:
- TFileStream (darbui su failais)
- TMemoryStream (darbui su atminties buferiu)
- „TStringStream“ (manipuliuoti atminties eilutėmis)
- „TBlobStream“ (darbui su BLOB laukais)
- „TWinSocketStream“ (skaitymui ir rašymui per lizdo jungtį)
- „TOleStream“ (COM sąsajos naudojimui skaityti ir rašyti)
Kaip pamatysite, „TmemoryStream“ ir „TFileStream“ yra nepaprastai keičiami ir suderinami.
Atsisiųskite pavyzdinį projektą!