Streams, Streams, TStream dans Delphi

Qu'est-ce qu'un flux? TStream?

Un flux est ce que son nom suggère: un "fleuve de données" qui coule. Un flux a un début, une fin et vous êtes toujours quelque part entre ces deux points.

En utilisant Delphi Objets TStream à partir desquels vous pouvez lire ou écrire sur différents types de supports de stockage, tels que des fichiers disque, de la mémoire dynamique, etc.

Quelles données un flux peut-il contenir?

Un flux peut contenir tout ce que vous aimez, dans l'ordre que vous souhaitez. Dans l'exemple de projet accompagnant cet article, les enregistrements de taille fixe sont utilisés à des fins de simplicité, mais vous pouvez écrire n'importe quel mélange de données de taille variable dans un flux. N'oubliez pas cependant que _vous_ êtes responsable du ménage. Il n'y a aucun moyen pour Delphi de "se souvenir" du type de données contenues dans un flux, ou dans quel ordre!

Streams vs tableaux

Les tableaux ont l'inconvénient d'avoir une taille fixe qui doit être connue au moment de la compilation. Ok, vous pouvez utiliser des tableaux dynamiques.

instagram viewer

Un flux, d'autre part, peut atteindre la taille de la mémoire disponible, qui est considérablement grande sur les systèmes actuels, sans tâches "domestiques".

Un flux ne peut pas être indexé, comme le peut un tableau. Mais comme vous le verrez ci-dessous, "monter" et descendre un ruisseau est très facile.

Les flux peuvent être enregistrés / chargés dans / depuis des fichiers en une seule opération simple.

Flavours of Streams

TStream est le type de classe de base (abstrait) pour les objets de flux. Être abstrait signifie que TStream ne doit jamais être utilisé en tant que tel, mais uniquement sous ses formes descendantes. Pour diffuser tout type d'informations, choisissez une classe descendante en fonction des données spécifiques et des besoins de stockage. Par exemple:

  • TFileStream (pour travailler avec des fichiers)
  • TMemoryStream (pour travailler avec un tampon mémoire)
  • TStringStream (pour manipuler des chaînes en mémoire)
  • TBlobStream (pour travailler avec les champs BLOB)
  • TWinSocketStream (pour lire et écrire sur une connexion socket)
  • TOleStream (pour utiliser une interface COM pour lire et écrire)

Comme vous le verrez, TmemoryStream et TFileStream sont remarquablement interchangeables et compatibles.

Téléchargez l'exemple de projet!