DateTimePicker vergleichen???



  • 😃 Danke für den Wink mit dem Telegraphenmast 😃

    C/C++

    if(CompareTime(DateTimePicker1->DateTime,Now())==EqualsValue)
    {
    ...
    }



  • Ich glaub ich werd zum :xmas2: !!

    Ich denke das ich jetzt ein Timer Problem habe. Der schaltet nämlich nur durch, wenn der Timer genau in der sek. durchläuft.

    Also muß ich wohl noch ein wenig Basteln 🙄



  • Was willst du denn genau machen ?
    Eventuell hilft es eine Zeitspanne abzufragen. 😕



  • Also es geht um mein Abschlussprojekt. Schau dir am besten mal unsere HP dazu an http://www.projekt.karge.org dort ist auch ne Projektbeschreibung. Ich will z.B. zu einem Bestimten Zeitpungt ein bestimmtes Bit-Muster an einen IO-Warrior schicken, der am USB-Port hängt, um z.B. das Licht in einem Haus einzuschalten. 😞



  • Ich nehm mal an, du machst das mit einem bzw mehreren Timern ?
    So in der Art wie hier ?

    void __fastcall TForm1::ZeitChange(TObject *Sender)
    {
    TDateTime jetzt=Now();
    int msek=MilliSecondsBetween(Now(),Zeit->DateTime);
    if(CompareTime(Zeit->DateTime,jetzt)==LessThanValue)msek=(60*60*24*1000)-msek;
    Timer1->Interval = msek;
    Timer1->Enabled = true;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    Timer1->Interval = (60*60*24*1000);
    if(CompareDate(Now(),Datum->DateTime)==EqualsValue)
    {
       ...
    }
    }
    


  • Nö, so eigentlich nicht. eher so:

    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {

    if(CompareTime(DateTimePicker1->DateTime,Now())==EqualsValue)
    {
    ...
    }

    Den Teil mit ZeitChange habe ich nicht verstanden? 😕



  • Den Teil mit ZeitChange habe ich nicht verstanden?

    Der Timerinterval wird gesetzt, wenn du eine andere Uhrzeit einstellst.
    Es wird dann berechnet in wieviel Millisekunden das Timer-Ereignis aufgerufen werden soll.
    Der Timer wird also zu einem festen Zeitpunkt aufgerufen (dem im DateTimePicker ausgewählten).
    Dann beim Timeraufruf wird dann noch das aktuelle Datum mit dem ausgewählten Datum verglichen ...

    In deiner Version müsstest du im Sekundentakt deinen Timer aufrufen.



  • norman_71 schrieb:

    Ich nehm mal an, du machst das mit einem bzw mehreren Timern ?
    So in der Art wie hier ?

    void __fastcall TForm1::ZeitChange(TObject *Sender)
    {
    TDateTime jetzt=Now();
    int msek=MilliSecondsBetween(Now(),Zeit->DateTime);
    if(CompareTime(Zeit->DateTime,jetzt)==LessThanValue)msek=(60*60*24*1000)-msek;
    Timer1->Interval = msek;
    Timer1->Enabled = true;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    Timer1->Interval = (60*60*24*1000);
    if(CompareDate(Now(),Datum->DateTime)==EqualsValue)
    {
       ...
    }
    }
    

    Ich habe das mal Testen wollen, mußte aber feststellen. Das es Ausdruck Zeit nicht kennt.



  • 😃 Alter ich hab's 👍

    Ich ändere nicht den Interval des Timers. Sondern vergleiche einfach nur die Stunden und die Minuten.

    bool TForm1::Vergleiche(TDateTime Zeit1,TDateTime Zeit2)
    {
    unsigned short hour1,min1,sec1,msec1;
    unsigned short hour2,min2,sec2,msec2;
    Zeit1.DecodeTime(&hour1,&min1,&sec1,&msec1);
    Zeit2.DecodeTime(&hour2,&min2,&sec2,&msec2);
    return  hour1==hour2 && min1 == min2;
    }
    
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    unsigned short hour,min,sec,msec;
    
    if(Vergleiche(DateTimePicker1->DateTime,Now()))
    {
    ...
    }
    

    Danke für deine Tip's



  • Ich habe das mal Testen wollen, mußte aber feststellen. Das es Ausdruck Zeit nicht kennt.

    Zeit ist ein DateTimePicker ...


Anmelden zum Antworten