Laden...

Wecker Problem

Erstellt von HuStLeR vor 16 Jahren Letzter Beitrag vor 16 Jahren 3.420 Views
H
HuStLeR Themenstarter:in
53 Beiträge seit 2007
vor 16 Jahren
Wecker Problem

Hallo,

habe mir folgenden Wecker programmiert:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace NotifyIconExample {

  partial class FrmMain : System.Windows.Forms.Form {

    public FrmMain() {

      InitializeComponent();

    }

private void Timer1_Tick( object sender, System.EventArgs e ) {

  // Zeit kontrollieren und Fenster anzeigen
  if ( this.WindowState == FormWindowState.Minimized ) {

    if ( DateTime.Now.TimeOfDay.CompareTo( dtpTime.Value.TimeOfDay ) >= 0 ) {

      this.WindowState = FormWindowState.Normal;
      this.Activate();
      this.TopMost = true;
      this.BackColor = Color.Red;
      System.Diagnostics.Process.Start("D:\\Music\\Music Videos\\PITBULL N PLAY-N-SKILLZ - GET FREAKY.wmv"); 

    }
  } else {

    this.txtTime.Text = DateTime.Now.ToShortTimeString();

  }

}

private void NfiClock_DoubleClick( object sender, System.EventArgs e ) {
  this.WindowState = FormWindowState.Normal;
  this.Activate();
}

    private void BtnActivate_Click( object sender, System.EventArgs e ) {
      this.TopMost = false;
      this.WindowState = FormWindowState.Minimized;
    }

private void DtpTime_ValueChanged( object sender, System.EventArgs e ) {
  dtpTime.Value = dtpTime.Value.AddSeconds( -dtpTime.Value.Second );
}

private void FrmMain_Load( object sender, System.EventArgs e ) {
  this.ShowInTaskbar = false;
}

private void FrmMain_Click( object sender, System.EventArgs e ) {
  this.TopMost = false;
  this.BackColor = SystemColors.Control;
}
  }
}

soweit funktioniert auch alles perfekt... nur.. wenn es jetzt zB. 15 Uhr ist...
und ich würde den Wecker auf 6:00 morgens stellen, dann geht der Wecker direkt los, weil ja am HEUTIGEN TAGE... 6:00 schon vorbei ist... dann kann ich also nurnoch alle Zeiten holen die nach 15 Uhr sind.. zB. 16:15... dies funktioniert auch dann...

nun meine Frage.. was habe ich hier falsch programmiert... das der Wecker nicht einfach um 6 Uhr am nächsten Tage klingelt, sondern das er denkt ist schon vorbei und sofort losgeht !?

Vielen Dank!

Gelöschter Account
vor 16 Jahren

hallo

bei dem vergleich hast du keinen fehler gemacht
du musst bei der user eingabe darauf achten, dass der ausgewählte zeitpunkt nicht in der vergangenheit liegt

MfG janismac

5.742 Beiträge seit 2007
vor 16 Jahren

Hallo HuStLeR,

du könntest auch die Interval Eigenschaft des Timers so einstellen, dass dieser erst zur Weckzeit "tickt".

H
HuStLeR Themenstarter:in
53 Beiträge seit 2007
vor 16 Jahren

Original von janismac
hallo

bei dem vergleich hast du keinen fehler gemacht
du musst bei der user eingabe darauf achten, dass der ausgewählte zeitpunkt nicht in der vergangenheit liegt

MfG janismac

Ehrm.. also wenn ich abends um 20 Uhr ins Bett gehe...
und will das der Wecker morgens um 6 klingelt.. dann ist das eigtl in der Zukunft...

aber der Wecker denkt nunmal es ist Vergangenheit und genau das ist mein Problem!

5.742 Beiträge seit 2007
vor 16 Jahren

Hallo HuStLeR,

6 Uhr ist aber auf jeden Fall vor 20 Uhr - du prüfst nicht, ob auch der Tag stimmt.

H
HuStLeR Themenstarter:in
53 Beiträge seit 2007
vor 16 Jahren

und wie baue ich das jetzt da noch genau ein?
also wenn ich das programm starte habe ich atm ein kleines fenster nur..

oben wird aktuelle uhrzeit angezeigt
darunter kann ich ne weckzeit einstellen ...
habe da nun garnichts mit datum etc drin :- /

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo HuStLeR,

du bist es doch selber, der explizit das Datum ignoriert: TimeOfDay. Dann musst du dich eigentlich nicht wundern, dass ignoriert wird.

herbivore

H
HuStLeR Themenstarter:in
53 Beiträge seit 2007
vor 16 Jahren

hm ja...
ich habe mir den wecker sozusagen selbst zusammengesucht mit hilfe von openbook, weil ich sowas auch noch nie gemacht habe.. also wie müsste ich es denn programmieren, das auch das datum berücksichtigt wird ? ..

Ich dachte nunmal wenn 6 Uhr vorbei ist, dann klingelt er am nächsten Tag um 6 Uhr.. wie ein normaler Wecker auch, den man auf dem Nachttisch hat....

Weil wenn ich ja - Nichts - mit Datum eingestellt habe, dann müsste er ja eigentlich zum nächsten mal wenn diese Uhrzeit kommt klingeln und nicht denken das es schon vorbei ist!?

Für eine Lösung wär ich dankbar!

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo HuStLeR,

die Lösung habe ich doch schon gesagt: TimeOfDay weglassen

Und natürlich dafür sorgen, dass in dtpTime.Value der Datumsanteil den gewünschten Tag enthält.

herbivore

T
111 Beiträge seit 2005
vor 16 Jahren

Hallo HuStLeR,

Du könntest auch noch eine Abfrage einbauen, ob die Aktuelle Zeit mehr als z.B. 15min nach der Startzeit ist. Dann halt nicht klingeln, sonst schon. Der Vorschlag mit dem Tag hat halt den Nachteil, dass Du den Wecker jeden Tag neu stellen musst.

Thomas

1.433 Beiträge seit 2006
vor 16 Jahren

Hy
Ist zwar nur ein Tipp, aber ich hatte mit den Strings immer ein bisschen ein Chaos was dei Backslashes angeht und habe mich daher daran gewöhnt den String

D:\Music\Music Videos\PITBULL N PLAY-N-SKILLZ - GET FREAKY.wmv

so zu schreiben.

@"D:\Music\Music Videos\PITBULL N PLAY-N-SKILLZ - GET FREAKY.wmv"

Bei remote Zugriffen ist's dann schon übersichtlicher, wenn Du dann nicht 4 Backslashes für 2 machen musst.

Nur ein Tipp am Rande.

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

Gelöschter Account
vor 16 Jahren

hallo HuStLeR

dies dürfte dein prob beheben


void DtpTime_ValueChanged( object sender, System.EventArgs e ) 
{
if(dtpTime.Value.Ticks > DateTime.Now.Ticks)
dtpTime.Value.AddDays(1);
dtpTime.Value = dtpTime.Value.AddSeconds( -dtpTime.Value.Second );
}

MfG janismac

PS: bevor jemand ein kommentar dazu macht, dass ich mit Ticks rechne, mach ich immer so (kann ich besser mit umgehen)