Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > преобразования


Автор: jericho 25.1.2012, 10:21
Здраствуйте, объясните пожалуйста как, что и почему, работает сея 

xKey[i]:= PByte(integer(Key))^;

где
xKey: array[0..255] of byte;
i: integer;
Key: pointer;

что происходит при integer(Key)
что происходит при PByte()^

заранее благодарен

Автор: Snowy 25.1.2012, 11:16
Цитата(jericho @  25.1.2012,  11:21 Найти цитируемый пост)
что происходит при integer(Key)
указатель Key превращается в integer, представляющий собой число - адрес в памяти.

Цитата(jericho @  25.1.2012,  11:21 Найти цитируемый пост)
что происходит при PByte()^
число-адрес превращается обратно в указатель, но уже на byte. Указатель разыменовывается и превращается в байт.

зачем нужно преобразовывать 2 раза - понятия не имею.
Можно просто xKey[i]:= PByte(Key)^;

Автор: jericho 25.1.2012, 11:44
Цитата(Snowy @  25.1.2012,  11:16 Найти цитируемый пост)
зачем нужно преобразовывать 2 раза - понятия не имею.

я не стал дописывать
xKey[i]:= PByte(integer(Key)+(i mod Len))^;

по идее мне эту штуку надо на c#
(i mod Len) - с этим проблем нету
а вот остальное пока непойму

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