Einzelnen Beitrag anzeigen

Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#1

Datei mit TStream kopieren

  Alt 21. Nov 2007, 17:38
Hi,
Ich möchte gern eine Datei per TFilestream einlesen und dann wiederrum per Tfilestream auch wieder speichern. Im Endeffekt möchte ich auf diese Weise eine Datei übers Netzwerk kopieren und damit bei einem Verbindungsabbruch nicht alles weg ist möchte ich die Datei stückchenweise rüberschicken.
Also Datei öffnen, die ersten XX Bytes lesen und auf der Netzwerkfreigabe speichern. Die nächsten XX Bytes lesen, speichern usw. Wenn jetzt die Verbindung abbricht mache ich nach wiederherstellung derselbigen einfach da weiter wo ich aufgehört habe. Soweit die Theorie.

Also hab ich mir gedacht ich definiere erstmal einen Puffer vom Typ Variant weil ich ja keine Ahnung hab was für Daten kommen und es mich ja auch nicht interessiert, ich muss es ja nur kurz zwischenspeichern. Als nächstes öffne ich einen Input und einen Output Stream.

Delphi-Quellcode:
var StreamIn, StreamOut:TStream;
   i,buffersize:integer;
   buffer:Variant;
begin
  buffersize:=strtoint(edit3.text);
  StreamIn := TFileStream.Create(edit1.text,fmOpenRead);
  StreamOut := TFileStream.Create(edit2.text, fmCreate);
so jetzt möchte ich solange immer wieder den puffer lesen und schreiben bis ich fertig bi
Delphi-Quellcode:
  for i:=1 to StreamIn.Size div buffersize do
  begin
    StreamIn.ReadBuffer(buffer,buffersize);
    StreamOut.WriteBuffer(buffer,buffersize);
  end;
  StreamIn.Free;
  Streamout.free;

Wenn ich das so mache kopiert er die datei einwandfrei (buffersize=1 erstmal) aber gibt folgende Fehlermeldung aus: Ungültiger Variant Typ.

Per Einzelanweisung hab ich dann herausgefunden, das der Fehler erst dann ausgegeben wird, wenn alles kopiert wurde, auch wenn ich bspw nur 10 bytes übertrage...
weiss jemand wo der fehler liegt? Ist der Ansatz an sich vielleicht schon kappes?

Dank schonmal im vorraus
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat