Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как обратиться к свойству объекта [D7, Win2k, WinXP]


Страницы:   1 2

pavel_guzhanov ©   (2005-01-25 14:14:00) 

Вопрос такой: У Объекта имеется множество свойств. Мне нужно получить значение только одного свойства, например свойства "name". Приходится в цикле перебирать все свойства, и, дойдя до свойства "name" присвоить его значение какой- либо переменной. А можно ли обратиться к свойству непосредственно по его имени, не перебирая все остальные? И если можно, то как?


pavel_guzhanov   (2005-01-25 16:03:00) [21]


> разве не так ?


Так.

> если имя св-ва ТЕКУЩЕГО объекта равно "Name"

Я как раз спрашиваю, как мне сделать имя свойства текущего объекта равным 'Name'b получить его Value? Можно ли это сделать без цикла переборки?


Digitman   (2005-01-25 15:44:00) [22]


> pavel_guzhanov   (25.01.05 15:16) [7]


следы ведут к тому, ЧТО есть метод PropEnum..
а он есть функц.метод некоего интерфейса, возвращающий некий интерфейсный объект..


Digitman   (2005-01-25 15:41:00) [23]


> мне кажется, из приведенного примера должен быть понятен
> смысл вопроса


Он мне как раз и вполне понятен.

Ты перебираешь некий список объектов, какжый из которых реализует интерфейс SWBemProperty. Этот интерфейс предоставляет как минимум 2 св-ва : Name и Value. И если св-во Value (OleVariant) не равно Null, то если имя св-ва ТЕКУЩЕГО объекта равно "Name", то ты получаешь зн-е св-ва Value ТЕКУЩЕГО объекта и обрываешь цикл.

разве не так ?


pavel_guzhanov   (2005-01-25 15:16:00) [24]


> не "перебока свойств" у тебя идет, а перебор объектов

Возможно я путаюсь в терминологии, но, как мне кажется, из приведенного примера должен быть понятен смысл вопроса....


Digitman   (2005-01-25 15:08:00) [25]


> где идет переборка свойств объекта SProp


не "перебока свойств" у тебя идет, а перебор объектов !


pavel_guzhanov   (2005-01-25 15:01:00) [26]

Вот фрагмент кода, где идет переборка свойств объекта SProp
while (PropEnum.Next(1, TempObj, Value) = S_OK) do
begin
SProp:= IUnknown(TempObj) as SWBemProperty;
if (SProp.Get_Value <> null) then
begin
 if SProp.Name = 'Name' then
   begin
     Result:=Trim(SProp.Get_Value);
     break;
   end;
end;
end;{while}

Вопрос заключается в том, чтобы установить(Без переборки) SProp.Name равным 'Name', а потом получить значение, находящееся в этом свойстве, т.е. SProp.Get_Value. Извиняюсь, если как-то сумбурно объяснил задачу, но по другому не получается...


PVOzerski   (2005-01-25 14:32:00) [27]

2pavel_guzhanov   (25.01.05 14:27) [2]
Тебе же, кажется, получить значение, а не присвоить надо.
Например, MyStringVariable:=ThisObject.Name;


Pentium133   (2005-01-25 14:31:00) [28]

Ха, ну так если проперти ТОЛЬКО ДЛЯ ЧТЕНИЯ, чего вы еще хотите?


pavel_guzhanov   (2005-01-25 14:27:00) [29]

В ответ на это получаю сообщение об ошибке, Cannot assign to a read-only property. Так что это не прокатывает....


Pentium133   (2005-01-25 14:21:00) [30]

Объек.Name := 'pavel_guzhanov'


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо