2012-06-20 29 views
5

Tôi có một tệp DLL xuất dữ liệu ra luồng. Nhưng nó thêm một postfix và tiền tố tôi không muốn. Tôi có thể tạo một MemoryStream, để cho DLL xuất dữ liệu và sau đó cắt nó, nhưng có thể có một vài GB dữ liệu, vì vậy tôi chỉ muốn nó được lưu trực tiếp vào một tập tin (FileStream). Tôi nghĩ giải pháp tốt nhất là tạo ra lớp Stream riêng. Vì vậy, tôi thực hiện:Cách phát hiện kết thúc luồng?

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

nơi tôi kiểm tra vị trí và nếu nó là = 0 sau đó tôi bỏ vài byte đầu tiên từ bộ đệm. Bằng cách này tôi có thể cắt đầu của tập tin. Nhưng làm thế nào tôi có thể phát hiện kết thúc của dòng để tôi có thể loại bỏ một số byte từ cuối?

Trả lời

6

Khi đối tượng luồng bị hủy, chỉ cần cắt phần cuối cùng của tệp. Bạn có thể thực hiện việc này bằng cách sửa đổi thuộc tính Size.

+0

Nhưng tôi nghĩ rằng các byte đã được lưu vào đĩa. Tập tin có thể được rút ngắn theo cách này không? – Tom

+0

Nó hoạt động! Cảm ơn rất nhiều, David! – Tom

Các vấn đề liên quan