Bastelei mit +=

  • Nach langer Inaktivität melde ich mich doch gleich mit ner neuen Anfrage zu einer Lösung oder zumindest nach den Schritten. Bin ja so dreist :P

    Ich wollt zu einer Startzeit (07:00) in einem Label immer alle 10 Sekunden 1 Minute hinzufügen.
    Das heisst, ich habe es mit

    Code
    [autoit]$aktuellezeit=guictrlread($labelzeit)
    $aktuellezeit += "00:01"[/autoit]

    Da ergibt sich das Problem schon. Die Sau behandelt mir die Null wie Luft. Wobei er im normalen Fall eigentlich auch Recht hat, hier aber nicht.
    Fakt ist: 0 und : wird ignoriert, es wird auf 7 gesetzt und dann bleibt er stehen.

    Wie bring ich das böse Ding dazu die Nullen und den Doppelpunkt als Uhrzeit zu behandeln?

    3 Mal editiert, zuletzt von lukiono (23. September 2010 um 02:35)

  • Wenn du das Label ausliehst bekommst du natürlich einen string und mit dem kann man schlecht rechnen
    Also ich würde mir einfach 2 variablen behalten die ich ändere.

    [autoit]


    $stunde, $minute
    ; rumrechnen wie du willst
    Guictrlsetdata($input, $stunde & ":" & $minute)

    [/autoit]

    Ansonsten kannst du auch auslesen und dann mit Stringsplit oder so arbeiten, finde ich aber unpraktischer.
    Auch gut möglich dass es eine _Date funktion gibt die das was du willst erledigt.

  • Hallo lukiono,

    Die Sau behandelt mir die Null wie Luft. Wobei er im normalen Fall eigentlich auch Recht hat, hier aber nicht.


    Hat er wohl. In Anlehnung an deine heftige Wortwahl siehe:
    http://1.2.3.11/bmi/www.autoit…avatar-1019.jpg

    Zur Begründung warum die *** Recht hat, += ist ein Zuweisungsoperator mit gleichzeitiger Addition, er nimmt also von 07:00 den gültigen Teil einer Zahlenvariablen =7 und addiert dazu den gültigen Teil der zu addierenden Variable (00:01) = 0 ergibt 7. Du musst also mit

    [autoit]

    $aktuellezeit="07:00";kommt bei dir von GuiCtrlRead
    $Time = StringSplit($aktuellezeit,":";Wert trennen)
    $Time[2] += 1;1 Minute addieren
    $aktuellezeit = StringFormat("%02d:%02d",$Time[1],$Time[2];wieder formatiern)
    ConsoleWrite($aktuellezeit & @CRLF)
    [autoit]_dateAdd

    [/autoit]

    Du kannst es aber auch über _dateAdd machen, dazu dieses kleine Beispiel:

    [autoit]

    #include <date.au3>
    $aktuellezeit="1970/01/01 07:00"
    $aktuellezeit = _DateAdd('n',1,$aktuellezeit)
    ConsoleWrite(StringRight($aktuellezeit,5) & @CRLF)

    [/autoit]

    mfg autoBert

    2 Mal editiert, zuletzt von autoBert (18. September 2010 um 02:22) aus folgendem Grund: TAG's korrigiert

  • Danke AutoBert
    Das Wort meinte ich keinesfalls beleidigend oder gar böse. Eher ironisch. Entschuldige wenn es bei dir anstössig rüber kam.

    Danke auch an Schnitzel

    MfG
    Lukas

  • Hallo lukinono,

    Eher ironisch.

    dass war mir klar, ich konnte mir aber darauf hin den (bildlichen) Reim nicht verkneifen.

    Dein Problem dürfte ja dadurch gelöst sein, daher wäre es schön wenn du den Thread auch auf gelöst setzt. Einfach 1. Beitrag bearbeiten, Präfix (nähe Überschrift) ändern und speichern (absenden)

    mfg autoBert

  • Nun, die Zeitfunktion zeigt sich ganz gut.
    Allerdings ergibt sich daraus eine kleine Frage:

    Ich habe schon viele Suchbegriffe eingegeben und nichts gefunden.
    Ich möchte die Funktion nicht mit Date Add machen.
    Wie bringe ich es so hin, dass er mir z.B. ab 07:59 ein 08:00 macht?
    D.h. die normale 59 Minuten Grenze sollte gelten.

    MfG

  • [autoit]

    Local $hour=07, $minutes=59
    MsgBox(0, "Zeit vorher", $hour&":"&$minutes)
    sleep(60000)
    If $minutes=60 Then
    $minutes=00
    If $hour=23 Then
    $hour=00
    Else
    $hour+=1
    EndIf
    EndIf
    If StringLen($hour)=1 Then $hour="0"&$hour
    If StringLen($minutes=1 Then $minutes="0"&$minutes
    MsgBox(0, "Zeit nachher", $hour&":"&$minutes)

    [/autoit]
  • Danke dir, Ineluki
    Funzt alles prima nach kleinen Umbauten.
    Wenn Interesse an der Spielzeitfunktion besteht(?), kann ich sie gerne veröffentlichen ;)

    MfG