Форум: "Начинающим";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
ВнизПочему выводится неправильное число (указатели)? Найти похожие ветки
← →
Некто (2015-01-24 12:58) [0]
procedure TForm1.Button4Click(Sender: TObject);
var
PMyUint: PByte;
dwValue: DWORD;
begin
dwValue := 123456789;
GetMem(PMyUint, 123);
CopyMemory(PMyUint, @dwValue, SizeOf(dwValue));
ShowMessage(IntToStr(DWORD(PMyUint^))); // тут выводит 21
ShowMessage(IntToStr(PDWORD(PMyUint)^)); // а тут 123456789
FreeMem(PMyUint);
end;
В первом случае я использую разименование указателя, т.е он вроде бы должен указывать на число, а
приведение к типу DWORD берет первые 4 байта этих данных.
Почему выводится неправильное число в первом случае?
← →
Inovet © (2015-01-24 13:26) [1]Потому что
123456789(10) = 075BCD15(16)
а
15(16) = 21(10)
← →
junglecat © (2015-01-24 13:28) [2]в 1-м случае число обрезается до размера Byte, приведение к DWORD особой роли не играет
проверь
ShowMessage(IntToStr(Byte(123456789)));
← →
Некто (2015-01-24 14:28) [3]Ясно. Спасибо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.057 c