hallo zusammen,
ich bin anfänger in AutoIT, aber ich möchte einige zusammenhänge verstehen. ich mache das alles mit einem hintergrund, dass ich etwas erschaffen moechte was mir seit jahren im kopf haengt und ich immer wieder massive rueckschlaege habe und dann ploetzlich die lust verliere, bis ich mich dann mal wieder aufraffen kann weiterzumachen. Im moment bin ich aber wieder in der lernkurve, also kopf hoch und weitermachen.
hier ein script womit ich worte in einem string mittels array austauschen kann. funktioniert super:
$satz = "hallo dies ist ein toller & guter text!"
Global $ersatz[100][2] = [[8], ["hallo","warum"],["dies","kann"],["ist","ich"],["ein","AutoIT"], _
["toller","nicht"],["&","ganz"],["guter","vollstaendig"],["text!","verstehen?"]] ;8 Veraenderungen
For $i = 1 To $ersatz[0][0]
$satz = StringRegExpReplace($satz, "\Q" & $ersatz[$i][0] & "\E", $ersatz[$i][1])
ConsoleWrite($satz & @CRLF)
sleep(1000)
Next
MsgBox(0,"","Muss sein:" & @CRLF & "warum kann ich AutoIT nicht ganz vollstaendig verstehen?" & @CRLF & @CRLF & "Ist aber:" & @CRLF & $satz)
ConsoleWrite() laeuft 8 mal durch und veraendert nach und nach den ganzen satz:
warum dies ist ein toller & guter text!
warum kann ist ein toller & guter text!
warum kann ich ein toller & guter text!
warum kann ich AutoIT toller & guter text!
warum kann ich AutoIT nicht & guter text!
warum kann ich AutoIT nicht ganz guter text!
warum kann ich AutoIT nicht ganz vollstaendig text!
warum kann ich AutoIT nicht ganz vollstaendig verstehen?
Nun dachte ich mir, das klappt ja super. mal sehen wie 'verrückt' ich damit werden kann. also tauschen wir jetzt einfach mal einzelne buchstaben aus:
$satz2 = "hallo dies ist ein toller & guter text!"
Global $ersatz2[100][2] = [[29], ["a","m"],["b","n"],["c","o"],["d","p"],["e","q"],["f","r"],["g","s"],["h","t"], _
["i","u"],["j","v"],["k","w"],["l","x"],["m","y"],["n","z"],["o","a"],["p","b"],["q","c"],["r","d"],["s","e"], _
["t","f"],["u","g"],["v","h"],["w","i"],["x","j"],["y","k"],["z","l"],["!","1"],["&","2"],[" ","_"]] ;29 Veraenderungen
For $i = 1 To $ersatz2[0][0]
$satz2 = StringRegExpReplace($satz2, "\Q" & $ersatz2[$i][0] & "\E", $ersatz2[$i][1])
ConsoleWrite($satz2 & @CRLF)
sleep(1000)
Next
MsgBox(0,"","Muss sein:" & @CRLF & "tmxxa_piqe_uef_quz_faxxqd_2_sgfqd_fqjf1" & @CRLF & @CRLF & "Ist aber:" & @CRLF & $satz2)
tja ... da machen sich dann fehler bemerkbar: da alles 29 mal durchlaeuft, werden auch buchstaben ersetzt, die bereits ersetzt waren und dann verfaelscht sich das ergebnis:
ConsoleWrite() laeuft 29 mal durch und veraendert nach und nach jeden buchstaben:
hmllo dies ist ein toller & guter text!
hmllo dies ist ein toller & guter text!
hmllo dies ist ein toller & guter text!
hmllo pies ist ein toller & guter text!
hmllo piqs ist qin tollqr & gutqr tqxt!
hmllo piqs ist qin tollqr & gutqr tqxt!
hmllo piqs ist qin tollqr & sutqr tqxt!
tmllo piqs ist qin tollqr & sutqr tqxt!
tmllo puqs ust qun tollqr & sutqr tqxt!
tmllo puqs ust qun tollqr & sutqr tqxt!
tmllo puqs ust qun tollqr & sutqr tqxt!
tmxxo puqs ust qun toxxqr & sutqr tqxt!
tyxxo puqs ust qun toxxqr & sutqr tqxt!
tyxxo puqs ust quz toxxqr & sutqr tqxt!
tyxxa puqs ust quz taxxqr & sutqr tqxt!
tyxxa buqs ust quz taxxqr & sutqr tqxt!
tyxxa bucs ust cuz taxxcr & sutcr tcxt!
tyxxa bucs ust cuz taxxcd & sutcd tcxt!
tyxxa buce uet cuz taxxcd & eutcd tcxt!
fyxxa buce uef cuz faxxcd & eufcd fcxf!
fyxxa bgce gef cgz faxxcd & egfcd fcxf!
fyxxa bgce gef cgz faxxcd & egfcd fcxf!
fyxxa bgce gef cgz faxxcd & egfcd fcxf!
fyjja bgce gef cgz fajjcd & egfcd fcjf!
fkjja bgce gef cgz fajjcd & egfcd fcjf!
fkjja bgce gef cgl fajjcd & egfcd fcjf!
fkjja bgce gef cgl fajjcd & egfcd fcjf1
fkjja bgce gef cgl fajjcd 2 egfcd fcjf1
fkjja_bgce_gef_cgl_fajjcd_2_egfcd_fcjf1
Alles anzeigen
also zusammenfassend: das script geht, aber es geht auch gleichzeitig nicht. sobald man auf den kleinsten nenner (ein einzelner buchstabe) reduziert werden einzelne buchstaben den umwandlungsprozess mehrmals durchlaufen (a=m ... m=y ... y=k). das ist nicht wirklich das erhoffte ergebnis.
ich bin also irgendwo falsch abgebogen. die frage ist nur 'wo'? und 'warum?'
irgendwelche kommentare oder ideen? - ist es überhaupt möglich einen string so sehr zu manipulieren?
ich gehe stark davon aus, dass ich das über multiple instanzen machen muesste? also nach jeden durchlauf ein neues array schaffen und dan daraus ein gesamtergebnis erstellen?
gruss