|
#1
|
|||
|
|||
данные о железе
Пытаюсь создать программу,которая выводит данные о железе ,но весь процесс встал на процессоре. Данную работу делаю через 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 < > 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 < > null) then - ')' expected but identifier 'lt' found Код:
procedure TForm1.ShowProp(SProp: SWBemProperty);- Declaration of 'ShowProp' differs from previous declaration |
#2
|
|||
|
|||
строка 67-
if (SProp.Get_Value < > null) then - ')' expected but identifier 'lt' found Ну сам понял, что написал? Скопировал код с какого-то сайта, и не заметил, что код в редакторе IDE не похож на тот, что показывает браузер. Строка 65 Declaration of 'ShowProp' differs from previous declaration дословные перевод объявление 'ShowProp' отличается от предыдущего объявления (предыдущее объявление - в строке 18) ну и Incompatible types: 'TObject' and 'ISWbemProperty' - должно пропасть, если исправишь предыдущую ошибку |
#3
|
||||
|
||||
Банить надо за такие заголовки тем.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#4
|
||||
|
||||
полностью рабочий кусок из Просмотрщик 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
|
|||
|
|||
Спасибо всем и не надо ругаться)) я же на Компьютерные сети учусь,а тут курсачь по делфи дали делать)
|