2012-06-20 12 views
5

Mam DLL, które dane outpus do strumienia. Ale dodaje on przyrostek i prefiks, których nie chcę. Mogę utworzyć obiekt MemoryStream, pozwolić bibliotece DLL na wyprowadzenie danych, a następnie przyciąć go, ale może być kilka GB danych, więc chcę, aby był on zapisywany bezpośrednio do pliku (FileStream). Myślę, że najlepszym rozwiązaniem jest stworzenie własnej klasy Stream. Więc zrobiłem:Jak wykryć koniec strumienia?

function TFileStream2.Write(const Buffer; Count: Integer): Longint; 

gdzie mogę sprawdzić stanowisko i jeśli jest to = 0 wtedy odrzucić kilka pierwszych bajtów z bufora. W ten sposób mogę przyciąć początek pliku. Ale jak wykryć koniec strumienia, aby odrzucić niektóre bajty od końca?

Odpowiedz

6

Po zniszczeniu obiektu strumienia po prostu odetnij ostatnią część pliku. Możesz to zrobić, modyfikując właściwość Size.

+0

Ale myślę, że bajty są już zapisane na dysku. Czy w ten sposób można skrócić plik? – Tom

+0

To zadziałało! Wielkie dzięki, David! – Tom

Powiązane problemy