Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > int to hex аналогично pascal


Автор: Bugmaker 17.12.2014, 15:48
Всем добрый день.
Есть следующий код на паскале

for i := Length( BufPass ) downto 2  do
    stemp:= stemp + IntToHex( Ord( BufPass[i] ), 2 );


В VBA это должно выглядеть примерно так

Hex(Asc(Mid(GetPass, i, 1)))

Результат работы отличается, насколько я понимаю из-за того, что паскаль переводит в hex, фиксированной длины.
Результаты работы данных кодов отличаются наличием\отсутствием некоторых нулей. Как сделать на vba полный аналог?

Автор: Romikgy 17.12.2014, 15:58
http://www.mrexcel.com/forum/excel-questions/42152-converting-decimal-hexadecimal-visual-basic-applications.html

Автор: Bugmaker 17.12.2014, 17:59
Не вынес из той ветки решения для себя. Ткните носом, пожалуйста. Видимо мой английский недостаточно хорош.

Автор: Akina 17.12.2014, 18:43
Цитата(Bugmaker @  17.12.2014,  16:48 Найти цитируемый пост)
Результаты работы данных кодов отличаются наличием\отсутствием некоторых нулей

Покажите, что даёт код VB и что Pas. Ещё лучше - исходные данные и желаемый результат. А то хрустальный шар у нас на ремонте.

Автор: Romikgy 17.12.2014, 18:45
Цитата(Bugmaker @  17.12.2014,  14:48 Найти цитируемый пост)
Hex(Asc(Mid(GetPass, i, 1)))

work perfect !!! 
если вывод в ячейку экселя! 
Cells(...).NumberFormat = "@"

Автор: Bugmaker 18.12.2014, 09:33
Pascal
Пример кода : Преобразование integer в hex формат
begin
  // Отображение десятичного 123 в шестнадцатеричной системе с минимальной шириной
  ShowMessage('1234 decimal = '+IntToHex(1234, 1));

  // Отображение десятичного 123 в шестнадцатеричной системе с фиксированной шириной
  ShowMessage('1234 decimal = '+IntToHex(1234, 8));
end;
1234 decimal = 4D2
1234 decimal = 000004D2

Функция IntToHex принимает второй параметр, обратите на него внимание. В VBA получить из 1234 результат 000004D2, используя лишь HEX функцию у меня не вышло...

По поводу " А то хрустальный шар у нас на ремонте. " - Значит ситуация следующая. Я беру из базы (Орион про Bolid)  коды проксимити карт. Они там в несколько измененном виде, есть описание как вернуть их в исходное состояние, но алгоритм переформатирования на Паскале... Мне же нужно сделать это на VBA в EXCEL. Сейчас попробую прикрепить на всякий случай файл с данным алгоритмом...


Автор: Akina 18.12.2014, 09:46
Ну... 

Автор: Bugmaker 18.12.2014, 10:56
Работает.
Спасибо!

Автор: Akina 18.12.2014, 11:49
Bugmaker, добавь необходимые проверки на косяк в передаваемых параметрах.

Автор: slipnsk 30.3.2015, 16:11
День добрый. Задача таже самая. Есть ли готовый код на VBA? 

Автор: Akina 30.3.2015, 16:14
Цитата(slipnsk @  30.3.2015,  17:11 Найти цитируемый пост)
Есть ли готовый код на VBA?  

Есть. На скриншоте. Да, придётся руками поработать, код набрать, но дело того стОит...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)