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
cT active aid - HotStrings - Script funktioniert nicht
Moderator: jNizM
Re: cT active aid - HotStrings - Script funktioniert nicht
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.
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.
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
}
Re: cT active aid - HotStrings - Script funktioniert nicht
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 hierist überflüssig. Die Zuweisung per := erwartet immer einen Ausdruck.
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)
Re: cT active aid - HotStrings - Script funktioniert nicht
ich habe dein script unter der version 1.0.47.06 ausgeführt (allerdings ohne CT active aid) und folgende 3 Zeilen sind okay:Hubert
Code: Select all
dat := % AddMonth(A_YYYY A_MM,-5)
dat := AddMonth(A_YYYY A_MM,-5)
dat = % AddMonth(A_YYYY A_MM,-5)
Re: cT active aid - HotStrings - Script funktioniert nicht
just me hat bereits darauf hingewiesen. Die Zuweisung sieht so aus:
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:
Ein = zusammen mit einer Variablen und einem String
Das ließe sich aber so schreiben:
Ein = findest du ansonsten auch bei Vergleichen z.B.
Hier wird ein String "08.07.2019" mit dem Inhalt der Variablen dat verglichen. Sind sie gleich erhälst du eine Meldung.
Code: Select all
dat := AddMonth(A_YYYY A_MM,-5)
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%.
Code: Select all
dat := AddMonth(A_YYYY A_MM,-5)
textausgabe := "Termin ist am " dat "."
Code: Select all
dat := AddMonth(A_YYYY A_MM,-5)
If ( dat = "08.07.2019")
Msgbox, Antwort schreiben, nicht vergessen!
Re: cT active aid - HotStrings - Script funktioniert nicht
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:
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
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,
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 (91.43 KiB) Viewed 3193 times
Re: cT active aid - HotStrings - Script funktioniert nicht
Versuche es mit der activAid Erweiterung UserHotkeys und starte dort die .ahk (v2) mit einem zugewiesenen Tastenkürzel
Who is online
Users browsing this forum: william_ahk and 6 guests