Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

PseudoArray in echten Array umwandeln


  • Please log in to reply
2 replies to this topic
IsNull
  • Moderators
  • 990 posts
  • Last active: May 15 2014 11:56 AM
  • Joined: 10 May 2007
Folgende Funktion wandelt einen Pseudo Array in einen echten um:

 
/**********************************************************************
* ToRealArray
* 
* Wandelt einen Pseudo-Array in einen echten Array. Die länge kann entweder über size angegeben werden, oder, wenn dieser Parameter fehlt, wird der 0-Index verwendet.
*
* pseudoArrayName    ->  Der Name (String) der Variablen
* size [optional]    ->  Die Anzahl Elemente im pseudo Array
***********************************************************************
*/
ToRealArray(pseudoArrayName, size=-1)
{
	global

	dyn := ""
	realArray := []
	
	if(size == -1)
	{
	  	dyn := pseudoArrayName . "0"
		size := %dyn%
	}
	
	loop, % size 
	{
		dyn := pseudoArrayName . A_Index
		realArray.Insert(%dyn%)
	}
	return realArray
}
 
 
 
Beispiel:
 
myString := "asdf|blub|woot|boon"
StringSplit, pseudoArr, myString, |

arr := ToRealArray("pseudoArr")

for each, item in arr
	MsgBox % item

exitapp



Bentschi
  • Moderators
  • 120 posts
  • Last active: Sep 05 2014 02:12 AM
  • Joined: 26 Nov 2008

Klingt sinnvoll.

Vor allem da es immer noch einige Commands gibt die nur ein Pseudo-Array ausgeben.

Nicht zuletzt das selbe bei den Startup-Parametern.

 

StringSplit hatte ich ewigkeiten schon nicht mehr in Verwendung, da ich normalerweise gleich die Array-Schreibweise verwende.

Auch ansonsten ist while und RegExMatch mächtiger als StringSplit, für zB. XML und co.

 

Alles in allem denke ich, dass es langsam an der Zeit wäre so eine Funktion Built-In zu machen, oder StringSplit und co. in einem richtigen Array ausgeben zu lassen.



SAPlayer
  • Members
  • 403 posts
  • Last active: Apr 11 2014 04:45 PM
  • Joined: 06 Nov 2012

Es sollte auch so sein, dass man bei StringSplit als Trennzeichen eine Zeichenkette nehmen kann, geht ja bei einer Parse-loop auch.