Überprüfen, ob der Inhalt der Variable mit einem der Elemente aus der Liste übereinstimmt Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

KHA
Posts: 408
Joined: 21 Aug 2018, 11:11

Überprüfen, ob der Inhalt der Variable mit einem der Elemente aus der Liste übereinstimmt

20 Dec 2019, 17:31

Hallo,
wie kann ich sowas realisieren?

Code: Select all

mynumber := 7
myname := "ahk"
mylist := "abc,xyz,klm,jkl,ahke,asd,"

if (mynumber > 5) && myname not in %mylist%
MsgBox, YES
Else
MsgBox, NO
Wenn, ich das mache bekomme die Meldung:
Error: The following variable name contains an illegal character:
Liegt wahrscheinlich daran, dass contains in Ausdrücken nicht unterstützt wird.

Was ich auch nicht verstehe, wenn mein Var mylist mehr als 16383 Zeichen enthält, bekomme ich die Meldung nicht.
Wieso nicht? Aus Doku wurde ich nicht schlau, heißt dass das wenn meine Vergleich Liste mehr Zeichen enthält als 16383 das Rest ignoriert oder wird es automatisch in mehreren Listen aufgeteilt


Wenn ich mit InStr versuche, geht auch nicht, weil inStr ja nicht exakt überprüft.

Code: Select all

mynumber := 7
myname := "ahk"
mylist := "abc,xyz,klm,jkl,ahke,asd,"
if (mynumber > 5) &&  !inStr(mylist, myname)
MsgBox, YES
Else
MsgBox, NO

LG
hd0202
Posts: 183
Joined: 04 Oct 2013, 03:07
Location: Germany near Cologne

Re: Überprüfen, ob der Inhalt der Variable mit einem der Elemente aus der Liste übereinstimmt  Topic is solved

21 Dec 2019, 04:53

Code: Select all

mynumber := 7
myname := "ahk"
mylist := ",abc,xyz,klm,jkl,ahke,asd,"	; komma vorne einfuegen
if (mynumber > 5) &&  !inStr(mylist, "," myname ",")	; mit kommas suchen
MsgBox, YES
Else
MsgBox, NO
Hubert
User avatar
haichen
Posts: 631
Joined: 09 Feb 2014, 08:24

Re: Überprüfen, ob der Inhalt der Variable mit einem der Elemente aus der Liste übereinstimmt

21 Dec 2019, 09:18

16383 Zeichen ist die maximale Länge einer Skriptzeile.
In einer Variable kann aber mehr "drin" sein, deshalb kannst du die daten so zusammenfassen.

Code: Select all

list1 =
(LTrim Join             ;max 16383 char 
abc,xyz,klm,jkl,ahke,asd,ah
)

list2 := "fdg,r5z,rewr,567h,erter"  ;max 16383 char 

list:=list1 "," list2   ; bis 64MB (4095MB) Größe

mynumber := 7
myname := "ahk"
inlist:= false

; https://ahkde.github.io/docs/commands/IfIn.htm
if myname in %list%
   inlist:= true

if (mynumber > 5) and inlist
   MsgBox, YES
Else
   MsgBox, NO
Last edited by haichen on 21 Dec 2019, 09:26, edited 1 time in total.
User avatar
haichen
Posts: 631
Joined: 09 Feb 2014, 08:24

Re: Überprüfen, ob der Inhalt der Variable mit einem der Elemente aus der Liste übereinstimmt

21 Dec 2019, 09:25

https://ahkde.github.io/docs/commands/_MaxMem.htm
Eine Variable kann normalerweise 64 MB groß sein.
mit #MaxMem kann man das auf maximal 4095 MB erweitern.
KHA
Posts: 408
Joined: 21 Aug 2018, 11:11

Re: Überprüfen, ob der Inhalt der Variable mit einem der Elemente aus der Liste übereinstimmt

23 Dec 2019, 09:21

vielen lieben Dank, beide Lösungsvorschläge funktionieren.
@haichen
besonderen Dank für die Erklärung

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 36 guests