Bonjour,
J'essaie de mettre en place dans Inno Setup un moyen de créer un fichier de configuration tel que je l'utilise ensuite avec mon application écrite en VB6.
J'arrive à créer un DOMDocument et à le sauver, par contre si j'essaie de le formater avec la routine ci-dessous, le fichier est bien sauvé mais il est vide !
Voici le code que j'utilise en VB :
Code vb : 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 ' Add formatting to the document. Private Sub FormatXmlDocument(ByVal xmlDoc As DOMDocument) Dim rdr As SAXXMLReader Dim wrt As MXXMLWriter Set rdr = New SAXXMLReader Set wrt = New MXXMLWriter wrt.Indent = True wrt.encoding = "ISO-8859-1" wrt.output = xmlDoc Set rdr.contentHandler = wrt Set rdr.ErrorHandler = wrt rdr.parse xmlDoc wrt.Flush Set rdr = Nothing Set wrt = Nothing End Sub
... et voici la traduction pour Inno setup (je ne suis pas un spécialiste en delphi ...)
Bon, j'ai déjà du mal à comprendre comment cela fonctionne en VB (j'ai bêtement recopié un exemple de code), parce que on passe le document par valeur (?) et à la fin le document se retrouve bien formaté dans la routine appelante !? alors que pendant le traitement après le parse y'a plus rien ...
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 procedure FormatXmlDocument(const xmlDoc: variant); var rdr, wrt: variant; begin rdr := CreateOleObject('MSXML2.SAXXMLReader'); wrt := CreateOleObject('MSXML2.MXXMLWriter'); wrt.Indent := True; wrt.encoding := 'ISO-8859-1'; wrt.output := xmlDoc; rdr.contentHandler := wrt; rdr.ErrorHandler := wrt; MsgBox(xmlDoc.XML, mbInformation, MB_OK); rdr.parse(xmlDoc); MsgBox(xmlDoc.XML, mbInformation, MB_OK); wrt.Flush(); //MsgBox(xmlDoc.XML, mbInformation, MB_OK); rdr := Unassigned(); wrt := Unassigned(); //MsgBox(xmlDoc.XML, mbInformation, MB_OK); end;
Dans Inno setup ça fait un peu pareil , après le parse, plus rien, mais en sortie plus rien non plus.
J'ai essayé de passer le document par référence, mais pas mieux ! J'en appelle donc à ceusses qui savent ...
Merci d'avance
Je joins le fichier iss (testXML.zip) qui me sert pour test.
Thierry






Répondre avec citation
en récupérant directement l'output formatté sans passer par le flush:
Partager