Здравствуйте. Помогите пожалуйста с такой програмкой (это не лабораторка и не что-то по учебе - это для ускорения процесса на работе, а то с калькулятором устал возиться): В форме программы я ввожу какое-то число в одно из полей для ввода, например 4F (число шестнадцатеричное, всегда двухбайтовое, если старший байт ноль, то его можно и не вводить. Пример - вместо 0А можно ввести просто А) Далее одной строкой во второе поле я ввожу массив шестнадцатеричных чисел, например 43510110005C2800001E00E083FFC1079A000411 Это двадцать байтов, которые не разделены пробелами. То есть в оригинале это выглядит как 43 51 01 10 00 5C 28 0А 00 1E 10 E0 83 FF C1 07 9A 00 04 11 Но по ряду причин вводиться будет без пробелов. Далее на форме есть простая кнопка вычислить, при нажатии на которую надо чтобы то мое первое число начало xor с каждым байтом массива и далее мне был выведен результат этого xor. То есть первое число 4F. Ввели строку 43510110005C2800001E00E083FFC1079A000411. Нажали вычислить и программа сделала 4F xor 43 xor 51 xor 01 и так далее до xor 11. Получившийся ответ (например FB) вывело ну в туже форму. Хотелось бы попросить, чтобы программа была на Visual Basic, и если не затруднит, к ней можно добавить исходники. Заранее спасибо тому кто откликнется.
MCU Destroyer, алгоритм: Код: a = "43510110005C2800001E00E083FFC1079A000411" c = "0A" For i = 1 To Len(a) Step 2 c = Hex(Val("&H" & c) Xor Val("&H" & Mid(a, i, 2))) Next i MsgBox c всякие рюшечки, навроде данные с формы организуете сами)
chimatii, Спасибо за алгоритм. Вот что наваял: Код: Dim a As String Dim c As String Dim i As Integer c = "5A" 'a = Val(TextBox1.Text) a = "43500112005B2801001E00E083FFC1079A000411" For i = 1 To Len(a) Step 2 c = Hex(Val("&H" & c) Xor Val("&H" & Mid(a, i, 2))) Next i Label1.Text = c Проблема - если переменной а значение присваиваю в самой программе, считает верно, а если пытаюсь из TextBox (строка закомментирована), то считает неверно... А что я не так делаю с TexBox ? И еще вопрос - если вместо XOR использовать обычное + то надо считать так: Код: c = Hex(Val("&H" & c) And Val("&H" & Mid(a, i, 2))) Я правильно понял?
chimatii, Спасибо огромное!. И еще последний вопросик: когда я считаю сумму по Код: c = Hex(Val("&H" & c) + Val("&H" & Mid(a, i, 2))) у меня может возникнуть перенос в 3-й байт, то есть может быть например результат в виде FA (это нормально) а может например 1FF (это тоже нормально) но во втором случае мне интересно только FF (1 можно откинуть). Вот как оформить чтобы откидывать перенос применительно к выводу в Label ?
chimatii, Не, скорее всего не так.. У меня выводится так: Код: Label1.Text = b результатом может быть например 1FF. Но надо чтобы 1 отбрасывалось, а оставалось FF.
Хм, не работает. Использую Visual Studio 2010. В конструкции Код: Label1.Text = Right(Label1.Text,2) ругается на Right. "Public ReadOnly Property Right As Integer" не имеет параметров, поэтому невозможно проиндексировать возвращаемый им тип. Переменная b определена как String.
Всем спасибо за подсказки, но ни одним из представленных способов, ненужный символ не отбрасывается - сообщение об ошибке.
MCU Destroyer, хах) по моему, нашел решение проблемы: Код: Strings.Right(Label1.Caption,2) синтаксис отличается, между vb6 и vb2010 12 лет разницы, хуле)
[+] оффтопchimatii, матершиник хуле, надо вообще полностью переходить кажется на vb.net потому что дотнет почти на каждом компе, да и на новой ОС всегда проблемы почти с запуском VB6 билдов (^_^)[свернуть]
:-[ Теперь я кажется совсем запутался. вот по тексту программы у меня идет: Код: c = Hex(Val("&H" & c) + Val("&H" & Mid(a, i, 2))) Далее используя Label я результат вывожу на форму: Код: Label1.Text = c В итоге у меня может вывестись как что-то, например вида AF а может 1A9. В перво мслучае все нормально, во втором мне надо вывест итолько A9, не выводя 1. Предложенный вариант chimatii куда вставлять то?
chimatii, Спасибо! Я чуть по другому наваял, тоже работает: Код: Label1.Text = c Label1.Text = Strings.Right(Label1.Text, 2) И еще один вопросик: :-[ предполагается, что данные, которые обсчитывает программа уже находятся в буфере обмена. На форме программы есть кнопка "Вставить". Вот при нажатии на эту кнопку, надо чтобы в окно TextBox "поместился" курсор и произошло вставление данных из буфера обмена. А как реализовать? Добавлено через 1 час 32 минуты Решение нашел: Код: TextBox1.Text = Clipboard.GetText Из буфера вставляем текст в TextBox. Тем не менее всем огромное спасибо за помощь с программкой! ivo:
опять же, не знаю как там дело обстоит с 2010, в 6 версии есть функции для работы с буфером обмена Код: Text1.Text = Clipboard.GetText з.ы. опоздал(