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

Вниз

Че-то запутался с приведением к типу... :-(   Найти похожие ветки 

 
NailMan ©   (2004-05-12 21:16) [0]

Пишу парсер скрипта создающего D3D стейт-блоки, а посему необходимо в
процессе разбора строки-команды переводить строчку в соответсвующее значение.

Имеется такая структура(в заголовках D3D):

TYPE
_D3DRENDERSTATETYPE = (
D3DRS_ZENABLE                   = 7,
D3DRS_FILLMODE                  = 8,    
D3DRS_SHADEMODE                 = 9,    
D3DRS_ZWRITEENABLE              = 14,  
D3DRS_ALPHATESTENABLE           = 15,    
D3DRS_LASTPIXEL                 = 16,
D3DRS_SRCBLEND                  = 19,
...
много различных значений
...
D3DRS_BLENDOPALPHA              = 209  
);


Также имеется переменная S:D3DRENDERSTATETYPE, StringList с строками-названиями которые соответствуют этому типу, т.е. содержащий:
"D3DRS_ZENABLE"
"D3DRS_FILLMODE"
и т.д.

При обработке параметров строки-команды получаю параметр с именем "D3DRS_BLENDOPALPHA", далее получаю индекс(StringList.IndexOf) этого значения, который соотвествует индексу в типе
D3DRENDERSTATETYPE соотвественно значению D3DRS_BLENDOPALPHA или =209.

Когда я в программе напрямую присваиваю переменной S скажем значение D3DRS_BLENDOPALPHA, у этой переменной будет значение(числовое) 209(смотрю при проходе по F8). С этим все понятно.

Но как мне получить это значение имея только индекс этого значения в типе?

Такая вот запись(индекс значения нашелся как 13):
S:=D3DRENDERSTATETYPE(I);
не прокатывает значение переменной после этого присваивания показывается как "(out of bound) 13", что приводит к ошибке установки стейта. Другими словами значение получается не то какое нужно или вообще какая-то хрень.

Вобщем как получить правильное значение переменной такого типа имея индекс(в этом типе) нужного значения?


 
NailMan ©   (2004-05-12 21:17) [1]

Прошу в Основную не переносить, так как у меня постинг туда че-то не проходит как с Ослика так и с последнего DMClient-а: выдает в обоих случаях "Server Error"


 
cyborg ©   (2004-05-12 21:21) [2]

Я например не понял ничего %)


 
NailMan ©   (2004-05-12 21:33) [3]

cyborg ©
Вобщем кратко:

- имеем переменную вышеприведенного типа,
- имеем стинглист с именами значений в том самом порядке и количестве как оно описано в типе(для сравнения с полученной из скрипта строкой и получения индекса)
- имеем индекс того значения в этом массиве(I), которое хотим получить
- хочется получить то самое значение переменной, которое стоит на месте I в этом типе(скажем I=103 соответсвует значению D3DRS_BLENDOPALPHA и равно 209).

Чего тут непонятного?  :-)


 
cyborg ©   (2004-05-12 21:37) [4]

Значит S:=Stringlist.Lines.Strings[i] если правильно написал.


 
NailMan ©   (2004-05-12 21:46) [5]

Нет, S у нас типа D3DRENDERSTATETYPE, т.е. принимает числовые значения.


 
cyborg ©   (2004-05-12 21:57) [6]

Ну ты строку-то получи, а вообще у стринглиста помоему можно получать значение Value вроде называется. Ищи что-то типа Значение:=StringList.Value("D3DRS_BLENDOPALPHA");



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

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

Наверх




Память: 0.48 MB
Время: 0.038 c
6-1081184602
Kirill
2004-04-05 21:03
2004.05.30
IdHTTP и сессия


14-1084337157
SVM (Perm)
2004-05-12 08:45
2004.05.30
Delphi 7 Update Pack


14-1084345908
Mike Kouzmine
2004-05-12 11:11
2004.05.30
Эстония согласна простить Россию,


14-1084375679
Тупой
2004-05-12 19:27
2004.05.30
Хорошие книги по программированию


1-1085021526
PAN2009
2004-05-20 06:52
2004.05.30
в Pchar