Comment récupérer la valeur d'un noeud d'un fichier XML ?
Je me suis inspiré de la faq (https://delphi.developpez.com/faq/?p...ud-par-son-nom), mais j'obtiens l'erreur suivante lors de l'appel à ma sous-procédure récursive RechercheNoeud :
Appel :Le projet xxx.exe a déclenché la classe d'exception EInvalidPointer avec le message 'Opération de pointeur incorrecte'.
Sous-procédure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 XMLDocument := TXMLDocument.Create(nil); try XMLDocument.LoadFromFile(ChangeFileExt(szProjet, '.dproj')); XMLDocument.Active := True; Result := RechercheNoeud(XMLDocument.DocumentElement, NoeudRecherche, 0); // << Appel de la sous-procédure. ... finally XMLDocument.Free; end;
J'ai mis un point d'arrêt au début de la sous-procédure, mais je n'y arrive même pas.
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 function RechercheNoeud(Noeud: IXMLNode; NoeudRecherche: TStringList; const nNiveau: Integer): String; var i: Integer; begin Result := '?'; if Assigned(Noeud) then begin if Noeud.NodeType = ntElement then begin if Noeud.NodeName = NoeudRecherche[nNiveau] then begin if nNiveau < Pred(NoeudRecherche.Count) then begin if Noeud.HasChildNodes then begin for i:=0 to Pred(Noeud.ChildNodes.Count) do Result := RechercheNoeud(Noeud.ChildNodes.Nodes[i], NoeudRecherche, (nNiveau + 1)) end; end else Result := Noeud.Text; end; end; end; end;
J'ai testé de mettre nil en premier paramètre, et ça ne plante plus. Ça ne fait plus rien, mais ça prouve bien que c'est lui le pb.
Qu'est ce que j'ai mal fait ?
Partager