![]() |
Ну, вопрос по теме)) Delphi Имеем 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 в Лазарусе.. |
Word( явное приведение к типу перед манипуляциями по вытаскиванию hi/lo и обратному преобразованию. Преобразование: Edit1.Text := IntToStr(Word(arr[1] shl 8 or arr[0])); |
1-Фанат NASCAR > arr[1] shl 8 у тебя уже станет 0. Биты за пределы байта уйдут. WORD(arr[1] shl 8) or arr[0] WORD(arr[1]) shl 8 or arr[0] Правда думаю - ниразу уже не актуально. |
2-ELEA >ах да, в программе поправил это оказыается |
Текущее время: 17:14. Часовой пояс GMT +3. |