2012-06-20 12 views
5

Ich habe eine DLL, die Daten in einen Stream ausgibt. Aber es fügt ein Postfix und ein Präfix hinzu, das ich nicht will. Ich kann einen MemoryStream erstellen, lassen Sie die DLL die Daten ausgeben und dann schneiden Sie es, aber es kann ein paar GB Daten sein, so will ich nur es direkt in einer Datei (FileStream) gespeichert werden. Ich denke, die beste Lösung ist, eigene Stream-Klasse zu erstellen. Also machte ich:Wie erkennt man das Ende des Streams?

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

wo ich Position überprüfen und wenn es 0 = dann verwerfen wir erste paar Bytes aus dem Puffer. So kann ich den Anfang der Datei schneiden. Aber wie kann ich Ende des Streams erkennen, so dass ich einige Bytes vom Ende verwerfen kann?

Antwort

6

Wenn das Stream-Objekt zerstört wird, schneiden Sie einfach den letzten Teil der Datei ab. Sie können dies tun, indem Sie die Eigenschaft Size ändern.

+0

Aber ich denke, die Bytes sind bereits auf der Festplatte gespeichert. Kann eine Datei auf diese Weise verkürzt werden? – Tom

+0

Es hat funktioniert! Vielen Dank, David! – Tom

Verwandte Themen