Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi "tickende" uhr mit nur einer zeitmessung (https://www.delphipraxis.net/89718-tickende-uhr-mit-nur-einer-zeitmessung.html)

s-konto 4. Apr 2007 18:50


"tickende" uhr mit nur einer zeitmessung
 
ok, das problem ist folgendes:
soetwas wie hier ist sehr einfach:
http://noebis.pi-noe.ac.at/delphi/kapitel13.htm

es wird einfach die funktion time bzw. gettime benutzt und mittels TimeToStr() in einem label ausgegeben.
mein problem ist: ich bekomme nur einen einzigen string in diesem format: "YY/MM/DD,hh:mm:ss" wobei mir der erste teil mit dem datum relativ egal ist.
wie lässt sich der text hinter dem komma ausgeben?

so, wenn die uhrzeit extrahiert ist, muss ich das ganze in dieses TDateTime konvertieren. wie lässt sich also z.B. "12:00:00" in das TDateTime Format umwandeln?
jetz wirds schwer. ich hab nen timer mit interval 1000(=1sek) jetzt muss ich jedesmal eine sekunde dazurechnen. aber wie mach ich das mit diesem komischen format TDateTime? um rechnen zu können muss ich ja erstmal in float konvertieren oder geht das anders?

ich weiss, is ein bisserl kompliziert, bin froh, wenn ihr lösungen von teilproblemen habt.

bitsetter 4. Apr 2007 23:56

Re: "tickende" uhr mit nur einer zeitmessung
 
Hi,

Zitat:

Zitat von s-konto
ich weiss, is ein bisserl kompliziert,

ja da hast du recht

Zitat:

Zitat von s-konto
mein problem ist: ich bekomme nur einen einzigen string in diesem format: "YY/MM/DD,hh:mm:ss" wobei mir der erste teil mit dem datum relativ egal ist.
wie lässt sich der text hinter dem komma ausgeben?

Delphi-Quellcode:
var
  s: String;
begin
  s:= 'YY/MM/DD,hh:mm:ss';
  caption:= Copy(s, length(s)- 7, 8);
Zitat:

Zitat von s-konto
so, wenn die uhrzeit extrahiert ist, muss ich das ganze in dieses TDateTime konvertieren. wie lässt sich also z.B. "12:00:00" in das TDateTime Format umwandeln?

Delphi-Quellcode:
var
  d: TDateTime;
begin
  d:= StrToTime('12:00:00');
Zitat:

Zitat von s-konto
ich hab nen timer mit interval 1000(=1sek) jetzt muss ich jedesmal eine sekunde dazurechnen. aber wie mach ich das mit diesem komischen format TDateTime? um rechnen zu können muss ich ja erstmal in float konvertieren oder geht das anders?

eventuell hiermit:
Delphi-Quellcode:
var
  d: TDateTime;
begin
  TryEncodeTime(12,0,2,0,d);
  Caption := TimeToStr(d);

Luckie 4. Apr 2007 23:59

Re: "tickende" uhr mit nur einer zeitmessung
 
Um die Stichworte zu vervollständigen:
EncodeTime, EncodeDate
DecodeTime, DecodeDate
TimeToStr, StrToTime
DateToStr, StrToDate

Desweiteren sollte man die lokalen Einstellungen brücksichtigen. Mein Datumsformat ist zum Beispiel yyyy-mm-dd.

Nuclear-Ping 5. Apr 2007 02:04

Re: "tickende" uhr mit nur einer zeitmessung
 
... FormatDateTime, IncMilliSecond, IncSecond, IncMinute, IncIrgendwas kann man auch noch nennen.

scrat1979 5. Apr 2007 06:32

Re: "tickende" uhr mit nur einer zeitmessung
 
Zitat:

Zitat von s-konto
ok, das problem ist folgendes:
[...]
mein problem ist: ich bekomme nur einen einzigen string in diesem format: "YY/MM/DD,hh:mm:ss" wobei mir der erste teil mit dem datum relativ egal ist.
[...]

Hmmm, wäre da die Funktion FormateDateTime() nicht angebracht oder habe ich da was falsch verstanden ??? :gruebel: Zum Beispiel (Code aus einer meiner Komponenten)...

Delphi-Quellcode:
    Caption := TimeToStr(now);
    Caption := DateToStr(now) + ' ' + FormatDateTime('hh:nn', now);
    Caption := FormatDateTime('d. mmmm yyyy' + ' ' + 'hh:nn', now);
    Caption := FormatDateTime('dddd, d. mmmm yyyy', now);
    Caption := FormatDateTime('dddd, d. mmmm yyyy' + ' ' + 'hh:nn', now);

Zitat:

Zitat von s-konto
jetz wirds schwer. ich hab nen timer mit interval 1000(=1sek) jetzt muss ich jedesmal eine sekunde dazurechnen. aber wie mach ich das mit diesem komischen format TDateTime? um rechnen zu können muss ich ja erstmal in float konvertieren oder geht das anders?

Evtl. könntest Du einen Umweg über einen Zeitstempel (Unix Time Stamp) machen. Hier kannst Du einfach Sekunden addieren und danach wieder in einen TDateTime umwandeln...

Delphi-Quellcode:
const
  UnixStartDate: TDateTime = 25569.0;

VAR TimeZone : Integer; // 1 (für Berlin...)
[...]

function DateTimeToUnix(Datum: TDateTime) : Integer;
begin
  Result := Round((Datum - UnixStartDate) * 86400) - 3600 - (3600*TimeZone);
end;

function UnixToDateTime(Timestamp: Integer) : TDateTime;
begin
  Result := ((Timestamp+3600+TimeZone*3600) / 86400) + UnixStartDate;
end;
SCRaT

RavenIV 5. Apr 2007 07:37

Re: "tickende" uhr mit nur einer zeitmessung
 
Zitat:

Zitat von s-konto
ok, das problem ist folgendes:
soetwas wie hier ist sehr einfach:
http://noebis.pi-noe.ac.at/delphi/kapitel13.htm

es wird einfach die funktion time bzw. gettime benutzt und mittels TimeToStr() in einem label ausgegeben.
mein problem ist: ich bekomme nur einen einzigen string in diesem format: "YY/MM/DD,hh:mm:ss" wobei mir der erste teil mit dem datum relativ egal ist.
wie lässt sich der text hinter dem komma ausgeben?

so, wenn die uhrzeit extrahiert ist, muss ich das ganze in dieses TDateTime konvertieren. wie lässt sich also z.B. "12:00:00" in das TDateTime Format umwandeln?
jetz wirds schwer. ich hab nen timer mit interval 1000(=1sek) jetzt muss ich jedesmal eine sekunde dazurechnen. aber wie mach ich das mit diesem komischen format TDateTime? um rechnen zu können muss ich ja erstmal in float konvertieren oder geht das anders?

ich weiss, is ein bisserl kompliziert, bin froh, wenn ihr lösungen von teilproblemen habt.

Du denkst zu kompliziert.

Benutze einen TTimer, den stellst Du auf 1000 ms.
Im OnTimer-Ereignis des Timers holst Du Dir die Zeit mit getTime. Diese wandelst Du mit TimeToStr oder FormatDateTime in das gewünschte Format um. Anschliessend zeigst Du die Zeit im Label an.
Viel schneller, ohne Rechnen und super simpel.

Hilfe zu diesen Funktionen findest Du in der Delphi-Hilfe.

Programmieren musst Du das aber noch selber...

Nachteule 5. Apr 2007 07:46

Re: "tickende" uhr mit nur einer zeitmessung
 
ganz ohne timer und supereinfach:


Delphi-Quellcode:

var
    startzeit, stopzeit: TTime;

begin
  startzeit := now;
  // irgendetwas ausführen

  stopzeit := now;

  StatusBar1.Panels[1].Text := formatdatetime('hh:nn:ss:zzz', (stopzeit -
    startzeit));

end;

Nuclear-Ping 5. Apr 2007 10:17

Re: "tickende" uhr mit nur einer zeitmessung
 
Zitat:

Zitat von scrat1979
Zitat:

Zitat von s-konto
jetz wirds schwer. ich hab nen timer mit interval 1000(=1sek) jetzt muss ich jedesmal eine sekunde dazurechnen. aber wie mach ich das mit diesem komischen format TDateTime? um rechnen zu können muss ich ja erstmal in float konvertieren oder geht das anders?

Evtl. könntest Du einen Umweg über einen Zeitstempel (Unix Time Stamp) machen. Hier kannst Du einfach Sekunden addieren und danach wieder in einen TDateTime umwandeln...

Oh ja. :mrgreen: Wie wärs stattdessen mit IncSecond? ^^

scrat1979 5. Apr 2007 11:25

Re: "tickende" uhr mit nur einer zeitmessung
 
Zitat:

Zitat von Nuclear-Ping
Zitat:

Zitat von scrat1979
Evtl. könntest Du einen Umweg über einen Zeitstempel (Unix Time Stamp) machen. Hier kannst Du einfach Sekunden addieren und danach wieder in einen TDateTime umwandeln...

Oh ja. :mrgreen: Wie wärs stattdessen mit IncSecond? ^^

Sorry, habe ich gar nicht gekannt :oops: . Sehe grad, der Begriff ist weiter oben ja schon gefallen - Schande über mich. :wall: Schon wieder etwas gelernt....

Ehrlich gesagt, weiß ich auch gar nicht so recht, was der Threadersteller genau möchte. Für eine reine Zeitmessung würde ich die Lösung von Nachteule nehmen. Soll es eher eine "Uhr" werden, wird wohl ein Timer - Beispiele sind ja jetzt genug da :-) - eher in Frage kommen.

SCRaT

Nuclear-Ping 5. Apr 2007 11:39

Re: "tickende" uhr mit nur einer zeitmessung
 
Du hättest mich mal erleben sollen, als ich von TDateTime und dessen Hilfsfunktionen noch nichts wußte. Da hab ich auch schlimme Sachen mit Strings angestellt ... :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 Uhr.
Seite 1 von 2  1 2      

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