Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.05.2013, 12:36
KORSA_MC KORSA_MC вне форума
Прохожий
 
Регистрация: 01.05.2013
Сообщения: 5
Версия Delphi: delphi 7
Репутация: 10
По умолчанию данные о железе

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

выдаёт пару ошибок,всё перерыл ничего не нашёл

Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.OleServer, WbemScripting_TLB, ActiveX,
  Vcl.StdCtrls, Vcl.Buttons, Vcl.ExtCtrls, Vcl.CheckLst;

type
  TForm1 = class(TForm)

    SWbemLocator1: TSWbemLocator;
    BitBtn1: TBitBtn;
    CheckListBox1: TCheckListBox;
    LinkLabel1: TLinkLabel;
    procedure BitBtn1Click(Sender: TObject);
    procedure ShowProp(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
 var
  Service: ISWbemServices;
  ObjectSet: ISWbemObjectSet;
  SObject: ISWbemObject;
  PropSet: ISWbemPropertySet;
  SProp: ISWbemProperty;
  PropEnum, Enum: IEnumVariant;
  TempObj: OleVariant;
  Value: Cardinal;
  StrValue: string;
begin

  Service := SWbemLocator1.ConnectServer('.', 'root\CIMV2', '', '', '', '', 0,
    nil);

  SObject := Service.Get('Win32_Processor', wbemFlagUseAmendedQualifiers, nil);

  ObjectSet := SObject.Instances_(0, nil);

  Enum := (ObjectSet._NewEnum) as IEnumVariant;
  Enum.Next(1, TempObj, Value);
  SObject := IUnknown(TempObj) as SWBemObject;
  PropSet := SObject.Properties_;
  PropEnum := (PropSet._NewEnum) as IEnumVariant;
  while (PropEnum.Next(1, TempObj, Value) = S_OK) do
  begin
    SProp := IUnknown(TempObj) as SWBemProperty;
    StrValue := '';
    CheckListBox1.AddItem(SProp.Name, nil);
    ShowProp(SProp);
  end;
end;
 procedure TForm1.ShowProp(SProp: SWBemProperty);
begin
  if (SProp.Get_Value  &lt; &gt; null) then
  begin
    with SProp do
    begin
      if Name = 'Name' then
        Label1.Caption := Get_Value
      else if Name = 'Manufacturer' then
        ….

    end;
  end;
end;


end.
Ошибки
Код:
ShowProp(SProp); - Incompatible types: 'TObject' and 'ISWbemProperty'
Код:
if (SProp.Get_Value  &lt; &gt; null) then - ')' expected but identifier 'lt' found
и ещё тут почему-то ругаеться
Код:
 procedure TForm1.ShowProp(SProp: SWBemProperty);- Declaration of 'ShowProp' differs from previous declaration
помогите )
Ответить с цитированием
  #2  
Старый 07.05.2013, 12:53
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

строка 67-
if (SProp.Get_Value &lt; &gt; null) then - ')' expected but identifier 'lt' found
Ну сам понял, что написал?
Скопировал код с какого-то сайта, и не заметил, что код в редакторе IDE не похож на тот, что показывает браузер.

Строка 65
Declaration of 'ShowProp' differs from previous declaration
дословные перевод
объявление 'ShowProp' отличается от предыдущего объявления
(предыдущее объявление - в строке 18)

ну и
Incompatible types: 'TObject' and 'ISWbemProperty'
- должно пропасть, если исправишь предыдущую ошибку
Ответить с цитированием
  #3  
Старый 07.05.2013, 12:58
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Банить надо за такие заголовки тем.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #4  
Старый 07.05.2013, 13:35
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

полностью рабочий кусок из Просмотрщик Windows Management Instrumentation (WMI) Win32 классов:

Код:
var
  objLocator: Variant;
  objServices: Variant;
  objObjectSet: Variant;

  EnumSet: IEnumVariant;
  SetVar: OleVariant;
  Fetched: LongWord;

  EnumProp: IEnumVariant;
  PropVar: OleVariant;

  ListItem: TListItem;
begin
  ListView.Items.BeginUpdate;
  try
    objLocator:=CreateOleObject('WbemScripting.SWbemLocator');
    objServices:=objLocator.ConnectServer('', 'root\CIMV2');
    objObjectSet:=objServices.ExecQuery('select * from Win32_Processor');
    EnumSet:=IUnknown(objObjectSet._NewEnum) as IEnumVariant;
    while EnumSet.Next(1, SetVar, Fetched)=S_OK do
    begin
      EnumProp:=IUnknown((IUnknown(SetVar) as ISWbemObject).Properties_._NewEnum) as IEnumVariant;
      while EnumProp.Next(1, PropVar, Fetched)=S_OK do
      begin
        ListItem:=ListView.Items.Add;
        ListItem.Caption:=(IUnknown(PropVar) as ISWbemProperty).Name;
        ListItem.SubItems.Add(VarToStr((IUnknown(PropVar) as ISWbemProperty).Get_Value));
      end;
    end;
  finally
    ListView.Items.EndUpdate;
  end;
end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
KORSA_MC (07.05.2013)
  #5  
Старый 07.05.2013, 17:33
KORSA_MC KORSA_MC вне форума
Прохожий
 
Регистрация: 01.05.2013
Сообщения: 5
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

Спасибо всем и не надо ругаться)) я же на Компьютерные сети учусь,а тут курсачь по делфи дали делать)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:49.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter