Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zeit zwischen Wochentag (https://www.delphipraxis.net/178973-zeit-zwischen-wochentag.html)

braessi 6. Feb 2014 12:14

Zeit zwischen Wochentag
 
Hallo zusammen

Ich bin dabei eine Art Wecker zu erstellen, bei dem man z.B. auswählen kann: ich will das der Wecker Montags, Mittwochs und Donnerstag klingelt. Also vom Prinzip her wie ein normaler Wecker auf dem Smartphone wie man ihn heute kennt.
Es soll allerdings immer angezeigt werden, an welchem Datum der Wecker das nächste mal klingelt, und da komm ich nicht drauf.
Wenn also heut Donnerstag ist, und der nächste Tag den ich gewählt habe ist ein Sonntag, wie krieg ich das Datum dieses Sonntages und wen dieser vorbei ist, wieder das Datum des nächsten gewählten Tages?
Zur Information: Die Tage werden mittels TCheckBox ausgewählt. Und desshalb weiss das Programm ja z.B. nicht in welcher Reihenfolge die Tage abgeklappert werden sollen. Ich habe solche Dinge bissher immer mit einem Haufen if-Verzweigungen gelöst, das kann allerdings ja nicht die Lösung sein?
Und ja, ich bin Anfänger, desshalb frage ich bewusst auch nach möglichst einfachen Lösungen (:

Vielen dank schon mal und freundliche Grüsse

Mikkey 6. Feb 2014 12:52

AW: Zeit zwischen Wochentag
 
Wann man ganz naiv herangeht, sollte man eine Schleife verwenden, die über die Wochentage iteriert und dabei mit dem heutigen beginnt und demselben Tag (der nächsten Woche) endet.

1. Start: Tag: Heute, Zeit: jetzt

2. Ist an Tag eine Weckzeit nach Zeit gesetzt? -> Zeige diese an, fertig

3. Bin ich "schon einmal rum", dann fertig, keine Weckzeit vorhanden

4. Tag := nächster Wochentag, Zeit: 00:00,

weiter bei 2

Kannst Du damit etwas anstellen?

braessi 6. Feb 2014 13:06

AW: Zeit zwischen Wochentag
 
Ja so was habe ich mir auch überlegt, ich habe es jetzt folgendermassen gelöst:

Code:
procedure TForm7.getDifference();
var
  Liste  : array [0 .. 6] of boolean;
  heute  : Integer;
  I      : Integer;
  dayCount: Integer;
begin
  heute := DayOfWeek(now);

  Liste[0] := Sonntag.Checked;
  Liste[1] := Montag.Checked;
  Liste[2] := dienstag.Checked;
  Liste[3] := Mittwoch.Checked;
  Liste[4] := Donnerstag.Checked;
  Liste[5] := Freitag.Checked;
  Liste[6] := Samstag.Checked;
  dayCount := 0;
  for I := heute - 1 to heute - 1 + 7 do begin
    if Liste[i mod 7] Then begin
      break;
    end
    else begin
      dayCount := dayCount + 1;
    end;

  end;
  dateLabel.Caption := DateToStr(now + dayCount);

end;
Funktioniert soweit, was ich bis jetzt getestet habe, allerdings muss ich noch den check machen, ob die Zeit schon vergangen ist, wenn am heutigen Tag ein Häckchen gesetzt wird.
was haltet ihr davon?

Gruss

Perlsau 6. Feb 2014 14:24

AW: Zeit zwischen Wochentag
 
Den Wochentagen sind Werte zugeordnet. Schau dir dazu in den DateUtils die Function DayOfTheWeek an. Nun legst du eine Textdatei an, in der folgendes steht:

1;14:35
3;16:12
4;08:20

Diese Textdatei liest du in eine Stringliste ein und separierst alle vial Semikolon (Delimiter) separierten Felder. Danach fragst du ab, ob heute einer dieser Tage ist. Wenn ja, fragst du ab, ob die Weckzeit bereits verstrichen ist. Wenn nein, startest du einen Timer, der einmal pro Sekunde prüft, ob die Weckzeit erreicht ist. Wenn Weckzeit erreicht, dann Klingelton abspielen.

Ich hoffe, du erwartest jetzt nicht, daß man dir das Programm schreibt :twisted:

Ach ja, es wäre nett und hilfreich, wenn du in deinem Profil eintragen würdest, welche Delphi-Version du verwendest. Als hilfsbereiter User kann man dann Lösungsvorschläge, die deine IDE nicht umsetzen kann, gleich verwerfen.

braessi 7. Feb 2014 10:17

AW: Zeit zwischen Wochentag
 
Hi vielen Dank, werde ich gleich mal versuchen, und nein ich bin ein ehrgeiziger Mensch, ich will keinen Fertigen Code ;)
Und ja werde ich gleich eintragen.

Danke und freundliche Grüsse


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 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