Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi zahl in Uhrzeit darstellen (https://www.delphipraxis.net/72877-zahl-uhrzeit-darstellen.html)

Cr3at0r 8. Jul 2006 15:31


zahl in Uhrzeit darstellen
 
Moin,

also meine Frage ist:

Wie kann ich zb. die Zahl 3000 in einer Uhrzeit darstellen, zb. in einem Label.
Die 3000 soll 3000 Sekunden bedeuten.

MfG

Luckie 8. Jul 2006 15:36

Re: zahl in Uhrzeit darstellen
 
Delphi-Quellcode:
function FormatTime(t: int64): string; { (gettime by Assarbad) }
begin
  result := IntToStr(t mod 1000);
  case t mod 1000 < 100 of
    true: result := {'0' +} result;
  end;
  t := t div 1000; // -> seconds
  {result := IntToStr(t mod 60) + ' Sekunden ' + result;
  case t mod 60 < 10 of
    true: result := '0' + result;
  end;}
  t := t div 60; //minutes
  result := IntToStr(t mod 60) + ' Min ' + result;
  case t mod 60 < 10 of
    true: result := '0' + result;
  end;
  t := t div 60; //hours
  result := IntToStr(t mod 24) + ' Std ' + result;
  case t mod 60 < 10 of
    true: result := '0' + result;
  end;
  result := IntToStr(t div 24) + ' T ' + result;
end;

Cr3at0r 8. Jul 2006 15:44

Re: zahl in Uhrzeit darstellen
 
Delphi-Quellcode:
function FormatTime(t: int64): string; { (gettime by Assarbad) }
begin
  result := IntToStr(t mod 1000);
  case t mod 1000 < 100 of
    true: result := {'0' +} result;
  end;
  t := t div 1000; // -> seconds
  {result := IntToStr(t mod 60) + ' Sekunden ' + result;
  case t mod 60 < 10 of
    true: result := '0' + result;
  end;}
  t := t div 60; //minutes
  result := IntToStr(t mod 60) + ' Min ' + result;
  case t mod 60 < 10 of
    true: result := '0' + result;
  end;
  t := t div 60; //hours
  result := IntToStr(t mod 24) + ' Std ' + result;
  case t mod 60 < 10 of
    true: result := '0' + result;
  end;
  result := IntToStr(t div 24) + ' T ' + result;
end;
Mögest mir den auch kruz erklären?

Matze 8. Jul 2006 15:59

Re: zahl in Uhrzeit darstellen
 
@Luckie: Sei doch bitte nicht immer so wortkarg und erläutere doch die wichtigen Dinge. Hier beispielsweise, dass man die Zeit in Millisekunden angeben muss. ;)

Edit: Ging es nicht auch einfach so?

Delphi-Quellcode:
function FormatTime(t: int64): string;
begin
  t := t div 1000; // seconds
  result := IntToStr(t mod 60) + ' Sek ' + result;
  t := t div 60;  // minutes
  result := IntToStr(t mod 60) + ' Min ' + result;
  t := t div 60;  // hours
  result := IntToStr(t mod 24) + ' Std ' + result;
  result := IntToStr(t div 24) + ' T ' + result;
end;

Cr3at0r 8. Jul 2006 16:56

Re: zahl in Uhrzeit darstellen
 
Wenn ich ganz ehrlich bin steig ich da noch net ganz durch^^

Matze 8. Jul 2006 17:04

Re: zahl in Uhrzeit darstellen
 
Zitat:

Zitat von Cr3at0r
Wenn ich ganz ehrlich bin steig ich da noch net ganz durch^^

Was genau verstehst du denn nicht? Delphi-Referenz durchsuchendiv und Delphi-Referenz durchsuchenmod sollten kein Problem darstellen.

Aufgerufen wird das ganze zum Beispiel so:

Delphi-Quellcode:
ShowMessage(FormatTime(3000000));

// 3000000 = 3000 * 1000
//    ms      s
Da der Parameter die Anzahl der Millisekunden erwartet, müsstest du die Sekunden erst umrechnen (mit 1000 multiplizieren), natürlich kannst du auch zu Beginn der Funktion folgendes aufrufen:

Delphi-Quellcode:
t := t * 1000;
dann kannst du direkt die Anzahl der Sekunden übergeben.

marabu 8. Jul 2006 20:12

Re: zahl in Uhrzeit darstellen
 
Hi,

so geht es auch:

Delphi-Quellcode:
uses
  DateUtils; // const SecsPerDay = 86400;

function SecondsToStr(nSeconds: Cardinal): String;
begin
  Result := DateTimeToStr2(nSeconds / SecsPerDay);
end;
Grüße vom marabu

PS: DateTimeToStr2

Cr3at0r 8. Jul 2006 20:35

Re: zahl in Uhrzeit darstellen
 
Zitat:

Zitat von marabu
Hi,

so geht es auch:

Delphi-Quellcode:
uses
  DateUtils; // const SecsPerDay = 86400;

function SecondsToStr(nSeconds: Cardinal): String;
begin
  Result := DateTimeToStr2(nSeconds / SecsPerDay);
end;
Grüße vom marabu

PS: DateTimeToStr2

und nSeconds wären bei mir dann 3000?
Und Cardinal ist ein Typ gell?

marabu 8. Jul 2006 20:43

Re: zahl in Uhrzeit darstellen
 
Das hast du genau richtig erkannt.

marabu

Jelly 9. Jul 2006 00:02

Re: zahl in Uhrzeit darstellen
 
Also Luckie, von deiner langen Funktion bin ich jetzt etwas überrascht... Ich würd das in einen 2-Zeiler packen :mrgreen:

Delphi-Quellcode:
function SecToStr (t : int64) : string ;
var
 DT : TDateTime ;
begin
   DT := t / 60 / 60 / 24 ;
   Result := format ('%s Tage, %s',[Trunc(TD),formatdatetime ('h Stunden, n Minuten und s Sekunden',DT)]) ;
end ;


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 Uhr.
Seite 1 von 4  1 23     Letzte »    

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