Frage zu _NowDate()

  • Hallo zusammen,
    bin ziemlicher Anfänger und benötige Unterstützung.
    Ich versuche einen Adventskalender zu schreiben, der jeden Tag ein Bild mit einem Passwort und einem Link zu einem verschlüsselten Zip-Archiv aufdeckt. Also Passwort ist in der Bilddatei und auf das Bild lege ich einen event der das zip-Archiv ausführt. Das funktioniert auch, aber Probleme habe ich mit den aufgedeckten Bildern

    Wenn ich nachstehendes Beispiel verwende wird das Bild nur am entsprechenden Tag angezeigt. Ich möchte aber, dass es auch an den darauffolgenden Tagen sichtbar bleibt.

    Code
    If _NowDate() = "01.12.2009" Then
    $Pic1 = GuiCtrlCreatePic("pw1.jpg", 50, 380, 150, 150)
    EndIf

    Habe versucht anstatt nur mit = mit >= zu arbeiten:
    "If _NowDate() >= "01.12.2009" Then"
    Aber dann wird das Bild auch schon im November angezeigt.
    Hat jemand ne Idee woran es liegen könnte und was ich ändern muss?

    Einmal editiert, zuletzt von jimmyeatworld (15. November 2009 um 07:32)

  • Für Dein Programm ist _NowDate() heute "14.11.2009", ASCII-mäßig größer als "01.12.2009".
    Deshalb ist die Bedingung erfüllt und das Bild wird angezeigt.

    Für solche Vergleiche brauchst Du das Datum auf beiden Seiten der Bedingung in der Form
    Jahr Monat Tag (JJJJ.MM.TT).

    Die AutoIt-Hilfe beschreibt dafür die Funktion _NowCalcDate().
    Diese liefert das heutige Datum nun mit "2009/11/14", also kleiner als "2009/12/01".

    Viel Spaß beim virtuellen Weihnachtsbasteln! ;)

    MfG ThPfund

    "Es könnte alles so einfach sein..."

  • Das liegt einfach daran, dass du Textstrings nicht vergleichen kannst.

    [autoit]

    #include <Date.au3>
    MsgBox("","",_NowDate())

    [/autoit][autoit][/autoit][autoit]

    If _NowDate() >= "24.12.2008" Then
    MsgBox(0,"","Weihnachten ist vorbei")
    EndIf

    [/autoit]


    Das wird nicht funktionieren.


    So aber klappt es:

    [autoit]

    #include <Date.au3>

    [/autoit][autoit][/autoit][autoit]

    $NowDateArray = StringSplit(_NowDate(),".") ; Teilt den String in 3 Arrayelemente, Tag, Jahr, Datum
    $NowDate = $NowDateArray[3]&"/"&$NowDateArray[2]&"/"&$NowDateArray[1]

    [/autoit][autoit][/autoit][autoit]

    $TageVergangen = _DateDiff("D","2008/12/24",$NowDate)

    [/autoit][autoit][/autoit][autoit]

    If $TageVergangen >= 1 Then
    MsgBox(0,"","Es kann aufgedeckt werden"&@CRLF&"Es sind schon "&$TageVergangen&" Tage seitdem vergangen.")
    Else
    MsgBox(0,"","Nein du darfst noch nicht aufdecken")
    EndIf

    [/autoit][autoit][/autoit][autoit][/autoit]


    Hier wäre dann die "kurze Version"

    [autoit]

    #include <Date.au3>
    $NowDateArray = StringSplit(_NowDate(),".")
    If _DateDiff("D","2008/12/24", $NowDateArray[3]&"/"&$NowDateArray[2]&"/"&$NowDateArray[1]) >= 0 Then MsgBox(0,"","Es kann aufgedeckt werden.")

    [/autoit]