Zeitdifferenz bestimmen



  • Hallo,

    ich möchte die Differenz von der aktuellen Uhrzeit und einer gespeicherten Uhrzeit bestimmen:

    int minuten_letzte_Sicherung=StrToInt(FormatDateTime("h", letzte_Sicherung_Uhrzeit)*60)+
                                 StrToInt(FormatDateTime("mm", letzte_Sicherung_Uhrzeit));
    int minuten_aktuell=StrToInt(FormatDateTime("h", Now())*60)+
                        StrToInt(FormatDateTime("mm", Now()));
    

    Die Differenz in Minuten mache ich folgendermaßen:

    int zeitdifferenz=minuten_aktuell - minuten_letzte_Sicherung;
    

    Problem: bei Kontrolle der Stunden beider Zeiten ist alles ok. Jedoch wenn ich die Minuten vergleiche, stelle ich fest, dass, obwohl diese beide auch gleich sein sollten in einem Beispiel immer eine Differenz von -5 herauskommt. Wo könnte der Fehler liegen?
    Danke!



  • schau dir doch mal die Funktionen IncDay, IncHour, IncMinute usw, an.
    Ausserdem kannst du folgendes tun:

    nextRun ist eine Objekteigenschaft vom Typ TDateTime , die an anderer Stelle gesetzt wurde!

    void __fastcall TfAccount::TimerTimer(TObject *Sender)
    {
    TDateTime TimeStamp;
    TimeStamp = TimeStamp.CurrentDateTime();
    
    if (nextRun < TimeStamp)
      {
       // AKTION !!!
      }
    TimeStamp = nextRun - TimeStamp;
    lNextRunValue->Caption = TimeStamp.TimeString();
    }
    


  • Hallo Clip,

    wo soll Dein "nextrun" herkommen? Erklär das doch mal!

    Gruß rudiS



  • Clip schrieb:

    nextRun ist eine Objekteigenschaft vom Typ TDateTime , die an anderer Stelle gesetzt wurde!

    Wer lesen kann ist klar im Vorteil. 😉



  • Hallo PuppetMaster2K,

    PuppetMaster2k schrieb:

    Clip schrieb:

    nextRun ist eine Objekteigenschaft vom Typ TDateTime , die an anderer Stelle gesetzt wurde!

    Wer lesen kann ist klar im Vorteil. 😉

    ja, du hattest recht, ich kann nicht lesen.

    Bei meinem BCB5 steht aber nichts von "nextRun" in der Hilfe, und was nicht geschrieben wurde, kann nicht gelesen werden. Ausserdem habe ich nur die Funktion IncMonth gefunden, aber keine IncDay, IncHour und IncMinute! Gelesen habe ich, dass TDateTime nur Methoden anzubieten hat und keine einzige Eigenschaft. Clip's nextRun must er sich also selbst gebastelt haben, wahrscheinlich als globale Variable, sonst könnte er diesen Programmabschnitt nie compilieren. Selbst wenn es eine Eigenschaft wäre, sollte der Aufruf dann nicht so erfolgen "MyDateTime->nextRun" oder "MyDateTime.nextRun"?

    ...wenigstens kann ich noch programmieren.

    mfG
    rudiS



  • Hallo Clip,

    hier möchte ich meine Frage präzisieren:

    Bei meinem BCB5 steht nichts von "nextRun" in der Hilfe. Ausserdem habe ich nur die Funktion IncMonth gefunden, aber keine IncDay, IncHour und IncMinute! Gelesen habe ich, dass TDateTime nur Methoden anzubieten hat und keine einzige Eigenschaft. Du must Dir nextRun also selbst gebastelt haben, wahrscheinlich als globale Variable. Selbst wenn es eine Eigenschaft wäre, sollte der Aufruf dann nicht so erfolgen "MyDateTime->nextRun" oder "MyDateTime.nextRun"?

    mfG
    rudiS



  • rudiS schrieb:

    ...wenigstens kann ich noch programmieren.

    Ganz sicher? 😉
    So unerklärlich ist das doch nun wirklich nicht.

    TDateTime nextRun;
    ...
    TimeStamp = nextRun - TimeStamp;
    ...
    

    P.S. Es ist nicht wirklich notwendig, sich mit quasi-identischen Beiträgen an jeden Diskussionsteilnehmer einzeln zu wenden.



  • Hallo Jansen,

    leider muß ich auch Dich anzählen. Ursprünglich haben die Jungs von einer OBJEKT-EIGENSCHAFT gesprochen. Was Du da aber präsentierst ist eine Instanz vom Typ TDateTime, also eine Variable. Ist ein Stier das selbe wie ein Ochse? Und wieso ist nextRun in dieser Funktion bekannt?

    Ich bitte doch um etwas mehr Präzision.

    P.S. Es ist nicht wirklich notwendig, sich mit quasi-identischen Beiträgen an jeden Diskussionsteilnehmer einzeln zu wenden.

    Entschuldigung: Noch bin ich neu hier, aber ich komm jetzt öfter. Ich wollte einfach erreichen das beiden Teilnehmern eine Mail gesendet wird, damit sie aufmerksam werden. Sollte das anders funktionieren, bitte ich um Aufklärung.

    mfG
    rudiS



  • rudiS schrieb:

    HUrsprünglich haben die Jungs von einer OBJEKT-EIGENSCHAFT gesprochen.

    Ach komm, nun versuch nicht, dich herauszureden.
    Statt einer "alleinstehenden" TDateTime-Instanz könnte es sich natürlich genauso um ein Member einer Klasse handeln. Vielleicht benutzt Clip ja eine erweiterte TForm-Klasse, die über eine Eigenschaft vom Typ TDateTime verfügt. Das macht doch keinen Unterschied.

    Ich wollte einfach erreichen das beiden Teilnehmern eine Mail gesendet wird, damit sie aufmerksam werden.

    Kein Problem. Wen jemand die entsprechende Funktion des Forums aktiviert dann bekommt er bei jedem neuen Posting eine Mail, egal, von wem das Posting stammt und an wen es gerichtet ist.



  • Hallo,

    nextRun ist eine Eigenschaft vom Typ TDateTime einer abgeleiteten Klasse von TForm.

    TDateTime nextRun
    

    Wieso Du die Inc* Funktionen nicht in der Hilfe finden kannst, weiß ich nicht. Kann es sein das dies Borland6 Funktionen sind?

    In Meinem Projekt musste ich die DateUtils ins Projekt einbinden:

    #include <dateutils.hpp>
    

    Viel Erfolg!


Anmelden zum Antworten