Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Visual Basic (VB).

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

'Функция кодирования текста в массив байтов, по условию 3-го дублирования
Public Function CodeMajor(ByVal thisText As String) As Byte()
    Dim vResult() As Byte, vLength As Long
    Dim i As Long, vCode As Byte
     
    vLength = 3& * Len(thisText) 'определим требуемый размер массива
    ReDim vResult(0& To vLength - 1&)
     
    For i = 0& To vLength - 1& Step 3& 'заполнение кодами
        'получить код символа и продублировать трижды
        vCode = CByte(Asc(Mid$(thisText, i \ 3& + 1&, 1&)))
        vResult(i) = vCode: vResult(i + 1&) = vCode: vResult(i + 2&) = vCode
    Next i
    CodeMajor = vResult
End Function
'Функция декодирования массива, по условию 3-го дублирования, в текст
Public Function DecodeMajor(ByRef thisArray() As Byte) As String
    Dim vFirst As Long, vLast As Long
    Dim sResult As String, i As Long
    'определим границы массива
    vFirst = LBound(thisArray)
    vLast = UBound(thisArray)
    'проверим на требование кратности 3 и выдадим сообщение об ошибке
    If ((vLast - vFirst + 1&) Mod 3&) <> 0& Then
        MsgBox "Число элемнетов массива не кратно 3", vbCritical, "Ошибка"
        Err.Raise 13
    End If
     
    For i = vFirst To vLast Step 3&
        If (thisArray(i) = thisArray(i + 1&)) Or (thisArray(i) = thisArray(i + 2&)) Then
            sResult = sResult & Chr$(CLng(thisArray(i)))
        ElseIf thisArray(i + 1&) = thisArray(i + 2&) Then
            sResult = sResult & Chr$(CLng(thisArray(i + 1&)))
        Else
            sResult = sResult & "_" 'если не равных пар - заменяем на "_"
        End If
    Next i
    DecodeMajor = sResult
End Function

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 18:21 18-04-2007 | Исправлено: AndVGri, 19:49 18-04-2007
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Visual Basic (VB).


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru