2012-06-20 7 views
5

Ho una DLL che invia i dati a uno stream. Ma aggiunge un postfix e un prefisso che non voglio. Posso creare un MemoryStream, lasciare che la DLL restituisca i dati e poi tagliarli, ma ci possono essere alcuni GB di dati, quindi voglio solo che vengano salvati direttamente in un file (FileStream). Penso che la soluzione migliore sia creare la propria classe Stream. Così ho fatto:Come rilevare la fine del flusso?

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

dove controllare la posizione e se è = 0 allora io scartare primi byte dal buffer. In questo modo posso tagliare l'inizio del file. Ma come posso rilevare la fine del flusso in modo da poter eliminare alcuni byte dalla fine?

risposta

6

Quando l'oggetto flusso viene distrutto, è sufficiente ritagliare la parte finale del file. È possibile farlo modificando la proprietà Size.

+0

Ma penso che i byte siano già salvati su disco. Un file può essere abbreviato in questo modo? – Tom

+0

Ha funzionato! Grazie mille, David! – Tom