Hallo,
wie kann ich in einem Ausdruck if (()) überprüfen, ob eine Variable eine nummer ist.
ist gibt den Befehl If Var is [not] Typ der aber in Ausdrücken nicht unterstützt wird.
Folgende IF-Bedinung ist gewünscht:
if (!Feld1) && (Feld2 is not number)
funktioniert aber nicht, da Die Operatoren "between", "is", "in" und "contains" werden in Ausdrücken nicht unterstützt..
Wer hat eine Idee?
in einem Ausdruck überpfüfen, ob eine Variable eine Zahl ist
Moderator: jNizM
Re: in einem Ausdruck überpfüfen, ob eine Variable eine Zahl ist
if ( (!Feld1) && !(Feld2&0 == 0) )
Wenn man eine Zahl mit 0 multipliziert ergibt das immer 0.
Gleiches gilt auch bei dem & operator. Wenn Feld2 allerdings keine Zahl ist dann ergibt das ganze allerdings einfach nur "" und nicht 0.
Das ist ein sicherer Weg um dies zu prüfen.
Wenn man eine Zahl mit 0 multipliziert ergibt das immer 0.
Gleiches gilt auch bei dem & operator. Wenn Feld2 allerdings keine Zahl ist dann ergibt das ganze allerdings einfach nur "" und nicht 0.
Das ist ein sicherer Weg um dies zu prüfen.
Recommends AHK Studio
Re: in einem Ausdruck überpfüfen, ob eine Variable eine Zahl ist
Versuch mal die Funktion:Folllast wrote:...
Ist gibt den Befehl If Var is [not] Typ der aber in Ausdrücken nicht unterstützt wird.
...
Wer hat eine Idee?
Code: Select all
;-------------------------------------------------------------------------------
isType(ByRef Var, Type) { ; boolean
;-------------------------------------------------------------------------------
If Var is %Type%
Return, True
}
Re: in einem Ausdruck überpfüfen, ob eine Variable eine Zahl ist
Danke euch beiden.
was genau macht der & Operator? die Dokumentation ist leide nicht so aufschlussreich.
Danke für eure Tips, hat sehr geholfen!
was genau macht der & Operator? die Dokumentation ist leide nicht so aufschlussreich.
Danke für eure Tips, hat sehr geholfen!
Re: in einem Ausdruck überpfüfen, ob eine Variable eine Zahl ist
if ((!Feld1) && !(Feld2&0 == 0) &&(Feld2))nnnik wrote:if ( (!Feld1) && !(Feld2&0 == 0) )
Wenn man eine Zahl mit 0 multipliziert ergibt das immer 0.
Gleiches gilt auch bei dem & operator. Wenn Feld2 allerdings keine Zahl ist dann ergibt das ganze allerdings einfach nur "" und nicht 0.
Das ist ein sicherer Weg um dies zu prüfen.
Hinzu kam noch eine dritte Bedingung, die Prüft, ob "Feld2" auch wirklich einen Wert enthält, da die IF Bedingung if ( (!Feld1) && !(Feld2&0 == 0) ) auch als WAHR gilt, wenn beide Werte "Leer" sind.
da stellt sich mir die Frage: wieviel Bedingungen kann man denn maximal stellen? Gibt es da eine limitierung vom Programm her oder ist die einzige Grenze der Arbeitsspeicher oder so....
Re: in einem Ausdruck überpfüfen, ob eine Variable eine Zahl ist
Aufgrund der Limitationen des Jetzigen AutoHotkey Frameworks kannst du maximal 127 - 255 Teilausdrücke in einen Ausdruck schreiben.
Recommends AHK Studio
Re: in einem Ausdruck überpfüfen, ob eine Variable eine Zahl ist
Bitweiser Operator
Das 'Bitweise Und' & vergleicht die Bits zweier Zahlen so, dass als Ergebnis eine 1 für die jeweilige Bitstelle geliefert wird, wenn das Bit in beiden Zahlen 1 (gesetzt) ist, anderenfalls eine 0. Weil die Zahl 0 keine Bitstelle mit dem Wert 1 enthält, ist das Ergebnis von Variable & 0 immer 0. AHK prüft aber vor der Verknüpfung, ob Variable überhaupt einen gültigen numerischen Wert enthält. Wenn nicht, wird als Ergebnis die leere Zeichenfolge "" geliefert.
Der Ausdruck ((Variable & 0) = 0) ist deshalb nur dann wahr, wenn Variable einen gültigen numerischen Wert enthält.
Alternativ kann man auch mathmatische Operationen wie ((Variable + 0) <> "") verwenden. Auf CPU-Ebene sind die bitweisen Operationen aber schneller. In Zeiten, in denen man schwachbrüstigen Rechnern anstrengende Aufgaben aufhalsen musste, konnte das durchaus von Bedeutung sein.
Das 'Bitweise Und' & vergleicht die Bits zweier Zahlen so, dass als Ergebnis eine 1 für die jeweilige Bitstelle geliefert wird, wenn das Bit in beiden Zahlen 1 (gesetzt) ist, anderenfalls eine 0. Weil die Zahl 0 keine Bitstelle mit dem Wert 1 enthält, ist das Ergebnis von Variable & 0 immer 0. AHK prüft aber vor der Verknüpfung, ob Variable überhaupt einen gültigen numerischen Wert enthält. Wenn nicht, wird als Ergebnis die leere Zeichenfolge "" geliefert.
Der Ausdruck ((Variable & 0) = 0) ist deshalb nur dann wahr, wenn Variable einen gültigen numerischen Wert enthält.
Alternativ kann man auch mathmatische Operationen wie ((Variable + 0) <> "") verwenden. Auf CPU-Ebene sind die bitweisen Operationen aber schneller. In Zeiten, in denen man schwachbrüstigen Rechnern anstrengende Aufgaben aufhalsen musste, konnte das durchaus von Bedeutung sein.
Who is online
Users browsing this forum: No registered users and 33 guests