К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Ну, вопрос по теме)) Delphi

Гость
0 - 30.01.2013 - 14:25
Имеем arr of byte
Имеем разбитие числа от 0 до 65535 в тексте на два байта
arr[0] := lo(StrToInt(Edit1.Text));
arr[1] := hi(StrToInt(Edit1.Text));

Пытаемся сложить обратно в кучу
Edit1.Text := IntToStr( (arr[1] and not $30) * 10 + (arr[0] and not $30) );

или

Edit1.Text := IntToStr(arr[1] shl 8 or arr[0]);

До 255 отрабатывает нормально, дальше загон. Подозреваю - потому что int это 4 байта, мне нужно конвертить word. Но нет такого - StrToWord в Лазарусе..



Гость
1 - 30.01.2013 - 15:32
Word(
явное приведение к типу перед манипуляциями по вытаскиванию hi/lo и обратному преобразованию.
Преобразование:
Edit1.Text := IntToStr(Word(arr[1] shl 8 or arr[0]));
Гость
2 - 14.02.2013 - 19:19
1-Фанат NASCAR > arr[1] shl 8 у тебя уже станет 0. Биты за пределы байта уйдут.
WORD(arr[1] shl 8) or arr[0]
WORD(arr[1]) shl 8 or arr[0]

Правда думаю - ниразу уже не актуально.
Гость
3 - 15.02.2013 - 00:49
2-ELEA >ах да, в программе поправил это оказыается


К списку вопросов






Copyright ©, Все права защищены