Ladefehler bei nicht vorhandener Funktion umgehen

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Ladefehler bei nicht vorhandener Funktion umgehen

Re: Ladefehler bei nicht vorhandener Funktion umgehen

Post by Johnny R » 15 Jul 2018, 02:18

Bin begeistert! Funktioniert sehr gut. Vielen Dank!

Re: Ladefehler bei nicht vorhandener Funktion umgehen

Post by nnnik » 14 Jul 2018, 06:14

Zusätzlich zu der Technik die just me empfiehlt würde ich dir empfehlen dann eine Meldung anzuzeigen, dass eine neue AHK Version benötigt wird.
Zudem würde ich eine superglobale Variable max anlegen welche den Wert von func("max") enthält:

Code: Select all

if (A_AHKVersion...) { ;ich erinnere mich nicht mehr an den exakten Vergleich
	Msgbox Your AutoHotkey Version is too outdated to run this script please update to make it work. 
	Exit App, -1
}
global max := func("max")
. 
. 
. 
x := %max%(var1, var2)
Das erlaubt es dir jederzeit einen Ersatz einzubauen der für eine niedrigere AHK Version alle Aufrufe zu ersetzen.

Re: Ladefehler bei nicht vorhandener Funktion umgehen

Post by just me » 14 Jul 2018, 03:47

:arrow: IsFunc()

Code: Select all

#NoEnv
Var1 := 1
Var2 := 2
X    := 3

If IsFunc(FuncRef := Func("Max"))
   X := FuncRef.Call(Var1, Var2)

MsgBox, %X%
Return

Re: Ladefehler bei nicht vorhandener Funktion umgehen

Post by wolf_II » 14 Jul 2018, 03:09

Try, x := Max(Var1, Var2) ist keine "Präprozessoranweisung", sondern ein normaler Befehl. I hoffe das hilft.
Tested, funktioniert nicht, sorry

Ladefehler bei nicht vorhandener Funktion umgehen

Post by Johnny R » 14 Jul 2018, 02:58

Angenommen, ich habe folgendes Skript:

Code: Select all

Var1 := 1
Var2 := 2
x    := 3
   
If A_AHKVersion>= 1.1.27
   x := Max(Var1, Var2)

MsgBox % x
Return
Die Funktion MAX() gibt es in AHK erst ab Version 1.1.27. Wenn ich die Funktion in einem Skript unter einer AHK-Version verwende, die niedriger als v1.1.27 ist, gibt es eine Fehlermeldung und das Skript wird unter Hinweis auf die inexistente Version nicht geladen. Gibt es eine Möglichkeit die Zeile 6 (mit dem Inhalt x := Max(Var1, Var2)) per "Präprozessoranweisung" einfach zu umgehen um den Ladefehler zu vermeiden, also so, dass diese Zeile bei niedrigeren Versionen ganz einfach nicht "compiliert", bzw. interpretiert wird, also von AHK als "Kommentar" o. ä. verstanden und behandelt wird wird?

Top