Entwickler-Ecke
Internet / Netzwerk - Indy HTTP Download verursacht beim 2. mal einen Fehler
masterchris_99 - Do 28.09.06 17:03
Titel: Indy HTTP Download verursacht beim 2. mal einen Fehler
Morgen.
Also ich will mehrere Dateien per Schlange runterladen
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74:
| procedure TForm2.download_file(filename,save_dir :String); var BytesKopiert, BytesInsgesamt : int64; lStream: TFileStream; begin Animate.Active := True; Status.Caption := ''; BytesKopiert := 0; BytesInsgesamt := -1; Progress_file.Position := 0; Status.Caption := 'Prüfe Header'; ShowMessage('1 '+filename); try IdHTTP.Head(filename); except on e:Exception do ShowMessage(e.Message); End; BytesInsgesamt := IdHTTP.Response.ContentLength; ShowMessage('2 '+IntToStr(BytesInsgesamt)); if BytesInsgesamt = -1 then begin Status.Caption := 'Normalles herunterladen'; Status.Caption := 'Erstelle Datei'; lStream:=TFileStream.Create(save_dir, fmCreate or fmShareDenyNone); try idHTTP.Get(filename, lStream); finally if Assigned(lStream) then lStream.Free; end; Status.Caption := 'Fertig'; exit; end; Progress_file.Max := BytesInsgesamt; Status.Caption := 'Erstelle Datei'; lStream:=TFileStream.Create(save_dir, fmCreate or fmShareDenyNone); lStream.Position := 0; try repeat Application.ProcessMessages; IdHTTP.Request.ContentRangeStart := BytesKopiert; if (BytesInsgesamt-BytesKopiert) > cFileSplitSize then begin IdHTTP.Request.ContentRangeEnd := BytesKopiert+cFileSplitSize-1; end else IdHTTP.Request.ContentRangeEnd := BytesInsgesamt; Application.ProcessMessages; IdHTTP.Get(filename, lStream); Progress_file.Position := BytesKopiert; Status.Caption := Form1.GetSizeName(BytesKopiert)+'/'+Form1.GetSizeName(BytesInsgesamt); BytesKopiert := BytesKopiert+cFileSplitSize; until (BytesKopiert >= BytesInsgesamt); finally if Assigned(lStream) then lStream.Free; end; Status.Caption := 'Fertig'; Progress_file.Position := 100; Animate.Active := False; end; |
So diese wird mit dieser procedure aufgerufen
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm2.download; Var I:Integer; begin bytesgesamt := 0; for i:=0 to Form1.JvSH1.Strings.Count-1 do begin IdHTTP.Head(Unit1.dl_http + Form1.JvSH1.Strings.Strings[i]); bytesgesamt := bytesgesamt + IdHTTP.Response.ContentLength; end; Progress_all.Max := bytesgesamt;
for i:=0 to Form1.JvSH1.Strings.Count-1 do begin Datei.Caption := IntToStr(i+1)+'/'+IntToStr(Form1.JvSH1.Strings.Count)+' - '+Form1.JvSH1.Strings.Strings[i]; download_file(Unit1.dl_http + Form1.JvSH1.Strings.Strings[i], Unit1.dl_verzeichniss + Form1.JvSH1.Strings.Strings[i]); end; end; |
So beim ersten Durchlauf der download_file gibt es keine Probleme aber sobald es das 2. mal durchlaufen soll kommt:
'*/261561' ist kein gültiger Integerwert' //261561 ist dabei die byte zahl der runterzuladenen Datei
elundril - Do 28.09.06 17:07
könntest du die Zeile mal markieren in der er die Fehlermeldung schreibt??
mfg el
masterchris_99 - Do 28.09.06 18:48
Also der Fehler muss im 1. Abschnitt sein
Da wo ich denke ist der Try Except Block also Zeile 13
Das komische ist den 1. Showmessage gibt er noch aus aber den 2. nicht mehr
Delphi-Quelltext
1: 2: 3:
| ShowMessage('1 '+filename); <-- 1.
ShowMessage('2 '+filename); <-- 2. |
wenn ich aber in zeile 22 vor das
if BytesInsgesamt = -1 then
BytesInsgesamt := -1 das schreibe geht er durch
masterchris_99 - Fr 29.09.06 11:47
so hab den fehler gefunden
Delphi-Quelltext
1: 2: 3:
| IdHTTP.Request.ContentRangeEnd := 0; IdHTTP.Request.ContentRangeStart := 0; |
Musste beides wieder resetet werden.
mFg Chris
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!