Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> НЕ все понятно с функцией WMI, НЕ все понятно с функцией WMI 
:(
    Опции темы
Pcrepair
Дата 3.3.2016, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



Добрый день. для доступа к данным сервера WMI есть стандартный код, в частности функция

Код

function MagWmiGetPropStr(WmiProp: ISWbemProperty):string ;
var
  I:integer ;
begin
  Result := '';
  if VarIsNull(WmiProp.Get_Value) then Result := 'NULL'
  else
  begin
    case WmiProp.CIMType of
    WbemCimtypeSint8,
    WbemCimtypeUint8,
    WbemCimtypeSint16,
    WbemCimtypeUint16,
    WbemCimtypeSint32,
    WbemCimtypeUint32,
    WbemCimtypeSint64:

    if VarIsArray(WmiProp.Get_Value) then
    begin

      for I := 0 to VarArrayHighBound(wmiProp.Get_Value, 1) do
      begin
        if I > 0 then Result := Result + '|' ;
        Result := Result + IntToStr(WmiProp.Get_Value [I]);
      end;

    end
    else Result := IntToStr (wmiProp.Get_Value);

    WbemCimtypeReal32,WbemCimtypeReal64:
    Result := FloatToStr(wmiProp.Get_Value);

    wbemCimtypeBoolean:
    //if Boolean(WmiProp.Get_Value) then Result := 'True' else Result := 'False';
    if (WmiProp.Get_Value) then Result := 'True' else Result := 'False';   (*начально*)

    WbemCimtypeString, WbemCimtypeUint64:
    if VarIsArray(WmiProp.Get_Value) then
    begin

      for I := 0 to VarArrayHighBound (WmiProp.Get_Value, 1) do
      begin
        if I > 0 then Result := Result + '|' ;
        Result := Result + WmiProp.Get_Value [I] ;
      end ;

    end else Result := WmiProp.Get_Value;

    WbemCimtypeDatetime:
    Result := WmiProp.Get_Value;

    WbemCimtypeReference:
    begin
      Result := wmiProp.Get_Value ;
      //Services.Get(result, 0, nil).GetObjectText_(0));  another query
    end;

    WbemCimtypeChar16:
    Result := '<16-bit character>';

    WbemCimtypeObject:
    Result := '<CIM Object>';
    end ;
  end;
end ;


RAD (WinXP, XE3) недовольна вот этим : if (WmiProp.Get_Value) then Result := 'True' else Result := 'False';
пишет что "выражение должно быть логическим" что соответсвует, так как в WbemScripting_TLB метод Get_Value
Код


ISWbemProperty = interface(IDispatch)
    ['{1A388F98-D4BA-11D1-8B09-00600806D9B6}']
    function Get_Value: OleVariant; safecall;
end;


имеет тип OleVariant

Вопрос : что вообще тут можно сделать? непонятно как такой косяк вообще имеет место быть.
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
dnek
Дата 4.3.2016, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 1.4.2013

Репутация: нет
Всего: нет



Вообще Boolean в OleVariant занимает 2 байта. Попробуйте привести WmiProp.Get_Value к WordBool. Если не поможет - попробуйте поиграться с VarRec

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0754 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.