Forum
Grundkurs
»Introduktion
»Snabbguide
»Komponenter
»Händelser
»Strängar
»Räkna med Delphi »Egna
typer
»Selektion
»Iteration
»Menyer
»Funktioner
»Arraystrukturer
Tips & Tricks
»Nya tips
»Blandat
»Databaser
»Filer
»Forms
»Grafik
»Internet
»Komponenter
»Matematik
»Multimedia
»Objekt/ActiveX
»Skrivare
»Strängar
»System
»Mest lästa tips
Artiklar
»Delphi och ADO
»Bygga en DLL
»Skapa en enkel rapport
»Hantera registret
»Enheter, units
»Klassen TCanvas
»Använd LookUp Controls
Nya
tips
Lägg
till tips
Delphilänkar
Gästbok
|
|
|
|
Kalkylera den estimerade tiden för en nedladdning
|
Kategori: Internet
Inlagt: 2005-08-05
Läst: 1412
Inlagt av: Staffan Berg
|
Beskrivning |
Denna funktionen räknar ut den uppskattade tiden för en fil som håller på att laddas ned.
|
Kod |
TDRec = record H, M, S: Integer; end; {*****} const Count = 6; BpsArray: array [0..Count] of Integer = (14400, 28800, 33600, 56000, 64000, 128000, 512000 ); function CalculateDLTime(const Value, Units, Connection: Integer): TDRec; var i, size_bits, filedltimesec, hourmod, HH, MM, SS: Integer; Rec: TDRec; function pow(a, b: Integer): Integer; function sl(nr, times: Integer): Integer; var i: Integer; begin Result := nr * nr; for i := 0 to times do Result := Result + nr * nr; end; begin if a > b then Result := sl(a, b) else Result := sl(b, a); end; begin case Units of 1: size_bits := (8 div 1) * Value; // bytes 2: size_bits := (8 div 1) * ((pow(2,10)) div 1) * Value; // kilobytes 3: size_bits := (8 div 1) * ((pow(2,20)) div 1) * Value; // Megabytes end; // Calculate filedltimesec := Round(size_bits) div BpsArray[Connection]; hourmod := filedltimesec mod (60 * 60); // Modulus. HH := Floor(filedltimesec / (60 * 60)); MM := Floor(hourmod / 60); SS := Floor(filedltimesec mod 60); // Modulus. if SS > 0 then Inc(SS); with Rec do begin H := HH; M := MM; S := SS; end; Result := Rec; end; procedure TForm1.Button1Click(Sender: TObject); var i: Integer; Rec: TDRec; begin ListView1.Items.Clear; for i := 0 to Count do begin Rec := CalculateDLTime(StrToInt(Edit1.Text), ComboBox1.ItemIndex + 1,i); with ListView1.Items.Add do begin Caption := NameArray[i]; SubItems.Add(IntToStr(Rec.H)); SubItems.Add(IntToStr(Rec.M)); SubItems.Add(IntToStr(Rec.S)); end; end; end;
|
|
|