Hallo,
ich versuche gerade, zwei Objekte von derselben Klasse zu erstellen und muss feststellen, dass sich deren Eigenschaften gegenseitig manipulieren:
class my_string { static letters := Array() content := "" length := "0" width := "0" letter_width := Array() __New(string, size, form) { if(size == "8") { if(form == "norm") { this.letters.Insert(Array("A", "1", "8")) this.letters.Insert(Array("B", "2", "7")) this.letters.Insert(Array("C", "3", "7")) this.letters.Insert(Array("D", "4", "8")) this.letters.Insert(Array("E", "5", "7")) this.letters.Insert(Array("F", "6", "6")) this.letters.Insert(Array("G", "7", "8")) this.letters.Insert(Array("H", "8", "8")) this.letters.Insert(Array("I", "9", "3")) this.letters.Insert(Array("J", "10", "5")) this.letters.Insert(Array("K", "11", "8")) this.letters.Insert(Array("L", "12", "6")) this.letters.Insert(Array("M", "13", "9")) this.letters.Insert(Array("N", "14", "8")) this.letters.Insert(Array("O", "15", "8")) this.letters.Insert(Array("P", "16", "7")) this.letters.Insert(Array("Q", "17", "8")) this.letters.Insert(Array("R", "18", "8")) this.letters.Insert(Array("S", "19", "7")) this.letters.Insert(Array("T", "20", "7")) this.letters.Insert(Array("U", "21", "8")) this.letters.Insert(Array("V", "22", "8")) this.letters.Insert(Array("W", "23", "11")) this.letters.Insert(Array("X", "24", "8")) this.letters.Insert(Array("Y", "25", "8")) this.letters.Insert(Array("Z", "26", "7")) } } else if(size == "16") { if(form == "bold") { this.letters.Insert(Array("A", "1", "16")) this.letters.Insert(Array("B", "2", "15")) this.letters.Insert(Array("C", "3", "16")) this.letters.Insert(Array("D", "4", "16")) this.letters.Insert(Array("E", "5", "15")) this.letters.Insert(Array("F", "6", "14")) this.letters.Insert(Array("G", "7", "17")) this.letters.Insert(Array("H", "8", "16")) this.letters.Insert(Array("I", "9", "6")) this.letters.Insert(Array("J", "10", "11")) this.letters.Insert(Array("K", "11", "16")) this.letters.Insert(Array("L", "12", "14")) this.letters.Insert(Array("M", "13", "18")) this.letters.Insert(Array("N", "14", "16")) this.letters.Insert(Array("O", "15", "17")) this.letters.Insert(Array("P", "16", "15")) this.letters.Insert(Array("Q", "17", "18")) this.letters.Insert(Array("R", "18", "16")) this.letters.Insert(Array("S", "19", "15")) this.letters.Insert(Array("T", "20", "14")) this.letters.Insert(Array("U", "21", "16")) this.letters.Insert(Array("V", "22", "16")) this.letters.Insert(Array("W", "23", "21")) this.letters.Insert(Array("X", "24", "16")) this.letters.Insert(Array("Y", "25", "17")) this.letters.Insert(Array("Z", "26", "15")) } } this.content := string this.length := StrLen(string) Loop % this.length { letter := SubStr(string, A_Index, 1) if(letter == " ") letter := "' '" Loop % this.letters.MaxIndex() { array_element_name := this.letters[A_Index][1] array_element_width := this.letters[A_Index][3] if(array_element_name == letter) { this.width += array_element_width this.letter_width.Insert(array_element_width) continue } } } } }
obj_1 := new my_string("Objekt 1", "8", "norm") msgbox % obj_1.letters.MaxIndex() obj_2 := new my_string("Objekt 2", "16", "bold") msgbox % obj_2.letters.MaxIndex()
Eigentlich sollten diese beiden Objekte doch jeweils ein Array mit allen Großbuchstaben und somit MaxIndex() von 26 haben! Leider muss ich feststellen, dass beim Erstellen des zweiten Objekts einfach ein neuer Datensatz à 26 Großbuchstaben an den des ersten Objekts angehängt werden, folglich ergibt sich diese Ausgabe:
--> 26
--> 52
Wie kann ich das ändern?? So sollte sich doch eine Klasse nicht verhalten...
Kann mir da jmd. weiterhelfen?
lg
EDIT:
Oh verdammt, es lag am "static"
Mein Fehler...