user334 писал(а):я хочу понять-как зависит значение Dex от этих самых кнопок и по какой формуле оно рассчитывается (в виде не стандартных операций а описанием на обычном языке)
Функция такая замороченная и непонятная оттого, что в бейсике нет функции перевода из двоичной системы в десятичную. Вот такой простейший рефакторинг все упрощает:
Вот это очень желательно
- Код: Выделить всё
Option Explicit
Вот Ваша процедура (убрано всё лишнее, а перевод вынесен в отдельную функцию)
- Код: Выделить всё
Private Sub Check_Click(Index As Integer)
Dim Dex As Integer
Dim Bin As String
Dim N As Long
Bin = ""
For N = 8 To 1 Step -1
Bin = Bin & Check(N).Value 'Вот здесь собирается двоичное число
If Check(N).Value = 1 Then
Check(N).BackColor = vbGreen 'Попутно раскрашиваем галки в зеленый
Else
Check(N).BackColor = vbRed 'и красный цвет
End If
Next N
Dex = BinToDec(Bin) 'Здесь мы переводим двоичное число в десятичное
Me.Caption = Dex 'Я вывожу результат в заголовок окна
End Sub
если в языке на который Вы переводите, есть готовая функция, то функция ниже не нужна. Вместо нее, вместо вызова
Dex = BinToDec(Bin) Вы пишете что-то типа
ConvToDec[Bin; Dex])
- Код: Выделить всё
Private Function BinToDec(strData As String) As Long
Dim N As Long
Dim D As Long
'Классический перевод двоичного числа в десятичное
'N это регистр. Регистр умножается на 2 в степени номера регистра
For N = 1 To Len(strData)
D = D + CLng(Mid$(strData, N, 1)) * 2 ^ (Len(strData) - N)
Next N
BinToDec = D
End Function