AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Download sehr langsam
Thema durchsuchen
Ansicht
Themen-Optionen

Download sehr langsam

Ein Thema von freeriders · begonnen am 25. Jan 2009 · letzter Beitrag vom 29. Jan 2009
 
freeriders

Registriert seit: 24. Feb 2008
15 Beiträge
 
#1

Download sehr langsam

  Alt 25. Jan 2009, 13:09
Hi!
Ich habe mir für mein Programm nen kleinen Autoupdater geschrieben.
Aber der Download ist irgendwie richtig langsam.
Ich habe den Download nach folgendem Beispiel erstellt:
http://www.delphipraxis.net/internal...ct.php?t=56872

Das Programm lädt jetzt pro 3Sekunden ca.40kb.
Die 40kb kommen daher, dass die ProgressBar alle 40kb aktualisiert wird.
Wenn ich nun festlege, dass die ProgressBar alle 512kb aktualisiert wird geht der Download wesentlich shcneller, aber die ProgressBar springt halt.
Ich vermute, das Problem kommt daher, dass ich 2 Dateien lade.
Deswegen habe ich 2 Streams und auch zwei IdHTTP's von Indy.

Nunja hiermal mein Code, vielleicht sieht jemand von euch woran es genau liegt, bzw. kann mir sagen, wie ich den Download von 2 Dateien sonst machen könnte.

Delphi-Quellcode:
const
  cFileSplitSize : Int64 = 40*1024; //40 KB größe stücke wird die Datei zerhackt
Delphi-Quellcode:
function GetSizeName(const Size : int64): String; //Umschreiben der Größen
begin
  Result := 'Fehler';
  if Size = -1 then exit;
  if Size < 1024 then
  begin
    Result := inttostr(Size)+' Byte';
    exit;
  end;
  if (1024 <= Size) and (Size < 1048576) then
  begin
    Result := floattostr((round((Size/1024)*100))/100)+' KB';
    exit;
  end;
  if (1048576 <= Size) and (Size < 1099511627776) then
  begin
    Result := floattostr((round((Size/1048576)*100))/100)+' MB';
    exit;
  end;
  if Size > 1099511627776 then
  begin
    Result := floattostr((round((Size/1099511627776)*100))/100)+' GB';
  end;
end;
Delphi-Quellcode:
          begin
          Status.Font.Color:=clRed; //Anzeigen, dass neues Update gefunden
          Status.Caption:='Update wurde gefunden!'; //--"--
          BytesKopiert:=0; //Downloader beginnt
          Progress.Position:=0;
          UpdateHTTP.Head('http://world-fifa-league.de/files/Starter_Update/fifa.db');
          UpdateHTTP2.Head('http://world-fifa-league.de/files/Starter_Update/ger.db');
          BytesInsgesamt:=UpdateHTTP.Response.ContentLength + UpdateHTTP2.Response.ContentLength; //Schreiben der Länge in String
            if BytesInsgesamt=-1 then
            begin
            Status.Font.Color:=clRed;
            Status.Caption:='Normales Herunterladen';
            lStream1:=TFileStream.Create((ExtractFilePath(Application.ExeName)+'WFL_Daten\fifa.db'), fmCreate or fmShareDenyNone);
            lStream2:=TFileStream.Create((ExtractFilePath(Application.ExeName)+'WFL_Daten\ger.db'), fmCreate or fmShareDenyNone);
            try //Herunterladen der Dateien
              Status.Font.Color:=clLime;
              Status.Caption:='Download';
              UpdateHTTP.Get('http://world-fifa-league.de/files/Starter_Update/fifa.db',lStream1);
              UpdateHTTP2.Get('http://world-fifa-league.de/files/Starter_Update/ger.db',lStream2);
            finally //Streams wieder freigeben
              if Assigned(lStream1) then lStream1.Free;
              if Assigned(lStream2) then lStream2.Free;
            end;
            Status.Font.Color:=clLime;
            Status.Caption:='Download beendet';
            exit;
            FrmUpdater.Close;
          end;
          Progress.Max:=BytesInsgesamt; //Download mit Progressbar
          lStream1:=TFileStream.Create((ExtractFilePath(Application.ExeName)+'WFL_Daten\fifa.db'), fmCreate or fmShareDenyNone);
          lStream2:=TFileStream.Create((ExtractFilePath(Application.ExeName)+'WFL_Daten\ger.db'), fmCreate or fmShareDenyNone);
          lStream1.Position:=0;
          lStream2.Position:=0;
          try
            repeat //Verhindern, dass sich das Programm aufhängt
              Application.ProcessMessages;
                Status.Font.Color:=clLime;
                Status.Caption:='Download';
                UpdateHTTP.Get('http://world-fifa-league.de/files/Starter_Update/fifa.db',lStream1);
                UpdateHTTP2.Get('http://world-fifa-league.de/files/Starter_Update/ger.db',lStream2);
                Progress.Position := BytesKopiert;
                Status.Caption := GetSizeName(BytesKopiert)+'/'+GetSizeName(BytesInsgesamt);
                BytesKopiert := BytesKopiert+cFileSplitSize;
                until (BytesKopiert >= BytesInsgesamt); //Schleife beenden wenn datei fertig
          finally
            if Assigned(lStream1) then lStream1.Free; //FileStream freigeben wenn gesetzt
            if Assigned(lStream2) then lStream2.Free;
          end;
          Status.Font.Color:=clLime;
          Status.Caption:='Fertig';
          Progress.Position:=100;
          FrmUpdater.Close;
          end
        else
        Status.Font.Color:=clLime;
        Status.Caption:='Kein Update gefunden!';
        FrmUpdater.Close;
        end;
   end;
end;
So das war es erstmal.
Vielen Dank schonmal für Antworten


LG
  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 00:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz