cT active aid - HotStrings - Script funktioniert nicht

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

googll
Posts: 2
Joined: 05 Dec 2019, 08:10

cT active aid - HotStrings - Script funktioniert nicht

06 Dec 2019, 05:25

Hallo,

bin bei AHK neu, hab bis jetzt immer nur Texte per Hostrings über die ct active aid Scripte ersetzen lassen.
Wollte mit jetzt ein Script machen um das aktuelle Datum bzw. ein Datum von vor x Monaten senden zu lassen.

Folgendes Script funktioniert unter der aktuellen Version ohne Probleme, habe ich gefunden und modifiziert:

dat := % AddMonth(A_YYYY A_MM,-5)
Send % SubStr(dat,1,4) "-" SubStr(dat,5,2) "-" A_DD
Send {SPACE}{Left 3}+{Right 3}

AddMonth(d,a)
{
M := SubStr(d,5,2) + a
Return SubStr(d,1,4) + floor((M-1)/12) . SubStr(0 . REM(M,12), -1, 2)
}
REM(n,m)
{
Return n > 0 ? mod(n-1,m)+1 : mod(n,m)+m
}

nehme ich das Script und packe es in den Hotstring Teil vom active Aid rein kommt die Fehlermeldung:

Line Text: dat `:= % AddMonth(A_YYYY A_MM,-5)
Error: This line does not contain a recognized action.

das komische ist das das ´ gar nicht in dem Text vorkommt, sonder nur in der Dialogbox.
Active aid basiert aber noch auf dem alten AHK 1.0.47
Es scheint an dem := zu liegen, denn nur mit = gibt es keinen Scriptfehler aber das Script funktioniert natürlich nicht.

Das mal eben umzustricken ist leider nicht machbar und wenn ich die neue AHK drüber installiere, gibts nur noch mehr Fehler.

Daher die Frage an die Experten:

kann ich das Script anders umschreiben damit es mit active aid funktioniert?
andere Möglichkeit wäre wohl noch herauszufinden wo das ` herkommt und welche Stelle im active aid Script man patchen muss.

Gruß
googll
haichen
Posts: 364
Joined: 09 Feb 2014, 08:24

Re: cT active aid - HotStrings - Script funktioniert nicht

06 Dec 2019, 08:58

Jeeswig hat soetwas schon gemacht. https://autohotkey.com/boards/viewtopic.php?f=5&t=27910&p=161729#p161729
Einen Monat zurück ergibt allerdings zB. am 31. März den 28. Februar. Muß man immer im Hinterkopf behalten. Deshalb (Schaltjahre etc) ist seine Funktion auch recht Komplex. Einfacher wäre es bei kleineren Zeitabschnitten.
Da könntest du https://www.autohotkey.com/docs/commands/EnvAdd.htm (oder envsub) nutzen. Und Formattime für das Datums(Zeit)format.

Code: Select all

;https://www.autohotkey.com/boards/viewtopic.php?p=161729#p161729

::LastM::  ;hotstring
LM:=JEE_DateAddMonths(a_now, -5,"dd.MM.yyyy")
sendinput {raw}%LM%
return

return

JEE_DateAddMonths(vDate, vNum, vFormat := "yyyyMMddHHmmss")
{
	;make date the standard 14-character format:
	vDate .= SubStr(19990101000000, StrLen(vDate)+1)
	vYear := SubStr(vDate, 1, 4), vMonth := SubStr(vDate, 5, 2)
	vDay := SubStr(vDate, 7, 2), vTime := SubStr(vDate, 9)

	vMonths := (vYear*12) + vMonth + vNum
	vYear := Floor(vMonths/12)
	vMonth := Mod(vMonths,12)
	(!vMonth) && (vYear -= 1, vMonth := 12)

	if (vMonth = 2) && (vDay > 28)
		if !Mod(vYear,4) && (Mod(vYear,100) || !Mod(vYear,400)) ;4Y AND (100N OR 400Y)
			vDay := 29
		else
			vDay := 28
	if (vDay = 31) && RegExMatch(vMonth, "^(4|6|9|11)$")
		vDay := 30

	vDate := Format("{:04}{:02}{:02}" vTime, vYear, vMonth, vDay)
	if !(vFormat == "yyyyMMddHHmmss")
		FormatTime, vDate, % vDate, % vFormat
	return vDate
}
Das Skript kannst du als ahk-Datei speichern und mit doppelklick ausführen. Es läuft dann unabhängig von Activaid. Autohotkey muß allerdings installiert sein.
just me
Posts: 6805
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: cT active aid - HotStrings - Script funktioniert nicht

06 Dec 2019, 13:10

Hi,

ich habe mir die Hilfedatei von 1.1.47.06 heruntergeladen und kurz überflogen. Ich konnte auf die Schnelle nichts finden, was Deinen Code fehlerhaft erscheinen lässt. Es gab sogar schon Ternaries!

Vielleicht ist doch beim Übertragen des Codes etwas schief gelaufen. Viel ist es ja nicht, Du könntest deshalb versuchen, das noch einmal per Hand einzugeben. Wenn es dann immer noch nicht läuft, solltest Du mal zeigen, wo/wie Du es eingebaut hast.

Das 'einsame' Prozentzeichen hier

Code: Select all

dat := % AddMonth(A_YYYY A_MM,-5)
ist überflüssig. Die Zuweisung per := erwartet immer einen Ausdruck.
hd0202
Posts: 152
Joined: 04 Oct 2013, 03:07
Location: Germany near Cologne

Re: cT active aid - HotStrings - Script funktioniert nicht

07 Dec 2019, 13:50

ich habe dein script unter der version 1.0.47.06 ausgeführt (allerdings ohne CT active aid) und folgende 3 Zeilen sind okay:

Code: Select all

dat := % AddMonth(A_YYYY A_MM,-5)
dat := AddMonth(A_YYYY A_MM,-5)
dat = % AddMonth(A_YYYY A_MM,-5)
Hubert
haichen
Posts: 364
Joined: 09 Feb 2014, 08:24

Re: cT active aid - HotStrings - Script funktioniert nicht

08 Dec 2019, 06:02

just me hat bereits darauf hingewiesen. Die Zuweisung sieht so aus:

Code: Select all

dat := AddMonth(A_YYYY A_MM,-5)
https://ahkde.github.io/docs/Functions.htm

Ein einzelnes % findest du, wenn du ein Funktionsergebnis in einem Befehl nutzen willst, z.B. zusammen mit einem String:

Code: Select all

MsgBox, % "Termin ist am " AddMonth(A_YYYY A_MM,-5) "."

Ein = zusammen mit einer Variablen und einem String

Code: Select all

dat := AddMonth(A_YYYY A_MM,-5)
textausgabe = Termin ist am %dat%.
Das ließe sich aber so schreiben:

Code: Select all

dat := AddMonth(A_YYYY A_MM,-5)
textausgabe := "Termin ist am " dat "."
Ein = findest du ansonsten auch bei Vergleichen z.B.

Code: Select all

dat := AddMonth(A_YYYY A_MM,-5)
If ( dat = "08.07.2019")
 Msgbox, Antwort schreiben, nicht vergessen!
Hier wird ein String "08.07.2019" mit dem Inhalt der Variablen dat verglichen. Sind sie gleich erhälst du eine Meldung.
googll
Posts: 2
Joined: 05 Dec 2019, 08:10

Re: cT active aid - HotStrings - Script funktioniert nicht

20 Dec 2019, 03:29

So,
sorry für die späte Rückmeldung, war leider etwas krank.

Ich habe rausgefunden das mein Script soweit auch unter der alten AHK Version läuft. Lediglich der Syntax Check vom Active Aid funktioniert nicht. Ersetze ich die ':=' durch ein '=' und speicher das im ActiveAid ab, bekomme
ich eine Datei Hotstrings.ini im Active Aid Verzeichnis mit folgendem Inhalt:

Code: Select all

#IfWinActive,
::##::
      dat = % AddMonth(A_YYYY A_MM,-5)
      Send % SubStr(dat,1,4) "-" SubStr(dat,5,2) "-" A_DD
      Send {SPACE}{Left 3}+{Right 3}
      AddMonth(d,a)
      {
      M = SubStr(d,5,2) + a
      Return SubStr(d,1,4) + floor((M-1)/12) . SubStr(0 . REM(M,12), -1, 2)
      }
      REM(n,m)
      {
      Return n > 0 ? mod(n-1,m)+1 `: mod(n,m)+m
      }
Return
:*:#te::test
#IfWinActive,
Ersetze ich hier wiederrum die '=' durch ':=' und speicher es ab, funktioniert alles wunderbar. Also kein genereller Fehler der Autoit Verison. Allerdings kann ich jetzt auch nicht mehr activeAid nutzen um komfortabel die Zuordnung
anderer AHK Befehle zu ändern, da beim Syntaxcheck der händisch geänderten Datei das ActiveAid wieder auf die Fresse fliegt.
Also werde ich wohl für dieses Problem das AHK Script unabhängig vom ActiveAid laufen lassen...

Christian
Attachments
CtFehler.jpg
CtFehler.jpg (91.43 KiB) Viewed 1706 times

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 30 guests