![]() |
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 |
Re: Timer viel zu ungenau?
Zitat:
ich hab s jetzt so gemacht, aber ob das so gut is? :
Delphi-Quellcode:
MfG Lefko.
//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; [edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit] |
Re: Timer viel zu ungenau?
Hi
deine ständige Umrechnungen mit StrToFloat() sind unschön:
Delphi-Quellcode:
Gruß Hagen
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; |
Re: Timer viel zu ungenau?
Zitat:
|
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:
Gruß Hagen
KostenProTag := 0.10 * 1440; // 10 Cent pro Minute
Kosten := (StrToDateTime('15.1.2003 18:34') - StrToDateTime('10.1.2003 09:12')) * KostenProTag. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 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 by Thomas Breitkreuz