Strumienie, strumienie, TStream w Delphi

Co to jest strumień? TStream?

Strumień jest tym, co sugeruje jego nazwa: płynąca „rzeka danych”. Strumień ma początek, koniec i zawsze jesteś gdzieś pomiędzy tymi dwoma punktami.

Za pomocą Delphi's Obiekty TStream, z których można czytać lub zapisywać na różnego rodzaju nośnikach pamięci, takich jak pliki dyskowe, pamięć dynamiczna i tak dalej.

Jakie dane może zawierać strumień?

Strumień może zawierać wszystko, co chcesz, w wybranej przez Ciebie kolejności. W przykładowym projekcie dołączonym do tego artykułu rekordy o stałej wielkości są używane w celu uproszczenia, ale można zapisać dowolną mieszankę danych o zmiennej wielkości do strumienia. Pamiętaj jednak, że jesteś odpowiedzialny za gospodarstwo domowe. W żaden sposób Delphi nie może „zapamiętać”, jakie dane są w strumieniu lub w jakiej kolejności!

Strumienie a tablice

Wadą macierzy jest ustalony rozmiar, który musi być znany w czasie kompilacji. Ok, możesz użyć dynamicznych tablic.

Z drugiej strony strumień może wzrosnąć do wielkości dostępnej pamięci, która jest znacznie większa w dzisiejszych systemach, bez żadnych obowiązków domowych.

instagram viewer

Strumień nie może być indeksowany, podobnie jak tablica. Ale jak zobaczysz poniżej, „chodzenie” w górę i w dół strumienia jest bardzo łatwe.

Strumienie można zapisywać / ładować do / z plików za pomocą jednej prostej operacji.

Aromaty strumieni

TStream jest podstawowym (abstrakcyjnym) typem klasy dla obiektów strumieniowych. Bycie abstrakcyjnym oznacza, że ​​TStream nigdy nie powinien być używany jako taki, ale tylko w jego formach potomnych. Aby przesyłać strumieniowo wszelkiego rodzaju informacje, wybierz klasę potomną zgodnie z konkretnymi potrzebami dotyczącymi danych i przechowywania. Na przykład:

  • TFileStream (do pracy z plikami)
  • TMemoryStream (do pracy z buforem pamięci)
  • TStringStream (do manipulowania ciągami w pamięci)
  • TBlobStream (do pracy z polami BLOB)
  • TWinSocketStream (do odczytu i zapisu przez połączenie przez gniazdo)
  • TOleStream (do używania interfejsu COM do odczytu i zapisu)

Jak zobaczysz, TmemoryStream i TFileStream są niezwykle wymienne i kompatybilne.

Pobierz przykładowy projekt!