Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.14;
Скачать: CL | DM;

Вниз

Помогите из DWORD а получить Single   Найти похожие ветки 

 
ProgRAMmer Dimonych ©   (2006-12-22 20:53) [0]

Сел тут поизучать книжку одну: "DirectX графика в проектах Delphi" (Краснов). Идёт там, значит, описание GetRenderState и SetRenderState у IDIRECT3DDEVICE8. Написано, что в SetRenderState в виде DWORD-значения передаётся Single-число таким способом: PDWORD(@PointSize)^, где PointSize:Single. А как из GetRenderState"ом полученного DWORD"а сделать обратно Single? И есть ли вообще какой-нибудь общий подход к разгадыванию таких загадок (т.е. как можно получать последовательность преобразований, обратную данной в общем случае)?

P.S. В очередной раз убедился, что по части всех преобразований и приведений типов я полный нуль :(


 
ors_archangel ©   (2006-12-22 21:10) [1]

PSingle(@DwordValue)^ ?
Алгоритм получения обратных преобразований заключается в замене всех приведений к типу A, или ^A на B или ^B и наоборот.

> полный нуль

На самом деле это очень извращённая форма приведения типов: сначала берём адрес переменной любого типа, потом приводим его к типизированному указателю (PSingle), затем операция разымёнывания даёт значение укзателя, теперь уже типа single. Видимо, необходим ещё механизм принудительного приведения типов, чтобы можно было писать, например s := force Single(d), где force - какое-то ключевое слово, это было бы намного понятней. (Вообще, запись s := d допустима, но она делает fild, fstp - т.е. округление)


 
Ученик чародея ©   (2006-12-22 21:19) [2]

var numS:single;
var numDW:DWord;

 NumS:=(PSingle(@NumDW))^;


 
Ученик чародея ©   (2006-12-22 21:20) [3]

А вообще указатели и рекурсия - зло, так как путь к потенциальным глюкам.


 
ors_archangel ©   (2006-12-22 21:26) [4]

Рекурсия - естественна


 
wicked ©   (2006-12-22 21:30) [5]

> Ученик чародея ©   (22.12.06 21:20) [3]

> А вообще указатели и рекурсия - зло, так как путь к потенциальным
> глюкам.

гггг... бриться - зло, так как путь к потенциальным порезам

> ors_archangel ©   (22.12.06 21:26) [4]

> Рекурсия - естественна

указатели - тоже...


 
Gero ©   (2006-12-22 21:31) [6]

> [3] Ученик чародея ©   (22.12.06 21:20)

Программирование — зло.


 
ProgRAMmer Dimonych ©   (2006-12-22 21:35) [7]

> Gero ©   (22.12.06 21:31) [6]
> Программирование — зло.
А это высказывание - ересь :)


 
ProgRAMmer Dimonych ©   (2006-12-22 21:41) [8]

Блин, люди, создал новый проект, кинул на форму три Edit"а и кнопку. В обработчике клика по кнопке написал перевод StrToCurr(Edit1.Text) в DWORD и обратно с забрасыванием результата и промежуточного DWORD"а в соответствующие Edit"ы. В DWORD"е ещё покруче ересь, оказывается. Извращенцы в Microsoft"е, однако. Такую фигню в DirectX засунули!!!


 
Loginov Dmitry ©   (2006-12-22 23:15) [9]

> DirectX графика в проектах Delphi" (Краснов).


Одна только фамилия автора заставляет призадуматься над ценностью данной литературы.


 
Gero ©   (2006-12-22 23:36) [10]

> [9] Loginov Dmitry ©   (22.12.06 23:15)

А это что, родственник Фленова?


 
Loginov Dmitry ©   (2006-12-22 23:39) [11]

Возможно. Дальний.


 
Loginov Dmitry ©   (2006-12-22 23:43) [12]

Вспомнилось одно рассуждение Краснова из программирования OpenGL в Дельфи, насчет того, что Null не пашен. В Windows SDK сказали, что в функцию можно передать Null, а Delphi ругается, типа Can not convert variant... Оказывается, Дельфи глючит :) Таких мест в книге - большое количество, и читать ее составило большое удовольствие :))



Страницы: 1 вся ветка

Текущий архив: 2007.01.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.059 c
10-1127933093
Pavell
2005-09-28 22:44
2007.01.14
Передача массива в IDispatch


2-1167118319
XTD
2006-12-26 10:31
2007.01.14
Результат пинга


2-1166887149
BanserAnt
2006-12-23 18:19
2007.01.14
Кто находится в чате?


2-1167111400
4ert
2006-12-26 08:36
2007.01.14
Pointer


15-1166381963
Ломброзо
2006-12-17 21:59
2007.01.14
Рефакторинг базы Oracle