Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Timer viel zu ungenau? (https://www.delphipraxis.net/7172-timer-viel-zu-ungenau.html)

negaH 15. Aug 2003 01:01

Re: Timer viel zu ungenau?
 
Ist doch ziemlich einfach. Neben der aktuellen Online Startzeit und der aktuellen Zeit die ja dann die abgelaufene Online Zeit darstellen hast du noch die letzten Kosten die aufgelaufen sind. Nun die aktuelle Onlinezeit in Minuten * die Kosten pro Minute auf den letzten gemessenen Moantsbetrag drauf addieren. Wenn der User Offline geht addierste die kompletten Kosten der aktuellen Onlinesession auf den letzen Monatswert drauf.

Gruß Hagen

Lefko 15. Aug 2003 13:53

Re: Timer viel zu ungenau?
 
Zitat:

Zitat von negaH
Ist doch ziemlich einfach. ... Wenn der User Offline geht addierste die kompletten Kosten der aktuellen Onlinesession auf den letzen Monatswert drauf.

Gruß Hagen

Ja, aber ich möchte, dass die Kosten jede Minute aktualisiert werden und nicht nur wenn der user off geht :)

ich hab s jetzt so gemacht, aber ob das so gut is? :

Delphi-Quellcode:
//Zeit- und Kostenberechnung
Onlinezeit := now - Startzeit;

//Heute
Label9.Caption := TimeToStr(Tageszeit + Onlinezeit);
//Monat
Label11.Caption := TimeToStr(Monatszeit + Onlinezeit);
//Jetzt
Label13.Caption := TimeToStr(Onlinezeit);

if copy(Label13.caption,7,2) = '00' then //wenn 'ne neue minute beginnt
begin
 Label15.caption := FloatToStr(StrToFloat(Label15.caption) + StrToFloat(Satz) / 100);
 Label8.caption := FloatToStr(StrToFloat(Label8.caption) + StrToFloat(Satz) / 100);
 Label7.caption := FloatToStr(StrToFloat(Label7.caption) + StrToFloat(Satz) / 100);
end;
MfG Lefko.

[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]

negaH 15. Aug 2003 14:27

Re: Timer viel zu ungenau?
 
Hi

deine ständige Umrechnungen mit StrToFloat() sind unschön:

Delphi-Quellcode:
begin
  KostenProTag := KostenProMinute / 1440;
  OnlineZeit  := Now - Startzeit;
  OnlineKosten := OnlineZeit * KostenProTag;
  MonatsZeit  := MonatsZeitVorOnlineStart + OnlineZeit;
  MonatsKosten := MonatsKostenVorOnlineStart + OnlineKosten;
 
  Label9.Caption := FormatDateTime('hh:nn:ss', OnlineZeit);
  Label11.Caption := FormatDateTime('dd Tage hh:nn:ss', MonatsZeit);

// aktuelle Kosten der aktuelle Onlinezeit
  Labelxx.Caption := FormatFloat('0.00#,## €', OnlineKosten);
// kumulierte Monatskosten
  Labelxy.Caption := FormatFloat('0.00#,## €', MonatsKosten);
.. usw. usw.
end;
Gruß Hagen

Lefko 15. Aug 2003 21:30

Re: Timer viel zu ungenau?
 
Zitat:

Zitat von negaH
Hi

deine ständige Umrechnungen mit StrToFloat() sind unschön:

Delphi-Quellcode:
begin
  KostenProTag := KostenProMinute / 1440;
  OnlineZeit  := Now - Startzeit;
  OnlineKosten := OnlineZeit * KostenProTag;
  MonatsZeit  := MonatsZeitVorOnlineStart + OnlineZeit;
  MonatsKosten := MonatsKostenVorOnlineStart + OnlineKosten;
 
  Label9.Caption := FormatDateTime('hh:nn:ss', OnlineZeit);
  Label11.Caption := FormatDateTime('dd Tage hh:nn:ss', MonatsZeit);

// aktuelle Kosten der aktuelle Onlinezeit
  Labelxx.Caption := FormatFloat('0.00#,## €', OnlineKosten);
// kumulierte Monatskosten
  Labelxy.Caption := FormatFloat('0.00#,## €', MonatsKosten);
.. usw. usw.
end;
Gruß Hagen

das mit dem kostenprotag versteh ich nich.....

negaH 15. Aug 2003 21:44

Re: Timer viel zu ungenau?
 
Korrekt: KostenProTag := KostenProMinute * 1440 ist richtig.
Du arbeitest mit TDateTime. Ein TDateTime ist eine Fließkommazahl die im Ganzzahlteil der Zahl, also vor dem Komma die Tage angibt. Im Gebrochenen Teil der Zahl also Nachkommateil, werden die Bruchteile eines Tages angegeben. Nun (KostenProMinute * 1440) = KostenProTag, KostenProTag * Bruchteile eines Tages = Kosten. Somit sind die KostenProTag rechenkompatibel mit einem TDateTime. Man kann also direkt rechnen Kosten := (Now - StartDatumZeit) * KostenProTag. Vorteil bei der Sache ist das wenn man mehrere Tage und Stunden online ist obige Formel trotzdem richtig rechnet. So einfach :)

Probier mal
Delphi-Quellcode:
  KostenProTag := 0.10 * 1440; // 10 Cent pro Minute
  Kosten := (StrToDateTime('15.1.2003 18:34') - StrToDateTime('10.1.2003 09:12')) * KostenProTag.
Gruß Hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:15 Uhr.
Seite 3 von 3     123   

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 by Thomas Breitkreuz