Текущий архив: 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.46 MB
Время: 0.038 c