Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 22:04

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Array-Funktionen mittels Variable ansprechen?!

Discussion on Array-Funktionen mittels Variable ansprechen?! within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jan 2015
Posts: 3
Received Thanks: 0
Array-Funktionen mittels Variable ansprechen?!

Hallo Zusammen,

ich bin Neuling und taste mich langsam voran. Habe ein paar Zeilen Code gebastelt und hoffe jetzt auf eure Hilfe. Folgendes:

Ich habe verschiedene 1D Arrays [je gleich dimensoniert]. Mein Ziel ist es jeden der Arrays mit einer Funktion zu bearbeiten, ohne dabei diese Funktion für jeden Array in den Code schreiben zu müssen. Die Arrays sollen der Funktion vielmehr mittels Schleife unterworfen werden.

Zur Veranschaulichung:

$arrayG_1 [100]
$arrayG_2 [100]
$arrayG_3 [100]
$arrayG_4 [100]
...
$arrayG_n

Unterschiede im Namen gibt es also nur durch die Ziffer am Ende. Meine Idee ist es, den jeweiligen Array in der Schleife durch den Namensstamm + der jeweiligen Ziffer anzugeben, welche dann mittels Schleife durchlaufen wird. Das könnte mE (wenn dieser Weg irgendwie gangbar ist) so aussehen:

"$arrayG_"&$Ziffer

Das ganze an einer beliebigen Funktion dargestellt, hier zB mit UBound

For $Ziffer= 1 to $anzahlArrays
UBound("$arrayG_"&$Ziffer)
Next

Funktioniert nur leider nicht !!
Den Code habe ich nicht hochgeladen, weil es mir nicht um meine spezielle Anwendung geht, sondern darum ob/wie sowas grds. machbar ist. Wenn nötig folgt der Code aber natürlich

Ich hoffe ihr könnt mir irgendwie helfen, ich bin schon am verzweifeln. Beste Grüße!
dacto
dacto is offline  
Old 01/18/2015, 03:37   #2
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Natürlich geht das nicht. Du könntest das entweder mit Assign / Execute umformulieren aber das ist schlampig und schlecht.

Stattdessen kannst du einfach 2D-Arrays nehmen und die erste Dimension als 1..2..3..n iterieren.
alpines is offline  
Thanks
1 User
Old 01/18/2015, 11:54   #3
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Abgesehen von der von Alpines vorgeschlagenen Möglichkeit, gibt es noch eine zweite Möglichkeit. Du könntest auch ein weiteres 1D Array anlegen, welches alle anderen Arrays enthält...

Beide Möglichkeiten haben ihre Vor- und Nachteile. Ein Array welches andere Arrays enthält wird von Autoit zwar weniger effizient gehandhabt, kann aber im Gegensatz zu mehrdimensionalen Arrays auch mit einer For - In Schleife durchlaufen werden (komfortabler)...

Code:
; Möglichkeit 1
Dim $array[4][100]
For $y=0 To UBound($array,1)-1
	For $x=0 To UBound($array,2)-1
		; Aktion mit $array[$y][$x]
	Next
Next

; Möglichkeit 2
Dim $array1[100], $array2[100], $array3[100], $array4[100], $arrays[4] = [$array1, $array2, $array3, $array4]
For $array In $arrays
	For $element in $array
		; Aktion mit $element
	Next
Next
Wenn man nicht unbedingt auf die Indizes angewiesen ist, kann es durchaus Sinn machen, Möglichkeit zwei zu nutzen.

Ein dritter Weg wäre die Nutzung der Eval Funktion. Dieser ist aber in jedem Falle der ineffizienteste und unsauberste Weg, da potentielle Fehler erst während der Laufzeit auftreten (Hier nur der Vollständigkeithalber mit aufgenommen):
Code:
; Möglichkeit 3
Dim $array1[100], $array2[100], $array3[100], $array4[100]
For $i=1 To 4
	$array = Eval("array" & $i)
	For $x=0 To UBound($array)-1
		; Aktion mit $array[$x]
	Next
Next
lolkop is offline  
Thanks
1 User
Old 01/19/2015, 03:07   #4
 
elite*gold: 0
Join Date: Jan 2015
Posts: 3
Received Thanks: 0
Hey, vielen Dank an euch beide. Ich versuche mal eure Lösungen in meinem Code umzusetzen und berichte dann. Bzw. frage weiter :-)
..dauert wahrscheinlich ein wenig...
Top auf jeden Fall, danke nochmal!!

Update: hat super geklappt. Ich habs mit Variante 1 umgesetzt. Merci :-)!!
dacto is offline  
Reply


Similar Threads Similar Threads
StringSplit Array-Variable Problem
04/02/2014 - AutoIt - 7 Replies
Tag zusammen, ich bins schon wieder Folgendes Problem: Aus einer .txt soll aus den Zeilen, die jeweils aus "Text"|"Text"|"Zahl" bestehen, in einer Schleife jede Zeile in ein Array gepackt werden. Aus dem Input von zwei Comboboxen, soll dann zusammen mit den Arrays ein Output erzeugt werden. Je nach Input der Combobox, gibt es in einer If-ElseIf-Schleife 4 mögliche Ausgänge für den Output. Von diesen 4 möglichen Ausgängen funktionieren allerdings nur 2, bei den andren beiden erhalte ich den...
subscript used with non-array variable
06/09/2013 - AutoIt - 6 Replies
Hey Leute, ich bin vor kurzem auf AutoIT gestoßen und interessiere mich für die ImageSearch Funktion, also habe ich mir ein kleines Script gebastelt. Das Script soll nach einem bestimmten Bild suchen und wenn dieses Bild nicht gefunden wurde die F1 Taste drücken (F1 generiert in einem Spiel für welches ich das Script nutzen will ein neues Bild). Das Script soll dann solange F1 drücken, bis ein bestimmtes Bild gefunden wurde, und dann eine MsgBox anzeigen. Da es mein erstes kleines mini...
Error: Subscript used with non-Array variable
09/16/2012 - AutoIt - 1 Replies
Ich bin gerade dabei ein Script zu machen, bei dem ich mehr Überblick über das Lets Play schauen bekomme. Nur jetzt häng ich an einer Fehlermeldung: Subscript used with non-Array variable. Der Fehler soll in Zeile 89 sein.. Ich hab zwar schon gegooglet, aber da hab ich keine konkrete antwort auf mein Problem bekommen.. In der Schleife in Zeile 88 Soll das Script überprüfen, ob ein Wert eingetragen ist und ob der noch aktiv ist, wenn es einen eintrag gibt, welcher noch aktiv ist, dann soll das...
[HELP] _FTP_ListToArrayEx Subscript used with non Array variable
02/29/2012 - AutoIt - 2 Replies
Ich habe das problem das bei meinem Script der Fehler : "Subscript used with non Array variable" auftaucht. Der Fehler ist angeblich auf Linie 25 aber _FTP_ListToArrayEx müsste eigentlich ein Array zurückgeben sogar bei einem Fehler und ich bin mir sicher das die Connection Stimmt. Ich hoffe ihr könnt mir Helfen Ja ich weis ich könnte das auch kürzer machen aber für`n Momment is es so okey also bitte unterlasst diesbezügliche Kommentare Script: #include-once
beliebiege variable aus array
04/21/2010 - AutoIt - 3 Replies
hallo zusammen. ich arbeite zur zeit an einem kleinen programm und dafür ist es nötig, dass autoit vergleicht, ob eine bestimmte variable innerhalb eines array vorhanden ist. das array enthält zum bsp variabeln mit den werten: 1, 2 und 3. jetzt soll überprüft werden, ob die variable a im array ist (a=1, z.B.). das array hab ich natürlich schon erstellt (1dimensional), nur der abgleich ist knifflig. ich habs mit if $a= $array_items Then $score= $score+1 EndIf



All times are GMT +1. The time now is 22:05.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.