Главная страница
    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.47 MB
Время: 0.015 c
10-1127933093
Pavell
2005-09-28 22:44
2007.01.14
Передача массива в IDispatch


15-1166877481
КВАНТ
2006-12-23 15:38
2007.01.14
Helpы про WinAPI


1-1163952134
Calibr
2006-11-19 19:02
2007.01.14
Ассоциирование файла с программой


1-1164026970
DelphiLexx
2006-11-20 15:49
2007.01.14
TTreeView ограничение на размер текста в узле


1-1164097566
infom
2006-11-21 11:26
2007.01.14
Переназначение обработчиков событий у компонентов.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский