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.
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!