Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: IP-калькулятор в Access-2003
 
 автор: May   (31.08.2009 в 09:33)   личное сообщение
 
 

Подскажите пожалуйста как можно реализовать действия IP-калькулятора в Access-2003.
1).Как вводимый IP-адрес в формате ххх.ххх.ххх.ххх перевести в двоичный вид и без точек(32 символа например 01010010001101101111000101010101)?
2).Как в записи из 32-х символов заменить например 10 последних нулей на еденицы?
3).Как запись из 32-х символов разбить на 4 записи по 8 символов?
Заранее благодарна.

  Ответить  
 
 автор: osmor   (31.08.2009 в 09:43)   личное сообщение
 
 

1)
http://hiprog.com/index.php?option=com_content&task=view&id=251661634&Itemid=35
http://hiprog.com/forum/read.php?id_forum=1&id_theme=5658&page=1
2) и 3) help по словам MID, Left, Right

  Ответить  
 
 автор: Lukas   (31.08.2009 в 10:56)   личное сообщение
 
 

Как-то так?:

'Возвращает массив строк
Public Function IPCalc(strIP As String, Optional ToBin As Boolean = False) As Variant
    Dim Arr As Variant
    
    Arr = Split(strIP, ".")
    Arr(2) = CStr((Arr(2) \ 4) * 4 + 3)
    Arr(3) = CStr(255)
    
    If ToBin Then
        Dim i As Integer
        For i = 0 To UBound(Arr)
            Arr(i) = LongToBinStr(CLng(Arr(i)), 8)
        Next i
    End If
    IPCalc = Arr
End Function

Public Function LongToBinStr(ByVal Number As Long, Optional Digits As Long = 32) As String
    Dim i As Long
    Const ZERO As String = "0"
    Const ONE As String = "1"
    LongToBinStr = String(Digits, ZERO)
    
    For i = Digits To 1 Step -1
        If Number Mod 2 Then
            Mid$(LongToBinStr, i, 1) = ONE
        End If
        Number = Number \ 2
        If Number = 0 Then Exit Function
    Next i
End Function

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList