AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[Zeit] 30min aufzählen

Ein Thema von BullsEye · begonnen am 10. Okt 2008 · letzter Beitrag vom 13. Okt 2008
Antwort Antwort
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#1

[Zeit] 30min aufzählen

  Alt 10. Okt 2008, 22:44
Hallo DP'ler...

Also, ich arbeite zur Zeit an einem kleinem Projekt. Nichts großes bzw besonderes. Dort geb ich auf einem Label die Zeit aus.

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  lblUhrzeit.Caption := TimeToStr(time);
end;
Soweit so gut. Dann kann ich in einem Editfeld eine frei wählbare Uhrzeit ausgeben ('22:22:22' als BSP). Sobald ich die gewünschte funktion aktviere, wird ein Timer Enabled, der dauerhaft die Uhrzeit des Labels mit der Uhrzeit im Edit vergleich.

Delphi-Quellcode:
  IF lblUhrzeit.Caption = edtUhrzeit.text THEN BEGIN
          // [..]
  END;
Stimmt nun die Zieluhrzeit (Edit) mit der aktuellen Uhrzeit (Label) überein, ist der Code aktiv. Das funktioniert soweit auch alles.
Allerdings möchte ich nun, wenn die Zeit abgelaufen ist, eine neue Zielzeit berechnen. Sprich die wir haben es 22:22:22 und der Code ist einmal durchlaufen. Bisher war es so, das einfach die CheckBox nicht mehr abgehackt ist. Ich möchte aber, das die Zieluhrzeit aus dem Editfeld von 22:22:22 auf 22:52:22 gesetzt wird. Sprich +30 Minuten.

Welches ist hier die am besten geeigntste Lösung?


gruß
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Zeitproblem

  Alt 10. Okt 2008, 22:56
Am besten die Uhrzeit aus dem Edit in ein TDateTime umwandeln, mit der Funktion IncMinute aus der Unit DateUtils 30 Minuten dazuzählen und dann wieder ausgeben.
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#3

Re: Zeitproblem

  Alt 11. Okt 2008, 07:28
ich würde es so machen:

Delphi-Quellcode:


function GetNewTime(Zeit : TTime; IncMinuten : integer):TTime;
var Hour, Minute, Sek, mSek : word;
begin
  DecodeTime(Zeit,Hour,Minute,Sek,mSek);
  Minuten := IncMinuten + Minuten;
  result := EncodeTime(Hour,Minuten,Sekunden,mSek);
end;

Ich bin mir aber gerade net sicher, die EncodeFunktion Minuten > 59 auch richtig umwandelt und dann dementsprechend die H hochsetzt.
Einfach mal ausprobieren!
Marco Tröger
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Zeitproblem

  Alt 11. Okt 2008, 08:32
Wie wäre es mit einem simplen:
NeueZeit := AlteZeit + Minuten/1440;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#5

Re: Zeitproblem

  Alt 11. Okt 2008, 10:50
Ich habs mal so gemacht:

Delphi-Quellcode:
      IF chkbAutoTime.Checked THEN BEGIN
        zeit := StrToTime(edtZeit.Text);
        zeit := IncMinute(zeit, 31);
        edtZeit.Text := TimeToStr(zeit);
      END ELSE BEGIN
        MrVariable:= 3; // ist ne Integervariable die ich zum vergleichen des Status benötigt
      END;
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Zeitproblem

  Alt 11. Okt 2008, 12:29
Könntest du deinem Beitrag bitte einen aussagekräftigeren Titel geben? "Zeit" sagt nicht gerade viel aus. Danke
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#7

Re: Zeitproblem

  Alt 11. Okt 2008, 12:34
Zitat von SirThornberry:
Könntest du deinem Beitrag bitte einen aussagekräftigeren Titel geben? "Zeit" sagt nicht gerade viel aus. Danke
Ich hoffe der ist ein wenig besser


Zitat von BullsEye:
Ich habs mal so gemacht:

Delphi-Quellcode:
      IF chkbAutoTime.Checked THEN BEGIN
        zeit := StrToTime(edtZeit.Text);
        zeit := IncMinute(zeit, 31);
        edtZeit.Text := TimeToStr(zeit);
      END ELSE BEGIN
        MrVariable:= 3; // ist ne Integervariable die ich zum vergleichen des Status benötigt
      END;

hm iwie klappt das nur ab und zu. Manchmal zählt der dann +3 Stunden
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

Re: Zeitproblem

  Alt 13. Okt 2008, 10:12
Hallo,

versuch's mal so:
Delphi-Quellcode:
IF chkbAutoTime.Checked THEN BEGIN
  edtZeit.Text := TimeToStr(StrToTime(edtZeit.Text) + (1 / 24 / 2));
END ELSE BEGIN
  MrVariable:= 3; // ist ne Integervariable die ich zum vergleichen des Status benötigt
END;
1 = 1 Tage im TDateTime
1 / 24 = eine Stunde
1 / 24 / 2 = eine halbe Stunde
entspricht 1 / 48 oder 0,020833333333333333333333333333333
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#9

Re: [Zeit] 30min aufzählen

  Alt 13. Okt 2008, 10:23
Ansich klappt das. Aber ich glaub ich habe den Fehler gefunden.
Ich habe mal einen Counter eingebaut. Diesen habe ich nach der Änderung deines Codes auf 0 gesetzt.

Dann habe ich das Programm ausgeführt. Wir hatten es 11:10. Die Zeit zu der die Seite aufgerufen werden soll ist die Startzeit. Nachdem die Startzeit erreicht wurde und die Aufgabe erfüllt, soll automatisch die Zielzeit eingetragen werden.

Zitat:
11:15 0 -> Startzeit
11:45 1 -> Zielzeit
12:15 2
12:45 3
13:15 4
13:45 5
14:15 6
Allerdings erhalte ich als Zielzeit 14:15. Und der Counter steht auf 6. Sprich er ruft die Seite 5x auf!

Aber ich glaub der Fehler liegt darin, das der Counter sowie die Zeit im "OnDocumentComplete" des TWebBrowsers aufgerufen wird.

EDIT: Fehler gefunden und behoben!!!
Ich hab mURL auf 2 gesetzt. WENN mURL = 2 DANN soll die Procedure aufgerufen werden. Wenn chkbAutoTime nicht angewählt ist, dann soll mURL auf 3 gesetzt werden. Und da ich das immer angewählt hatte, wurde mURL nicht weiter gesetzt und war somit immer auf 2 und hat den Counter und die Zeit jedes mal aufgezählt, wenn eine Internetseite fertig geladen ist. Und sich ein Werbefenster geöffnet hat, war die Zeit deshalb jedes mal mind Doppelt so weit Sprich Counter auf 2 anstatt auf 1

@nahpets: Vielen Dank!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 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