Форум на Kuban.ru (http://forums.kuban.ru/)
-   Разработка программ (http://forums.kuban.ru/f1024/)
-   -   Ну, вопрос по теме)) Delphi (http://forums.kuban.ru/f1024/nu_vopros_po_teme_delphi-3627485.html)

fanatnascar 30.01.2013 14:25

Ну, вопрос по теме)) 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 в Лазарусе..

fanatnascar 30.01.2013 15:32

Word(
явное приведение к типу перед манипуляциями по вытаскиванию hi/lo и обратному преобразованию.
Преобразование:
Edit1.Text := IntToStr(Word(arr[1] shl 8 or arr[0]));

ELEA 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]

Правда думаю - ниразу уже не актуально.

fanatnascar 15.02.2013 00:49

2-ELEA >ах да, в программе поправил это оказыается


Текущее время: 19:40. Часовой пояс GMT +3.