Also ich muss sagen auch mit der Anpassung an Double Zahlen und mit der Korrektur "/ 10" kommt bei mir teilweise immernoch echter Murks raus.
Bei mir ging es bei der Funktion darum bei 11 Checkboxen jeweils den Wert auf Ja/Nein zu ändern mit nur einem Eintrag in einer Datenbank. Deswegen kommt hier auch die Binärschreibweise zum einsatz! (Also 11 Stellen jeweils 1 = ja oder 0 = nein).
Da dieses Formular auch mehr als 11 Stellen bekommen wird, zeigte sich auch schnell dass diese Funktion nicht mit großen Binärzahlen umgehen kann!
Meine Lösung die ich jetzt gemacht habe lautet folgendermassen:
(Nur Codefragmente da alles den Rahmen dieses Threads sprengen würde!)
Code: Alles auswählen
Sub hakenSetzen(dualityDirekt)
oDialog.getControl("lf1").state = machsKleiner(dualityDirekt) Mod 2
oDialog.getControl("lf1e").state = (machsKleiner(dualityDirekt) / 10) Mod 2
oDialog.getControl("lf2").state = (machsKleiner(dualityDirekt) / 100 ) Mod 2
oDialog.getControl("lf3").state = (machsKleiner(dualityDirekt) / 1000 ) Mod 2
oDialog.getControl("lf4").state = (machsKleiner(dualityDirekt) / 10000 ) Mod 2
oDialog.getControl("lf5").state = (dualityDirekt / 100000) Mod 2
oDialog.getControl("lf6").state = (dualityDirekt / 1000000) Mod 2
oDialog.getControl("lf7").state = (dualityDirekt / 10000000) Mod 2
oDialog.getControl("lf8").state = (dualityDirekt / 100000000) Mod 2
oDialog.getControl("marktDeutsch").state = (dualityDirekt / 1000000000) Mod 2
oDialog.getControl("marktEnglisch").state = (dualityDirekt / 10000000000) Mod 2
End Sub
Code: Alles auswählen
Function machsKleiner(ByVal binaer as Double) as Double
While binaer > 100000
binaer = binaer - (10 ^ (Len(binaer)-1))
Wend
machsKleiner = binaer
End Function
Die Funktion "machsKleiner" existiert nur da bei Teilern < 10000 ein Datenüberlauf stattgefunden hat. Deswegen kürzt diese Funktion die ersten Stellen der 11 stelligen Binärzahl einfach weg und die Mod 2 Rechnung funktioniert wunderbar!
Vielleicht hilfts ja jemand anderem weiter

Also ich muss sagen auch mit der Anpassung an Double Zahlen und mit der Korrektur "/ 10" kommt bei mir teilweise immernoch echter Murks raus.
Bei mir ging es bei der Funktion darum bei 11 Checkboxen jeweils den Wert auf Ja/Nein zu ändern mit nur einem Eintrag in einer Datenbank. Deswegen kommt hier auch die Binärschreibweise zum einsatz! (Also 11 Stellen jeweils 1 = ja oder 0 = nein).
Da dieses Formular auch mehr als 11 Stellen bekommen wird, zeigte sich auch schnell dass diese Funktion nicht mit großen Binärzahlen umgehen kann!
Meine Lösung die ich jetzt gemacht habe lautet folgendermassen:
(Nur Codefragmente da alles den Rahmen dieses Threads sprengen würde!)
[code]
Sub hakenSetzen(dualityDirekt)
oDialog.getControl("lf1").state = machsKleiner(dualityDirekt) Mod 2
oDialog.getControl("lf1e").state = (machsKleiner(dualityDirekt) / 10) Mod 2
oDialog.getControl("lf2").state = (machsKleiner(dualityDirekt) / 100 ) Mod 2
oDialog.getControl("lf3").state = (machsKleiner(dualityDirekt) / 1000 ) Mod 2
oDialog.getControl("lf4").state = (machsKleiner(dualityDirekt) / 10000 ) Mod 2
oDialog.getControl("lf5").state = (dualityDirekt / 100000) Mod 2
oDialog.getControl("lf6").state = (dualityDirekt / 1000000) Mod 2
oDialog.getControl("lf7").state = (dualityDirekt / 10000000) Mod 2
oDialog.getControl("lf8").state = (dualityDirekt / 100000000) Mod 2
oDialog.getControl("marktDeutsch").state = (dualityDirekt / 1000000000) Mod 2
oDialog.getControl("marktEnglisch").state = (dualityDirekt / 10000000000) Mod 2
End Sub
[/code]
[code]
Function machsKleiner(ByVal binaer as Double) as Double
While binaer > 100000
binaer = binaer - (10 ^ (Len(binaer)-1))
Wend
machsKleiner = binaer
End Function
[/code]
Die Funktion "machsKleiner" existiert nur da bei Teilern < 10000 ein Datenüberlauf stattgefunden hat. Deswegen kürzt diese Funktion die ersten Stellen der 11 stelligen Binärzahl einfach weg und die Mod 2 Rechnung funktioniert wunderbar!
Vielleicht hilfts ja jemand anderem weiter :)