Bonjour
Objectif : parser le résultat d'une requête WMI comme celle-ci :
Bien que ceci fonctionne , cela ne me plait pas car le résultat ne sera pas libéré . Ce n'est pas le "parsing" qui me chagrine mais bien la manière de passer le résultat , il y a là quelque chose qui m'échappe
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM WIN32_DISKDRIVE WHERE deviceID="\\\\.\\PHYSICALDRIVE0"
j'ai bien fait une tentative de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 function WMICollection(Chaine : String): THashedStringList; var d,f : word; start : Boolean; Ws : String; begin Chaine:=AnsiReplaceStr(Chaine,';',''); Chaine:=AnsiReplaceStr(Chaine,' = ','='); Chaine:=AnsiReplaceStr(Chaine,#9,''); Result:=THashedStringList.Create; Ws:=''; for f := Length(Chaine) downto 0 do if chaine[f]='}' then break; Start:=False; for d:= 0 to f-1 do begin if Start then ws:=ws+Chaine[d] else Start:=Chaine[d]='{'; end; Result.Text:=ws; end; // pour faire par exemple ceci function WMIPropriete(TS : THashedStringList; Name : String) : String; begin Result:=TS.ValueFromIndex[TS.IndexOfName(Name)]; end;
mais avec une erreur de compilation à la cléfunction WMICollection(Chaine : String;const THS :TStringList): Integer;
je doit avouer que un résultat TString,TStringlist etc... est une première pour moi , d'où cet appel![]()
Partager