Die AHK-V2 Doku enthält V1-Scripte

Alles, was nicht in die anderen Foren gehört.

Moderator: jNizM

StefanL38
Posts: 18
Joined: 12 Oct 2019, 03:41

Die AHK-V2 Doku enthält V1-Scripte

06 Apr 2024, 11:42

Hallo allerseits,

Ich kenne mich nur ganz wenig mit AHK aus.
Über Syntaxdetails weiß ich praktisch nichts.

Seit längerem mal wieder was mit AHK gemacht.
Dabei in die V2 Doku reingeschaut
Siehe die roten Rahmen
image.png
image.png (72.98 KiB) Viewed 105 times
Aber die Beispielcodes scheinen V1 zu sein.
Sagt zumindest der User der mir in diesem Thread geantwortert hat
viewtopic.php?f=82&t=128370&p=566649#p566649

Gibt es eigentlich irgendwo eine Stelle wo man so etwas melden kann?

viele Grüße

Stefan
gregster
Posts: 9036
Joined: 30 Sep 2013, 06:48

Re: Die AHK-V2 Doku enthält V1-Scripte

06 Apr 2024, 12:58

Nur weil ein Codeschnipsel mit v1 ohne Fehlermeldung ausführbar ist, ist es nicht zwangsläufig kein v2 Code.
Wie, meinst du, müsste die v2-Variante denn aussehen?

Die Verwendung von Gänsefüßchen für Windows-Titel spricht hier doch stark für v2, da nun flächendeckend Ausdrücke/expressions verwendet werden... nun ist speziell dieses Code-Beispiel mMn nicht ideal knostruiert, da bei Nichtexistieren der zu schließenden Outlookfenster ein sogenannter TargetError erscheint (ggf könnte man z. B. Try oder WinExist zusätzlich zum Einsatz bringen, s.u.) - aber auch das ist ziemlich v2-spezifisch und entspricht der v2-Philosophie - also wenn du den Code tatsächlich mit AHK v2 ausführst (probiere #Requires AutoHotkey v2+ hinzuzufügen, um das sicherzustellen).

Dieser Code lässt sich tatsächlich auch mit v1 ausführen, aber würde meines Erachtens wenig Sinn machen wegen der Ausdruckssyntax (die "s) und der fehlenden (automatischen) Persistenz von Timern in v1 (anders als in v2).

Gerade bei kurzen Code-Snippets kann es durchaus sein, dass sie von beiden Versionen ausführbar sind (im einfachsten Fall sowas wie a::ö) - allerdings häufig mit unterschiedlichem Ergebnis (wenngleich nicht immer offensichtlich) und nicht unbedingt sinnvoll. Würden die Windowstitel tatsächlich "s enthalten, dann könnte der Code oben wahrscheinlich in v1 Sinn machen (wenn man das Skript noch zusätzlich #persistent machen würde).

Aber die Beispielcodes scheinen V1 zu sein.
Sagt zumindest der User der mir in diesem Thread geantwortert hat
Es scheint mir, er sagt dir genau das Gegenteil; und weist dich mehrmals darauf hin, dass du v1-Code gepostet hast während du dich ständig auf die v2-Doku berufst (z. B. in der Frage der Persistenz von Timern). Das wird dich nirgendwo hinführen.

Verbesserungsvorschläge für die Dokumentation können hier gemacht werden: viewforum.php?f=86
Wenn du das mit dem TargetError bemängeln möchtest, wäre das dort eine Möglichkeit. Es könnte sein, dass dieses Beispiel noch aus einer früheren Entwicklungsphase von v2 stammt, als Target-Errors noch nicht implementiert waren. Aber ich würde schon sagen, dass dieses Beispiel eher v2- als v1-Code darstellt.

Das hier ist das entsprechende v1-Beispiel aus der Doku (wobei hier die Kommas unmittelbar nach den Kommandos optional sind):

Code: Select all

#Persistent
SetTimer, CloseMailWarnings, 250
return

CloseMailWarnings:
WinClose, Microsoft Outlook, A timeout occured while communicating
WinClose, Microsoft Outlook, A connection to the server could not be established
return
(man beachte die Abwesenheit von Anführungszeichen; dieser Code ist auf keinen Fall v2-kompatibel)

Als v2-Beispiel wäre ggf diese Variante besser:

Code: Select all

SetTimer CloseMailWarnings, 250

CloseMailWarnings()
{	
	Try {
		WinClose "Microsoft Outlook", "A timeout occured while communicating"
		WinClose "Microsoft Outlook", "A connection to the server could not be established"
	}
}
(Noch immer ausführbar in v1, aber noch immer nicht sinnvoll. Aber das weiß der AHK Launcher nicht. Nutze die #Requires-Direktive (in v1 oder v2), um die Verwendung einer bestimmten (Mindest-)Version zu erzwingen.)

Return to “Allgemeines”

Who is online

Users browsing this forum: No registered users and 21 guests