Streams, Streams, TStream in Delphi

Wat is een stream? TStream?

Een stream is wat de naam doet vermoeden: een stromende 'rivier van gegevens'. Een stream heeft een begin, een einde en je zit altijd ergens tussen deze twee punten in.

Gebruik makend van Delphi's TStream-objecten die u kunt lezen van of schrijven naar verschillende soorten opslagmedia, zoals schijfbestanden, dynamisch geheugen, enzovoort.

Welke gegevens kan een stream bevatten?

Een stream kan alles bevatten wat je maar wilt, in de volgorde die je wilt. In het voorbeeldproject bij dit artikel worden records van vaste grootte gebruikt voor eenvoud, maar u kunt elke combinatie van gegevens met variabele grootte naar een stream schrijven. Onthoud echter dat u verantwoordelijk bent voor het huishouden. Delphi kan op geen enkele manier 'onthouden' wat voor soort gegevens er in een stream zitten, of in welke volgorde!

Stromen versus arrays

Arrays hebben het nadeel dat ze een vaste grootte hebben die bij het compileren bekend moet zijn. Ok, je kunt dynamische arrays gebruiken.

instagram viewer

Een stream daarentegen kan opgroeien tot de grootte van het beschikbare geheugen, dat op de systemen van vandaag aanzienlijk groot is, zonder "huishoudelijke taken".

Een stream kan niet worden geïndexeerd, zoals een array dat wel kan. Maar zoals je hieronder zult zien, is het heel gemakkelijk om op en neer te lopen in een beek.

Streams kunnen in één simpele handeling worden opgeslagen / geladen naar / van bestanden.

Flavours of Streams

TStream is het basistype (abstract) voor stroomobjecten. Abstract zijn betekent dat TStream nooit als zodanig mag worden gebruikt, maar alleen in zijn afstammingsvormen. Kies voor het streamen van alle soorten informatie een afstammelingenklasse op basis van de specifieke gegevens- en opslagbehoeften. Bijvoorbeeld:

  • TFileStream (voor het werken met bestanden)
  • TMemoryStream (voor het werken met een geheugenbuffer)
  • TStringStream (voor het manipuleren van in-memory strings)
  • TBlobStream (voor het werken met BLOB-velden)
  • TWinSocketStream (voor lezen en schrijven over een socketverbinding)
  • TOleStream (voor het gebruik van een COM-interface om te lezen en te schrijven)

Zoals je zult zien, zijn TmemoryStream en TFileStream opmerkelijk uitwisselbaar en compatibel.

Voorbeeldproject downloaden!

instagram story viewer