AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Problem mit IdHTTP.get mit Fortschrittsanzeige
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit IdHTTP.get mit Fortschrittsanzeige

Ein Thema von dominikkv · begonnen am 30. Jun 2007 · letzter Beitrag vom 1. Jul 2007
 
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#1

Problem mit IdHTTP.get mit Fortschrittsanzeige

  Alt 30. Jun 2007, 20:46
Hi

ich bin grad dabei mir nen updater zu schreiben.
Zum downloaden mit Fortschrittsanzeige über IdHTTP.get hab ich hier ne Function gefunden, die ich leicht umgeändert habe:

Delphi-Quellcode:
function Downloaden(Source: String): Boolean;
var
  BytesKopiert, BytesInsgesamt : int64;
  lStream: TFileStream;
  con: TextFile;
begin
  AssignFile(con, 'CON:');
  Rewrite(con);

  Write(con, Source + ' wird heruntergeladen... ');
  BytesKopiert := 0;

  IdHTTP1.Head('http://server.de/'+Source);
  BytesInsgesamt := IdHTTP1.Response.ContentLength;
  if BytesInsgesamt = -1 then
  begin
    lStream:=TFileStream.Create(AppPath + Source, fmCreate or fmShareDenyNone);
    try
      idHTTP1.Get('http://server.de/'+Source, lStream);
    finally
      if Assigned(lStream) then lStream.Free;
    end;
    Write(con, #13, Source + ' wird heruntergeladen... OK' + CR);
    CloseFile(con);
    exit;
  end;

  lStream:=TFileStream.Create(AppPath + Source, fmCreate or fmShareDenyNone);
  lStream.Position := 0;
  try
    repeat
      if (BytesInsgesamt-BytesKopiert) > cFileSplitSize then
      begin
        IdHttp1.Request.Range := Format('%d-%d', [BytesInsgesamt, (BytesKopiert+cFileSplitSize-1)]);
      end else
        IdHttp1.Request.Range := Format('%d-', [BytesKopiert]);

      Application.ProcessMessages;

      IdHTTP1.Get('http://server.de/'+Source, lStream); // <-- Hier tritt das Problem auf
      BytesKopiert := BytesKopiert+cFileSplitSize;
      Write(con, #13, Source + ' wird heruntergeladen... ', GetSizeName(BytesKopiert)+'/'+GetSizeName(BytesInsgesamt), ' [', FloatToStr((BytesKopiert/BytesInsgesamt)*100), '%]');
    until (BytesKopiert >= BytesInsgesamt);
  finally
    if Assigned(lStream) then lStream.Free;
    CloseFile(con);
  end;
  Write(con, #13, Source + ' wird heruntergeladen... ', GetSizeName(BytesInsgesamt), ' OK', CR);
end;
Das Problem ist folgende Fehlermeldung:

Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Updater.exe ist eine Exception der Klasse EIdHTTPProtocolException mit der Meldung 'HTTP/1.1 416 Requested Range Not Satisfiable' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
Die Stelle wo das Problem auftritt hab ich oben im Quelltext gekennzeichnet.
Das Programm ist eine Konsolenanwendung, und wenn ich die Datei ohne Fortschrittsanzeige runterlade:

Delphi-Quellcode:
  lStream := TFileStream.Create(AppPath + Source, fmCreate);
  IdHTTP1.Get('http://server.de/'+Source, lStream);
  lStream.free;
gehts...

was mach ich falsch?

mfg.Dominik
Dominik
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz