Forum: Object-Pascal / Delphi-Language
Delphi
by Antigo,
22. Nov 2007
so ich hab das jetzt mal umgemodelt, also das selbe was ich mit streams gemacht hab auf untypisierte Dateien und Blockread/Blockwrite umgebaut.
var FInput,FOutput: File;
i, buffersize,transferred:integer;
buffer:array of Byte;
begin
buffersize:=strtoint(edit3.Text);
AssignFile(FInput,edit1.Text);
Reset(FInput,1);
Forum: Object-Pascal / Delphi-Language
Delphi
by Antigo,
22. Nov 2007
jo das funktioniert, auch wenn ich nicht verstehe warum.
Leider hilft das ganze bei meinem Problem überhaupt nicht. Die Schleife wird durchgegangen, die Progressbar geht auf fast 100% und die Anzeige im Label geht auf einen Wert der knapp unter StreamIn.Size / StreamIn.Size liegt. Dann dauerts eine Weile und erst DANN wird der darauf folgende Code
Progressbar1.Position:=100;
...
Forum: Object-Pascal / Delphi-Language
Delphi
by Antigo,
22. Nov 2007
Ich krieg das Problem nicht gelöst. Wollte es jetzt nochmal mit Buffer Variablen und den Read und Write Funktionen versuchen. Ausserdem wollte ich jetzt das das von lucki empfohlene Byte Array als Speicher nutzen.
var StreamIn, StreamOut:TStream;
i,buffersize:integer;
buffer:array of Byte;
begin
buffersize:=strtoint(edit3.Text);
StreamIn :=...
Forum: Object-Pascal / Delphi-Language
Delphi
by Antigo,
22. Nov 2007
Naja ich hab das Problem ständig. Mein WLAN ist nicht so superstabil und gibt gerade dann mal für eine sek. den Geist auf, wenn eine 300MB Datei grad zu 98% übertragen ist (im lokalen Netzwerk).
Wenn ich dann mit den Windows Funktionen am kopieren war, passiert ganz einfach folgendes: Alles ist weg. Und das möchte ich eben verhindern.
Forum: Object-Pascal / Delphi-Language
Delphi
by Antigo,
21. Nov 2007
den Fehler hab ich ja bereits eingesehen und korrigiert:
if StreamIn.Size mod buffersize > 0 then
StreamOut.CopyFrom(StreamIn,StreamIn.size mod buffersize);
Wenn sich also die Dateigröße nicht komplett in n buffersize große Pakte einteilen lässt (was ja sehr wahrscheinlich ist), dann wird zum schluss noch ein kleineres Paket mit dem Rest verschickt. Das sollte aber weniger als eine...
Forum: Object-Pascal / Delphi-Language
Delphi
by Antigo,
21. Nov 2007
Ich mache genau das, was du gepostet hast, nur in Einzelschritten
procedure TForm1.Button3Click(Sender: TObject);
var StreamIn, StreamOut:TStream;
i,buffersize:integer;
buffer:Variant;
begin
buffersize:=strtoint(edit3.Text);
StreamIn := TFileStream.Create(edit1.text,fmOpenRead);
Forum: Object-Pascal / Delphi-Language
Delphi
by Antigo,
21. Nov 2007
Jetzt hab ich doch noch ein Problem.
Und zwar scheint es mir so, dass er die vielen CopyFrom Aufträge zusammen fasst und dann gemeinsam verschickt. Ich hab jedenfalls mal einen 1 MB Puffer eingestellt und eine 20MB Datei über wlan kopiert. Nach jedem Copy From sollte er beep;en. Jetzt kommen allerdings direkt am Anfang jede menge beeps, dann werden die Intervalle zwischen den beeps etwas...
Forum: Object-Pascal / Delphi-Language
Delphi
by Antigo,
21. Nov 2007
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...