- Delphiartiklar, tips, forum, länksamling - 

      

START | DELPHI | LÄNKARGÄSTBOK 




 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: 1335
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; 

 
 
© Copyright 2005 - Staffan Berg
- Alla rättigheter förbehålles -