Toon posts:

[delphi] WMI try except

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allen,

Ik heb de onderstaande code geschreven om informatie te kunnn verkrijgen van het WMI interface van een Remote Computer. Probleem doet zich echter voor als deze procedure niet aan het wmi_interface van de betreffende computer kan verbinden. Dat komt er een exception. Daarom moet ik een try...except invoegen bij de regel

code:
1
services:=locator.connectserver(Computername2,'','','','','',0, nil);


Ik heb dit al op diverse manieren geprobeerd, maar ik krijg geen werkende code. Is er iemand die weet hoe ik dit het beste kan doen ?


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Procedure TForm1.Getinfo (WMI_Interface: String);
Var
  Locator       : ISWbemLocator;
  Services      : ISWbemServices;
  ObjectSet     : SWbemObjectSet;
  Enum          : IEnumVARIANT;
  TempObj       : OleVariant;
  Value         : Cardinal;
  SObject       : ISWbemObject;
begin
MyResults := TStringlist.Create;
Locator := CoSWbemLocator.Create;
services:=locator.connectserver(Computername2,'','','','','',0, nil);
sObject:= services.Get(WMI_Interface, wbemFlagUseAmendedQualifiers, nil);
ObjectSet:= SObject.Instances_(0, nil);
  Enum:= (ObjectSet._NewEnum) as IEnumVariant;
  while (Enum.Next(1, TempObj, Value) = S_OK) do
  begin
    SObject:= IUnknown(TempObj) as SWBemObject;
   if WMI_Interface = 'Win32_Processor' then
    begin
      MyResults.Text := SObject.GetObjectText_(0);
      GetInfoBool := True;
    end;
    CPUInfo := SObject.GetObjectText_(0);
  end;
  if WMI_Interface = 'Win32_ComputerSystem' then myResults.Text := SObject.GetObjectText_(0);
end;


aanvullende info:

CPUInfo & myResults is een public variable van eht type TStringlist.

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:33
Wat bedoel je dan?
Ik begrijp je probleem niet helemaal. Wat lukt er niet? EEn try / except schrijven? Voor de juiste syntax kan je altijd terecht in de help.

https://fgheysels.github.io/


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

offtopic:
Sorry, geen oplossing voor je probleem... Maar waarom free je de objecten die je private aanmaakt niet? MyResults en Locator mogen toch gefreed worden onderaan je procedure?

[ Voor 3% gewijzigd door NMe op 14-06-2004 15:08 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10:52

Creepy

Tactical Espionage Splatterer

En je weet dat een Exceptie die je afvangt alsnog los door de debugger wordt getoont? Als je de applicatie draait zonder debugger, dan zul je de afgevangen Exceptie niet zien.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Ik ken de syntaxis van try except wel. Ik heb oa ook dit toegevoegd aan de code. Maar dan komt ie even verder op met de melding "except or finally exspected", Terwijl ik het verderop in me code ook zo heb gedaan.

code:
1
2
3
4
5
try
services:=locator.connectserver(Computername2,'','','','','',0, nil);
except
  showmessage ('Error');
 end;

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

Moet die ; voor de except niet weg?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:33
Nee,

ik schrijf m'n try / excepts in Delphi altijd zo:
code:
1
2
3
4
5
6
7
try
   // zooi
except
  on E : EDatabaseError do begin
     // zooi.
  end;
end;

https://fgheysels.github.io/


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23-05 23:27

Tomatoman

Fulltime prutser

Verwijderd schreef op 14 juni 2004 @ 15:15:
Ik ken de syntaxis van try except wel. Ik heb oa ook dit toegevoegd aan de code. Maar dan komt ie even verder op met de melding "except or finally exspected",
Educated guess: blijkbaar vindt de compiler ergens na try het woordje end, dat niet een paar vormt met begin. Zoiets dus:
Delphi:
1
2
3
4
5
6
7
8
9
try
  DoeDit;
  if IkHebDeSmaakTePakken then
    DoeDitOokNog;
  end; // deze 'end' heeft geen bijbehorende 'begin' of 'try..except'
except
  on E: Exception do
    ShowMessage(E.Message);
end;

[ Voor 6% gewijzigd door Tomatoman op 14-06-2004 15:57 ]

Een goede grap mag vrienden kosten.

Pagina: 1