AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi IdFTP -> Downloadgeschwindigkeit begrenzen (Indy 10)
Thema durchsuchen
Ansicht
Themen-Optionen

IdFTP -> Downloadgeschwindigkeit begrenzen (Indy 10)

Ein Thema von CK_CK · begonnen am 23. Feb 2007 · letzter Beitrag vom 23. Feb 2007
 
Benutzerbild von CK_CK
CK_CK

Registriert seit: 30. Aug 2005
Ort: Dortmund, Germany
388 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: IdFTP -> Downloadgeschwindigkeit begrenzen (Indy 10)

  Alt 23. Feb 2007, 18:22
Ich hab' das so mal probiert, aber irgendwie funktioniert es nicht.
Ich bekomme immer eine AV "Ungültige Gleitkommaoperation"...

Mein Code sieht so aus:
Delphi-Quellcode:
type
  TSpeedLimitedStream = class(TFileStream)
  private
    fMaxSpeed: Cardinal;
    fLastTick: Cardinal;
    fLastCount: Integer;

    function NewDataAllowed(Count: Integer): Boolean;
  public
    function Write(const Buffer; Count: Longint): Longint; override;

    property MaxSpeed: Cardinal read fMaxSpeed write fMaxSpeed default 0;
  end;
Implementiert habe ich die Methoden so:
Delphi-Quellcode:
function TSpeedLimitedStream.NewDataAllowed(Count: Integer): Boolean;
var
  curTick: Cardinal;
  curCount: Integer;
begin
  if fMaxSpeed = 0 then
  begin
    Result := True;
  end else begin
    curTick := GetTickCount;
    curCount := Count;

    if (curCount-fLastCount)/((curTick-fLastTick)/1000) <= fMaxSpeed then
      Result := False
    else
      Result := True;

    fLastTick := GetTickCount;
    fLastCount := Count;
  end;
end;

function TSpeedLimitedStream.Write(const Buffer; Count: Integer): Longint;
begin
  while not NewDataAllowed(Count) do
    Sleep(10);

  inherited Write(Buffer, Count);
end;
Ich benutze diesen Stream ganz normal für's downloaden, also IdFTP.Get('Dateiname', MyStream);, wobei MyStream vom Typ TSpeedLimitedStream ist und MaxSpeed auf 50 gesetzt ist...

Erkennt jemand daran einen Fehler?

Chris
Chris
» «
Mehr von mir (Programme, etc.): http://www.kroegerama.de
  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 13:18 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