Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Вниз

Помогите из 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.011 c
2-1167051186
Numark
2006-12-25 15:53
2007.01.14
вопрос по ExcelApplication


15-1166835428
Смаг
2006-12-23 03:57
2007.01.14
А Интернет в Туркмении был запрещен


1-1164358778
bva
2006-11-24 11:59
2007.01.14
Длинная строка в ComboBox


15-1165745073
Интересующийся
2006-12-10 13:04
2007.01.14
Сканер Epson 3490/3590 Poto и работа с пленкой


2-1166823482
vain
2006-12-23 00:38
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский