2012-06-20 24 views
5

Veri akışı için bir outpus olan bir DLL var. Ama istemediğim bir sonek ve önek ekler. Bir MemoryStream oluşturabilirim, DLL'nin verileri çıkarmasına izin verin ve sonra kırpın, ancak birkaç GB veri olabilir, bu yüzden doğrudan bir dosyaya (FileStream) kaydedilmesini istiyorum. En iyi çözümün kendi Stream sınıfını oluşturmak olduğunu düşünüyorum. Yani yaptı:Akış sonu nasıl belirlenir?

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

Ben Konumunu kontrol edin ve = 0 ise o zaman Tampon gelen ilk birkaç bayt atmak nerede. Bu sayede dosyanın başlangıcını kırpabilirim. Fakat akışın ucunu nasıl algılayabilirim ki sonunda bazı baytları atabilirim?

cevap

6

Akış nesnesi yok edildiğinde, dosyanın son bölümünü kırpın. Bunu, Size özelliğini değiştirerek yapabilirsiniz.

+0

Ancak baytların zaten diske kaydedildiğini düşünüyorum. Bir dosya bu şekilde kısaltılabilir mi? – Tom

+0

Çalıştı! Çok sağol David! – Tom