German VB.NET to B4A

Sinan Tuzcu

Active Member
Licensed User
Hi,

can sbd help me for convert the code from VB.NET to B4A?

B4X:
 Dim i As Integer

        Integer.TryParse(Parse1, OUTPUT1)
        Integer.TryParse(Parse2, OUTPUT2)
        Integer.TryParse(Parse3, OUTPUT3)
        Integer.TryParse(Parse4, OUTPUT4)

        If OUTPUT1 < 0 OrElse OUTPUT1 > 255 Then Return

       
        For i = 0 To 7
            myCheckBoxen1(i).Checked = (OUTPUT1 And 1 << i) > 0
            myCheckBoxen2(i).Checked = (OUTPUT2 And 1 << i) > 0
            myCheckBoxen3(i).Checked = (OUTPUT3 And 1 << i) > 0
            myCheckBoxen4(i).Checked = (OUTPUT4 And 1 << i) > 0
        Next i
 

Sinan Tuzcu

Active Member
Licensed User
Get an Error msg

B4X:
Dim testvar As Int
    For i = 0 To 7
        testvar = (Parse1 And 1 << i) > 0
    Msgbox(testvar,"")
    Next
Fehlende Parameter
 

MarkusR

Well-Known Member
Licensed User
<< in vb.net sollte Bit Shift sein

=Bit.ShiftLeft(

statt And wohl & Zeichen edit: geht nur mit Bit.And(

dieses > 0 am Ende müßte ein Boolean zurück geben
 
Last edited:

OliverA

Expert
Licensed User
Bit.And(int, int) instead of int & int
 

Sinan Tuzcu

Active Member
Licensed User
B4X:
Dim BinVar1 As String

BinVar1 = "32"
BinVar1 = Bit.ToBinaryString(Parse1)
BinVar1 = NumberFormat2(BinVar1, 8 ,0,0,False)
    ToastMessageShow(BinVar1,True)
    ToastMessageShow(Bit.Shiftleft(Bit.And(BinVar1,1),1),False)
Ausgabe = "22"

Warum?


ich habe 8 Checkboxen, und die sollen auf True oder False gesetzt werden.
bei 255 sollen natürlich alle auf True gesetzt werden.

B4X:
For i = 0 To 7
        Dim p As Panel = ScrollView1.Panel.GetView(i)
        Dim btnTog As ToggleButton = p.GetView(1)
        If Bit.Shiftleft(BinVar1,1) = 1 Then
            btnTog.Checked =True
           
            Else
            btnTog.Checked =False
        End If      
       
    Next
 

MarkusR

Well-Known Member
Licensed User
Dieses Shift verschiebt die Bits.
Mach es doch einfacher
If Bit.And(Wert,1) = 1 Then Checkbox 1 An Else Checkbox 1 Aus
If Bit.And(Wert,2) = 2 Then Checkbox 2 An Else Checkbox 2 Aus
If Bit.And(Wert,4) = 4 Then Checkbox 3 An Else Checkbox 3 Aus

Dieses Bit.And filtert dir quasi das Bit heraus.
 

Sinan Tuzcu

Active Member
Licensed User
Nun, jetzt habe ich ja den gewünschten Wert als Ausgabe. D. h. die 32 wird mir jetzt in 00010000 angezeigt.
Jetzt muss ich sie nur zerlegen, d.h jeden einzelnen Bit abfragen ob es eine null oder eine eins ist.

Und dann die 8 dynamisch geladenen CheckBoxen setzen.
 

MarkusR

Well-Known Member
Licensed User
siehe #12

warum willst du denn den 0011101 text wieder zerlegen?
 

MarkusR

Well-Known Member
Licensed User
mein Beipiel in #12 war doch ohne Bit Shift.
Das hier filtert aus der Zahl den Wert 1, also Bit 1 und vergleicht das mit dem Bit Wert 1, also z.B. aus 33 nur die 1
Bit.And(Wert,1) = 1
 

Sinan Tuzcu

Active Member
Licensed User
Ja aber du hast Checkbox 1.... 8
Meine sind dynamisch geladen und heissen alle CheckBox1. Die Checkboxen simd in einem Panel.

B4X:
For i = 0 To 7
        Dim p As Panel = ScrollView1.Panel.GetView(i)
        Dim btnTog As ToggleButton = p.GetView(1)
        If Bit.Shiftleft(BinVar1,1) = 1 Then
            btnTog.Checked =True
          
            Else
            btnTog.Checked =False
        End If     
      
    Next
 

MarkusR

Well-Known Member
Licensed User
B4X:
Sub Test

    Dim i As Int
    Dim Wert As Int = 33 '32+1
    Dim Bits As Int 'der Name Bit wäre schöner aber eine Klasse heißt ja so
    For i = 0 To 7
        Bits = Power(2,i) 'das macht 1,2,4,8,16,32,64,128
        If Bit.And(Wert,Bits)=Bits Then Log(i & " An") Else Log(i & " Aus")
    Next

End Sub
du könntest die generierten Checkboxen auch in eine Liste oder Array tun, dann sind die einfacher anzusprechen per Index.
 
Last edited:

Sinan Tuzcu

Active Member
Licensed User
Guten Morgen,

ich habe das wie folgt gelöst

B4X:
For i = 0 To 7
    Dim p As Panel = ScrollView1.Panel.GetView(i)
    Dim btnTog As ToggleButton = p.GetView(1)
    If BinVar1.CharAt(i) = 1 Then
        btnTog.Checked =True
        ToastMessageShow("True",False)
    Else
        btnTog.Checked =False
        ToastMessageShow("False",False)
    End If
'       
    Next
allerdings brauche ich jetzt einen String verdreher
 
Last edited:
Top