Автор вопроса: Roman | Web-сайт:kruftin.h15.ru | ICQ: 347671864
При написании простой кодирующей программы возникли проблемы с декодированием букв ш, щ.
Кодирование происходит за счёт прибавления 5 к коду анси элемента, причём 0 соответствует 251, 1 - 252, 2 - 253, 3 - 254, 4 - 255. Помогите установить причину неверного раскодирования при использовании букв ш и щ.
Private Sub Command1_Click()
symbol_res = ""
key = 3
a = RTB1.Text
l = Len(a)
For i = 1 To l
symbol = Mid(a, i, 1)
symbol_code1(i) = Asc(symbol)
If symbol_code1(i) < 5 Then
symbol_codemod = 25 & symbol_code1(i) + 1
symbol_codemod = Chr(symbol_codemod)
ElseIf symbol_code1(i) > 250 Then
d = symbol_code1(i) - 1
symbol_codemod = Val(Right$(CStr(d), 1))
symbol_codemod = Chr(symbol_codemod)
Else
symbol_codemod = symbol_code1(i) + 5
symbol_codemod = Chr(symbol_codemod)
End If
symbol_res = symbol_res & symbol_codemod
Next i
RTB2.Text = symbol_res
End Sub
Private Sub Command2_Click()
symbol_res = ""
key = 3
b = RTB3.Text
l = Len(b)
For i = 1 To l
symbol = Mid(b, i, 1)
symbol_code2(i) = Asc(symbol)
If symbol_code2(i) < 5 Then
symbol_codemod = 25 & symbol_code2(i) + 1
symbol_codemod = Chr(symbol_codemod)
ElseIf symbol_code2(i) > 250 Then
d = symbol_code2(i) - 1
symbol_codemod = Val(Right$(CStr(d), 1))
symbol_codemod = Chr(symbol_codemod)
Else
symbol_codemod = symbol_code2(i) - 5
symbol_codemod = Chr(symbol_codemod)
End If
symbol_res = symbol_res & symbol_codemod
Вот. Попыхтел я, однако Ты как-то всё слишком усложняешь, сам ложишь кирпичи на своей дороге. Допустим зачем делать конкатенацию (объединение строк) если можно обойтись арифметическими операциями? Ну ладно, я понимаю, это всё из-за того что ты только начинаешь. Дерзай. И кстати, RichTextBox обычный TextBox... да вообще все текстовые контейнеры будут искажать спец. непечатные символы. Такие данные нужно подгружать из переменных.
Не то чтобы она не должна быть пустой. Просто так она занимает в памяти меньше места.
А про логические операторы ботай учебники по информатике/кодингу.