Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Typen unverträglich

Empfohlene Antworten

Veröffentlicht

Hallo,

ich möchte gerne mehrere boolesche Variable zu einem Integer Wert in VB 6 verketten.

Das möchte ich deshalb, weil ich 8 Bit im Programm unterschiedlich ansteuern möchte (True oder False)

Über das winsock Steuerelement übertrage ich dann via TCP/IP alle 8 Bit zyklich auf einmal.

Hier mein Beispielcode:

Es werden in dem Beispiel nur 2 Bit über 4 Schaltflächen unterschiedlich gesetzt oder rückgesetzt.

Das Ergebnis aller 8 Bits wird zyklisch über Timer1 in Text1 angezeigt (Siehe Dateianhang)

In Text2 möchte ich gerne, dass alle 8 Bits aus der Variablen "Wert" als Integerwert angezeigt werden

Ich bekomme jedoch an der Stelle // Zahl = CInt(Wert) // gemeldet, dass die Datentypen unverträglich sind.

WahrFalschWahrFasch..... kann ich so nicht über das winsock Steuerelement versenden.

Ich benötige einen Integerwert.

Kann mir jemand sagen, wie ich das hinbekomme ?


Dim A As Boolean

Dim B As Boolean

Dim C As Boolean

Dim D As Boolean

Dim E As Boolean

Dim F As Boolean

Dim G As Boolean

Dim H As Boolean


Dim Zahl As Integer


Dim Wert As String


-------------------------------------------------------------------

Private Sub Command1_Click()

E = True

End Sub

------------------------------------------------------------------

Private Sub Command2_Click()

E = False

End Sub

-------------------------------------------------------------------

Private Sub Command3_Click()

C = True

End Sub

------------------------------------------------------------------

Private Sub Command4_Click()

C = False

End Sub

-------------------------------------------------------------------

Private Sub Timer1_Timer()

Wert = A & B & C & D & E & F & G & H

Text1.Text = Wert

Zahl = CInt(Wert)

Text2.Text = Zahl

End Sub

-----------------------------------------------------------------------


Gruß

Eleu

post-58959-14430448816277_thumb.jpg

  • Autor
Mit einer Stringvariablen bist du da völlig auf dem Holzweg.

Du musst die einzelnen Bits mit ihren Stellenwert im Integer multiplizieren, und dann Oder-verknüpfen.

Verstehe ich nicht ?

Zu Beginn (Anwendung wird gestartet) hätte die Variable die ich übertragen will den Wert 0.

0 multipliziert mit irgendwas ergibt immer 0 ?

Oder wie ist es gemeint ?

Hättest Du einen Beispielcode für mich :rolleyes::floet:

  • Autor

Hallo Klotzkopp,

vielen Dank, die Info hat`s gebracht.

Mein Code sieht jetzt folgendermaßen aus:

(Mit der Funktion "Dec2Bin" kann man sich das Ergebnis bitweise in Text1 anzeigen lassen)


Dim A As Integer

Dim B As Integer

Dim C As Integer

Dim D As Integer

Dim E As Integer

Dim F As Integer

Dim G As Integer

Dim H As Integer

Dim A1 As Integer

Dim B2 As Integer

Dim C3 As Integer

Dim D4 As Integer

Dim E5 As Integer

Dim F6 As Integer

Dim G7 As Integer

Dim H8 As Integer


Dim Zahl As Integer


Dim Wert As Integer

--------------------------


Private Sub Command1_Click()

E = 1

End Sub

-----------------

Private Sub Command2_Click()

E = 0

End Sub

----------------------------

Private Sub Command3_Click()

C = 1

End Sub

----------------------------

Private Sub Command4_Click()

C = 0

End Sub

----------------------------

Private Sub Timer1_Timer()


A1 = A * 1

B2 = B * 2

C3 = C * 4

D4 = D * 8

E5 = E * 16

F6 = F * 32

G7 = G * 64

H8 = H * 128


Wert = A1 + B2 + C3 + D4 + E5 + F6 + G7 + H8


Text2.Text = Wert


Text1.Text = Dec2Bin(Val(Wert), 8)

End Sub

--------------------------------------------------------

Private Function Dec2Bin(ByVal DEC As Long, ByVal NumDigitsMin As Long) As String

Dim i As Long


Do

If (DEC And 2 ^ i) > 0 Then

Dec2Bin = "1" & Dec2Bin

DEC = DEC - 2 ^ i

Else

Dec2Bin = "0" & Dec2Bin


End If

i = i + 1

Loop Until DEC = 0

Dec2Bin = Format$(Dec2Bin, String(NumDigitsMin, "0"))


Dec2BinExit:

Exit Function


Dec2BinErrror:

With Err

    .Raise .Number, .Source, .Description, .HelpFile, .HelpContext

End With

Resume Dec2BinExit


End Function


Gruß

Eleu

post-58959-14430448816743_thumb.jpg

  • Autor

Hallo,

ich musste für das Beispiel 16 Variable vom Typ Integer anlegen

Wäre es möglich, diese Funktion mit nur einer oder zwei Feldvariablen zu lösen ?

Beispiel:

Deklaration:

Dim Feld(8) as Integer

Ansprechen eines einzelnen Integer Wertes:

Feld(4) = 1

oder

Feld(4) = 0

Über eine Schleife das/die Felder vorbelegen:

Dim i as Integer

For i = 1 to 8

Wert = Hier die Berechnung aus Timer 1

Next i

Wie muss die Berechnung in der Schleife aussehen ?

Ich bekomme es nicht hin.

Kann mir jemand helfen ?

Gruß

Eleu

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.