Anzahl Arrays verwenden

09/24/2013 14:21 RettAss#1
Tach zsm
und zwar möchte ich die ermittelte anzahl der vorhandenen arrays weiter verwenden um sie z.b. in ein label oder msgbox auszugeben, folgendes bsp.

Code:
......
$Label82 = GUICtrlCreateLabel("Skill:       Level:", 12, 186, 76, 17)
$Label83 = GUICtrlCreateLabel("Skill:       Level:", 12, 220, 76, 17)
$Label84 = GUICtrlCreateLabel("Skill:       Level:", 12, 203, 76, 17)
$Label85 = GUICtrlCreateLabel("Skill:       Level:", 12, 237, 76, 17)
$Label86 = GUICtrlCreateLabel("Skill:       Level:", 12, 254, 76, 17)
$Label87 = GUICtrlCreateLabel("Skill:       Level:", 12, 271, 76, 17)
$Label88 = GUICtrlCreateLabel("Skill:       Level:", 12, 288, 76, 17)
$Label89 = GUICtrlCreateLabel("Skill:       Level:", 12, 305, 76, 17)
$Label90 = GUICtrlCreateLabel("Skill:       Level:", 12, 322, 76, 17)
$Label91 = GUICtrlCreateLabel("Skill:       Level:", 12, 339, 76, 17)
$Label92 = GUICtrlCreateLabel("Skill:       Level:", 12, 356, 76, 17)
$Label93 = GUICtrlCreateLabel("Skill:       Level:", 12, 373, 76, 17)
$Label94 = GUICtrlCreateLabel("Skill:       Level:", 12, 389, 76, 17)
$Label95 = GUICtrlCreateLabel("Skill:       Level:", 12, 406, 76, 17)
$Label96 = GUICtrlCreateLabel("Skill:       Level:", 12, 423, 76, 17)
$Label97 = GUICtrlCreateLabel("Skill:       Level:", 12, 440, 76, 17)
$Label98 = GUICtrlCreateLabel("Skill:       Level:", 12, 457, 76, 17)
$Label99 = GUICtrlCreateLabel("Skill:       Level:", 12, 169, 76, 17)
$Label100 = GUICtrlCreateLabel("Skill:       Level:", 12, 152, 76, 17)
$Label101 = GUICtrlCreateLabel("Skill:       Level:", 12, 135, 76, 17)
$Label102 = GUICtrlCreateLabel("Skill:       Level:", 12, 118, 76, 17)
$Label103 = GUICtrlCreateLabel("Skill:       Level:", 12, 101, 76, 17)
$Label104 = GUICtrlCreateLabel("Skill:       Level:", 12, 85, 76, 17)
$Label105 = GUICtrlCreateLabel("Skill:       Level:", 12, 68, 76, 17)
$Label106 = GUICtrlCreateLabel("Skill:       Level:", 12, 51, 76, 17)
$Label107 = GUICtrlCreateLabel("Skill:       Level:", 12, 34, 76, 17)
.......

.......
$asskill1 = IniRead("test.ini","askill","id","")
$anzahl0 = StringSplit($asskill1, " ",2)
$anzahl1 = UBound($anzahl0)-1 ; 13 arrays
$anzahl1 ergibt 13 vorhandene Arrays, maximal sind 25 arrays möglich, so wie geb ich jetzt am besten die vorhandenen 13 arrays in die ersten 13 labels aus? (Wie viel arrays vorhanden sind weis man im vor herein nicht)

mfg
09/24/2013 14:34 xcyancali#2
Guictrlsetdata($label, anzahl0[Dein Array als Nummer]).


ich hoffe das es so richtig ist.
Bin gerade am Handy.
09/24/2013 14:38 alpines#3
Du musst aber aufpassen, da die nicht alle auf der selben Stelle sein sollen sondern verschoben, die Verschiebung müsstest auch in den Array schreiben und richtig anwenden.
09/24/2013 14:52 RettAss#4
Quote:
Originally Posted by xcyancali View Post
Guictrlsetdata($label, anzahl0[Dein Array als Nummer]).


ich hoffe das es so richtig ist.
Bin gerade am Handy.
naja aber wenn ich vorher nicht weiß wie viele es sind dann geht das so ja nicht bzw durch diesen befehl fügt sich ja nur ein wert in ein label.
Wenn ich es wüsste würde es ja so aussehen

Code:
GUICtrlSetData($h_name,$aZahlen[0])
GUICtrlSetData($a_name,$aZahlen[1])
GUICtrlSetData($g_name,$aZahlen[5])
GUICtrlSetData($?_name,$aZahlen[3])
GUICtrlSetData($p_name,$aZahlen[4])
GUICtrlSetData($b_name,$aZahlen[6])
GUICtrlSetData($w_name,$aZahlen[2])
GUICtrlSetData($?_name,$aZahlen[10])
GUICtrlSetData($?_name,$aZahlen[11])
GUICtrlSetData($?_name,$aZahlen[12])
GUICtrlSetData($?_name,$aZahlen[13])
So sieht es ja eig. aus, wenn ich nicht weiß wie viele es sind:
Code:
GUICtrlSetData($h_name,$aZahlen[0])
GUICtrlSetData($a_name,$aZahlen[x])
GUICtrlSetData($g_name,$aZahlen[x])
GUICtrlSetData($?_name,$aZahlen[x])
GUICtrlSetData($p_name,$aZahlen[x])
GUICtrlSetData($b_name,$aZahlen[x])
GUICtrlSetData($w_name,$aZahlen[x])
GUICtrlSetData($?_name,$aZahlen[x])
GUICtrlSetData($?_name,$aZahlen[x])
GUICtrlSetData($?_name,$aZahlen[x])
GUICtrlSetData($?_name,$aZahlen[x])
ich weiß ja nach UBound()-1 nur das es 13 Arrays sind, nun will ich ja für x die jeweilige anzahl [0] [1] [2]-[13]

Auf Deutsch gesagt: Erstelle mir die Anzahl an GUICtrlsetdata() befehle anhand der anzahl der ausgegebenen Arrays (13)

So sieht das Array aus:
Code:
[0]|14
[1]|19
[2]|15
[3]|18
[4]|16
[5]|46
[6]|48
[7]|17
[8]|20
[9]|1106
[10]|162
[11]|230
[12]|1087
[13]|401
09/24/2013 14:57 alpines#5
Ich hab dir mal schnell im Browser ein Beispiel zusammengeschrieben, ist ungetestet sollte aber funktionieren.
Code:
Global $aLabel[100]
Local $iStart = 34, $iPosDifference = 17

For $i = 0 To UBound($aLabel) - 1
	$aLabel[$i] = GUICtrlCreateLabel("Skill:       Level:", 12, $iStart + $i*$iPosDifference, 76, 17)
Next
09/24/2013 15:17 RettAss#6
Quote:
Originally Posted by alpines View Post
Ich hab dir mal schnell im Browser ein Beispiel zusammengeschrieben, ist ungetestet sollte aber funktionieren.
Code:
Global $aLabel[100]
Local $iStart = 34, $iPosDifference = 17

For $i = 0 To UBound($aLabel) - 1
	$aLabel[$i] = GUICtrlCreateLabel("Skill:       Level:", 12, $iStart + $i*$iPosDifference, 76, 17)
Next
hmm das ist jetzt eher auf die anzahl der label bezogen oder?
Die anzahl der label ist mir eig ziehmlich gleich, es stehen immer 25 label

Mir ist in erster linie die sache mit den Arrays wichtig. Villt erklär ich es mal anders.
Also ich habe ein ganzen array, der inhalt dieses arrays ist immer 1 dimensional und hat zwischen 1-25 rows.
In diesem Beispiel hat das array 13 Rows. Mit UBound()-1 bekomm ich raus das 13 rows vorhanden sind, nun will ich in die ersten 13 Labels diese 13 Rows eintragen lassen.
Code:
[0]|14
[1]|19
[2]|15
[3]|18
[4]|16
[5]|46
[6]|48
[7]|17
[8]|20
[9]|1106
[10]|162
[11]|230
[12]|1087
[13]|401

 GUICtrlSetData($h_name,$aZahlen[0])
			GUICtrlSetData($a_name,$aZahlen[1])
			GUICtrlSetData($g_name,$aZahlen[5])
			GUICtrlSetData($?_name,$aZahlen[3])
			GUICtrlSetData($p_name,$aZahlen[4])
			GUICtrlSetData($b_name,$aZahlen[6])
			GUICtrlSetData($w_name,$aZahlen[2])
			GUICtrlSetData($?_name,$aZahlen[10])
			GUICtrlSetData($?_name,$aZahlen[11])
			GUICtrlSetData($h_plus,$aZahlen[12])
			GUICtrlSetData($a_plus,$aZahlen[13])
09/24/2013 15:29 alpines#7
Dann musst du die Labels auch per Array erstellen, damit du sie besser ansteuern kannst als jeden Array einzeln. Das Script was ich dir geschrieben hab wird dir weiterhelfen.
Wenn du alle per Array erstellt hast, könnte es so aussehen:
Code:
For $i = 0 To UBound($aZahlen) - 1
	GUICtrlSetData($aLabel[$i], $aZahlen[$i])
Next
09/24/2013 15:30 butter123#8
For $i = 0 To 13
$aLabel[$i] = GUICtrlCreateLabel($i, 12, $iStart + $i*$iPosDifference, 76, 17)
Next

For $i = 0 to Ubound($aLabel-1)
Guictrlsetdata($aLabel,$zahlen[$i])
next

erstellt erst ein array mit 13 labels drin
füllt die labels danach mit $zahlen.
kann auch in einem schritt erledigt werden, habs hier aber mal getrennt.
hoffe ich hab dich richtig verstanden.
09/24/2013 15:48 RettAss#9
Quote:
Originally Posted by alpines View Post
Dann musst du die Labels auch per Array erstellen, damit du sie besser ansteuern kannst als jeden Array einzeln. Das Script was ich dir geschrieben hab wird dir weiterhelfen.
Wenn du alle per Array erstellt hast, könnte es so aussehen:
Code:
For $i = 0 To UBound($aZahlen) - 1
	GUICtrlSetData($aLabel[$i], $aZahlen[$i])
Next
Quote:
Originally Posted by butter123 View Post
For $i = 0 To 13
$aLabel[$i] = GUICtrlCreateLabel($i, 12, $iStart + $i*$iPosDifference, 76, 17)
Next

For $i = 0 to Ubound($aLabel-1)
Guictrlsetdata($aLabel,$zahlen[$i])
next

erstellt erst ein array mit 13 labels drin
füllt die labels danach mit $zahlen.
kann auch in einem schritt erledigt werden, habs hier aber mal getrennt.
hoffe ich hab dich richtig verstanden.
ok danke euch, das sieht schonmal vielversprechend aus, werds dann später mal testen
09/24/2013 16:20 alpines#10
Kopiert sich den Code einfach dreist raus, obwohl ich die Lösung schon gepostet hab - so wirds gemacht.