hallo zusammen,
ich glaube nicht, dass dies in programmieranfragen gehoert, denn es geht hierbei nicht um programmierfragen, sondern wohl eher um verstaendnisfragen und dabei ist es total egal um welche art von script es sich dabei handelt. die meisten probleme entstehen immer mit und bei For-To-Next-Schleifen und es ist fuer micht fast unmoeglich herauszufinden wieso da fehler auftauchen, also folgende sache habe ich versucht:
#include <Array.au3>
Global $numbers2[144] = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, _
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, _
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, _
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, _
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, _
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, _
1,1,1,1,1,1,1,1,1,1,1]
;_ArrayDisplay($numbers2,"Zeros & Ones")
_ArrayShuffle($numbers2) ; shuffle me once ...
;_ArrayDisplay($numbers2, "Shuffle #1")
_ArrayShuffle($numbers2) ; shuffle me twice ...
;_ArrayDisplay($numbers2, "Shuffle #2")
_ArrayShuffle($numbers2) ; shuffle me nice ...
;_ArrayDisplay($numbers2, "Shuffle #3")
_ArrayShuffle($numbers2) ; shuffle me more ...
;_ArrayDisplay($numbers2, "Shuffle #4")
_ArrayShuffle($numbers2) ; shuffle me to get the score ...
;_ArrayDisplay($numbers2, "Shuffle #5")
Global $numbers1[144] = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24, _
25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48, _
49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72, _
73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,94,96, _
97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115, _
116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133, _
134,135,136,137,138,139,140,141,142,143,144]
;_ArrayDisplay($numbers1,"Numbers")
_ArrayShuffle($numbers1) ; shuffle me once ...
;_ArrayDisplay($numbers1, "Shuffle #1")
_ArrayShuffle($numbers1) ; shuffle me twice ...
;_ArrayDisplay($numbers1, "Shuffle #2")
_ArrayShuffle($numbers1) ; shuffle me nice ...
;_ArrayDisplay($numbers1, "Shuffle #3")
_ArrayShuffle($numbers1) ; shuffle me more ...
;_ArrayDisplay($numbers1, "Shuffle #4")
_ArrayShuffle($numbers1) ; shuffle me to get the score ...
;_ArrayDisplay($numbers1, "Shuffle #5")
Alles anzeigen
das ist der basis code den ich jetzt verwendet habe. nun kommen meine fragen und fehlermeldungen aus der ConsoleWrite() funktion:
For $a = 0 To 144
For $b = 0 To 144
ConsoleWrite("Dice: " & $numbers2[$b] & " ----------> " & " Number: " & $numbers1[$b] &@CRLF)
Next
Next
ConsoleWrite() spuckt folgendes aus (stark verkuerzt):
Dice: 1 ----------> Number: 28
Dice: 1 ----------> Number: 64
Dice: 0 ----------> Number: 90
Dice: 0 ----------> Number: 98
Dice: 1 ----------> Number: 6
[ ... ]
Dice: 1 ----------> Number: 35
Dice: 0 ----------> Number: 69
Dice: 1 ----------> Number: 10
"E:\autoitscripts\2025\simple-random-number-generator.au3" (69) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
ConsoleWrite("Dice: " & $numbers2[$b] & " ----------> " & " Number: " & $numbers1[$b] &@CRLF)
ConsoleWrite("Dice: " & ^ ERROR
Alles anzeigen
*perfekt* ... es sind exakt 144 ergebnisse und alles ist super. aber jetzt kommts. ich behebe den fehler auf viele arten und weisen wie ich gelernt habe mit UBound() oder mit $strings oder mit der korrekten anzahl (143) und jedes mal kommen dann andere sachen zu tage:
For $a = 0 To $numbers2
For $b = 0 To $numbers1
ConsoleWrite("Dice: " & $numbers2[$b] & " ----------> " & " Number: " & $numbers1[$b] &@CRLF)
Next
Next
entspricht: eine einzige zeile ...
+>Setting Hotkeys...--> Press Ctrl+Alt+Break to Restart or Ctrl+BREAK to Stop.
Dice: 0 ----------> Number: 102
+>12:55:35 AutoIt3.exe ended.rc:0
+>12:55:35 AutoIt3Wrapper Finished.
UBound() ... mmh ... noch viel schlechter:
For $a = 0 To UBound($numbers2) - 1
For $b = 0 To UBound($numbers1) - 1
ConsoleWrite("Dice: " & $numbers2[$b] & " ----------> " & " Number: " & $numbers1[$b] &@CRLF)
Next
Next
extrem gekuerzt ... (insgesamt 20736 Zeilen ausgegeben):
Dice: 1 ----------> Number: 42
Dice: 0 ----------> Number: 119
Dice: 1 ----------> Number: 47
Dice: 1 ----------> Number: 109
[ ... ]
Dice: 0 ----------> Number: 12
Dice: 1 ----------> Number: 5
Dice: 0 ----------> Number: 133
+>12:57:22 AutoIt3.exe ended.rc:0
+>12:57:22 AutoIt3Wrapper Finished.
>Exit code: 0 Time: 2.166
Alles anzeigen
das beste war wirklich das es 20736 zeilen waren welches genau 144 x 144 entspricht. also offensichtlich mal wieder das problem vor dem bildschirm. mich hat allerdings die ausgabe von nur einer einzigen zeile gewundert, denn alle diese moeglichkeiten sind auf array seiten zu finden und scheinen zu funktionieren, nur eben nie so wirklich bei mir. mein bestes ergebnis, war das wo ich 144 anstelle von 143 angegeben hatte. ... im uebrigen bei der korrekten angabe von 143:
For $a = 0 To 143
For $b = 0 To 143
ConsoleWrite("Dice: " & $numbers2[$b] & " ----------> " & " Number: " & $numbers1[$b] &@CRLF)
Next
Next
waren es dann auch 20736 zeilen. ... overkill deluxe
mein eigentlicher plan war es die random funktion einzusetzen und das noch mit einzubauen, aber soweit kam ich erst gar nicht mit den ausgaben der ConsoleWrite() funktion.
ich habe glaube ich noch 30 andere fassungen probiert und nur eine for-to-next-schleife verwendet, dann kamen fehler wie $b ist nicht deklariert oder, oder, oder! auch habe ich probiert den wert von $a und/oder $b auf 1 zu setzen aber das brachte keinen grossen unterschied. wirklich. ich habe so viele variationen davon probiert, aber nur mit der angabe von zu vielen zeilen konnte ich das korrekte ergebnis erzielen. sehr seltsam
also irgendwie ist es mir ein raetsel. und das was mich am meisten irritiert hat, war das wenn ich den string (array) im for loop angebe, dann kommt nur eine einzige zeile.
nach dem ganzen experimenten kam ich dann irgendwann auf eine loesung, die zumindest keine fehlermeldung ausspuckte ... aber nur 99 Zeilen:
For $a = 0 To $numbers2[$a]
For $b = 0 To $numbers1[$b]
ConsoleWrite("Dice: " & $numbers2[$b] & " ----------> " & " Number: " & $numbers1[$b] &@CRLF)
Next
Next
wobei, eigentlich duerfte meiner meinung nach das nicht funktionieren, denn ich deklariere $a und verwende es gleichzeitig mit, welches nach meinem verstaendnis eigentlich ein fehler ausspucken sollte in sachen $a wird benutzt bevor es ueberhaupt deklariert ist, aber irgendwie tut es so. verstehen muss ich das nicht, oder? ... dabei fiel mir dann hinterher auf, dass zwar kein fehler kommt, aber es nur 99 zeilen ausspuckt und nicht die 144 zeilen die es eigentlich soll. also war das wohl auch nicht wirklich richtig.
die For-To-Next-Schleife = das buch mit sieben siegeln! ... toll wenn man es kann, ein krampf wenn man nicht versteht warum etwas nicht stimmt bzw. wo man nach den fehlern suchen soll.
der letzte und neueste versuch war:
For $a = 0 To $numbers2[$a] - 1
For $b = 0 To $numbers1[$b] - 1
ConsoleWrite("Dice: " & $numbers2[$b] & " ----------> " & " Number: " & $numbers1[$b] &@CRLF)
Next
Next
ergebnis: keine fehler aber nur 122 zeilen. what? wo kommen die anzahl der zeilen in der console her?
na ja, alles sehr spannend. ... bestimmt auch noch spannender wenn man es kann.
gruss
bankesbusters