Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zeitberechnung (https://www.delphipraxis.net/72316-zeitberechnung.html)

Andidreas 28. Jun 2006 14:04


Zeitberechnung
 
hi @ all

in einem programm muss ich mir immer denn nächsten lauf einer prozedur errechnen...

ich hab mir mal so auf die schnelle ne eigenen funktion geschrieben in der ich auf die aktuelle uhrzeit eine bestimmte anzahl von minuten hinzu addiere....

hier erst mal der code (funktioniert einwandfrei... is aber noch ausbaufähig):

Delphi-Quellcode:
function TMain_Form.fnAddTime() : String;

var
sH, sM, sS, sTime : String;
iH, iM           : Integer;

begin

  sTime := FormatDateTime('HH:MM:SS', Time);
  sH := Copy(sTime, 1, 2);
  sM := Copy(sTime, 4, 2);
  sS := Copy(sTime, 7, 2);

  iM := StrToInt(sM);
  iM := iM + 10;
  If iM >= 60 Then
  Begin
    iM := iM - 60;
    iH := StrToInt(sH);
    iH := iH + 1;
    If iH = 25 Then
    Begin
      iH := 01;
      sH := IntToStr(iH);
      If iH < 10 Then
      Begin
        sH := '0' + sH;
      End;
    End;
  End;
  sM := IntToStr(iM);

  If iM < 10 Then
  Begin
    sM := '0' + sM;
  End;

  sTime := sH + ':' + sM + ':' + sS;

  fnAddTime := sTime;

end;
wollt jetzt nur mal nachfragen, obs net schon ne funktion von delphi gibt die genau das oder so ähnlich macht????

:dp:

Gollum 28. Jun 2006 14:25

Re: Zeitberechnung
 
Hallo,

warum so umständlich? Das geht im Prinzip viel einfacher.

DateTime und konsorten speichern den Zeitanteil im Nachkomma-Anteil der Variable. Wobei 0 = 0 Uhr und 1 = 24 Uhr entspricht. Laut dieser Festlegung entspricht 1 Stunde = 1/24 = 0,041666. Eine Minute wäre in diesem Fall 1/24/60.

Delphi-Quellcode:
function AddMinuten(const aDate:TDateTime; aMinuten:Integer):TDateTime;
begin
  Result:=aDate+aMinuten/24/60;
end;

...
...
ShowMessage(TimeToStr(AddMinuten(Now, 10));

Andidreas 28. Jun 2006 14:30

Re: Zeitberechnung
 
^^
ok hätte ich das früher gewusst, dann hätte ichs wahrscheinlich auch so gemacht...

danke für denn tipp...

Union 28. Jun 2006 22:12

Re: Zeitberechnung
 
Warum so umständlich? Das geht im Prinzip noch einfacher ;)
IncMinute(Now, 10)

Gollum 29. Jun 2006 05:17

Re: Zeitberechnung
 
Hallo,

Zitat:

Zitat von Union
IncMinute(Now, 10)

Ist mir bekannt.

Dann hättest Du aber dazuschreiben sollen, dass man zu Deinem Tipp die Unit DateUtils benötigt. Diese gib es aber erst seit Delphi 6.

Andidreas 29. Jun 2006 06:40

Re: Zeitberechnung
 
ja ok, ich hab ja delphi 2005 professional ^^ von daher würds ja gehen...
naja in dem programm was ich gerade mach werd ich meine funktion mal drinne lassen, aber für die zukunft ises gut zu wissen das es sowas gibt

thx @ all

Union 29. Jun 2006 12:05

Re: Zeitberechnung
 
@Gollum: Den Vorschlag habe ich deshalb gemacht, da er ja De2005 einsetzt und dies dort vorhanden ist. Und as mit dateutils - F1 ist ja wohl bekannt.

Ich habe früher auch oft solche Routinen mit 24/60 etc. verwendet, bin aber davon abgekommen. Jetzt läßt sich damit sehr schön rechnen, aber was ist, wenn in einer künftigen Version keine Double-Werte merh verwendet werden? Ich gehe davon aus, dass eine IncMinute Funktion immer das tut was sie soll, selbst wenn sich der Typ von TDateTime einmal ändern sollte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz