Re: Problem mit SendStream und ReceiveBuf bei großen Dateien
1. Mär 2008, 20:47
Folgendes zu deinem bisherigen Code:
- du müsstest definitv Warnungen vom Compiler bekommen, da du z.B. SubString bei GetFileInfo() nicht vor der ersten Abfrage initialisierst, etc (glücklicherweise macht das Delphi aufgrund der Referenzzählung)
- Du suchst nach dem Teil string zur Teilung als ganzes. Was ist aber wenn in dem empfangenen Block gerade mal "#6/head" angekommen ist? Dann findest du es nicht, schreibst es so weg. Damit ist die empfangene Datei schon verändert und du bekommst niemals diese Trennung mehr raus.
- Was ist, wenn in dem empfangen Block Restdaten vom File sind und ein Header vom nächsten File? Ich sehe nicht, wo du diesen Rest noch in die alte Datei schreibst...
- Die Funktion GetFileInfo() ist recht unperformant, wenn du die Zeichen einzelnd kopierst anstatt als Block von Text[] zu SubString
- Warum nutzt du die Service Eigenschaften der Sockets und belegst damit definierte Protkolle anstatt dir einfach einen freuen Port zu schnappen?
- Warum ziehst du dir bei TSendFile die komplette Datei in einen Memorystream? Versende dann mal bitte ein 4,7 GB DVD Image mit der Komponente... Mit anderen Worten: Warum nicht allgemein TStream und du übergibst bei einer Datei explizit TFileStream Instanz?
Nur mal so beim rüberfliegen. Kann natürlich sein, dass ich manches falsch bzw. nicht gesehen habe...
|