array[1] += 1, hours ...

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

array[1] += 1, hours ...

24 Aug 2017, 09:25

... die in der AHK hilfe beschriebene option zum aufaddieren von zeitwerten funktioniert nicht mit variablen eines arrays.
Weder ...
  • EnvAdd, array[1], 1, hours
    EnvAdd,% array[1], 1, hours
noch ...
  • array[1] += 1, hours
... funktionieren.

Hier mein RegEx-phobischer ansatz am lebenden huhn ...

Code: Select all

line =  <programme start="20170823024000 +0200" stop="20170823032500 +0200" channel="hd.zdf.de">
array	 := StrSplit(line,"""")			; finde die inhalte innerhalb der anführungszeichen
sDate 	 := StrSplit(array[2],"+")		; finde inhalt links des pluszeichens: 20170823024000 (02:40:00)
eDate 	 := StrSplit(array[4],"+")		; finde inhalt links des pluszeichens: 20170823032500 (03:25:00)
MsgBox % sDate[1] "-" eDate[1]			; anzeige

sDate[1] += 60, Minutes					; addieren von 60m sollte hier 20170823034000 (03:40:00) ergeben
eDate[1] += 1, Hours					; addieren von 1h  sollte hier 20170823042500 (04:25:00) ergeben
MsgBox % sDate[1] "-" eDate[1]			; 20170823024060 (02:40:60) !! (AHK addiert jedoch jeweils zahlenwerte anstatt der erwarteten zeitwerte)
								        ; 20170823032501 (03:25:01)
FormatTime, sTime,% sDate[1], HH:mm
FormatTime, eTime,% eDate[1], HH:mm
MsgBox % sDate " - " eDate				; die variablen bleiben leer, da die durchs aufaddieren korrupten array[vars] sich nicht konvertieren lassen
Ähm, ist das jetzt ein bug oder ein feature?
Finde es etwas nervend das in der syntax zu EnvAdd generell die verwendung von variablen angezeigt wird, jedoch die array[vars] dabei unberücksichtigt bleiben ... :x :wtf:
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: array[1] += 1, hours ...

24 Aug 2017, 10:07

Moin,

das kann nicht funktionieren, weil die betroffenen Datum/Zeitfunktionen nur mit Variablen arbeiten und, obwohl die Variante += ein wenig danach ausschaut, Kommandos im 'traditionellen Sinne' und keine Ausdrücke sind.

Code: Select all

sDate[1] += 60, Minutes
Wenn Du das so machen willst, müsstest Du den Teil rechts von += in einer eigenen Funktion 'verkapseln'. (Edit: Quatsch, bzw. mit += nicht zu machen).

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: garry and 19 guests