AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi XML bearbeiten im VBScript (FinalBuilder)
Thema durchsuchen
Ansicht
Themen-Optionen

XML bearbeiten im VBScript (FinalBuilder)

Ein Thema von himitsu · begonnen am 1. Aug 2023 · letzter Beitrag vom 6. Okt 2023
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.199 Beiträge
 
Delphi 12 Athens
 
#1

XML bearbeiten im VBScript (FinalBuilder)

  Alt 1. Aug 2023, 10:31
[edit]
OK, ich komm um manuelles Speichern nicht drumrum, bei all dem Scheiß, den Emba da baut.

* Emba speichert mit UTF-8 BOM, MS-XMLDOM ohne BOM
* Emba speichert als HTML-Entity, MS-XMLDOM als "
* Emba speichert alles mit CRLF, Emba auch, außer die Zeilenumbrüche innerhalb dieses Nicht-CDATA-PostBuildEvent, welche als CR (nicht LF) gespeichert sind

Aber eine Lösung, wie die " unverändert blieben und nicht zu " würden, wäre dennoch toll.
[/edit]


Moin,

also genauer geht es um DPROJs.


Für Delphi XE hatte ich noch mit String-Replace rumgepfuscht,
aber für 11.x wollte ich das nun "richiger" machen.

Die 4 Leerzeichen, welche Microsoft.XMLDOM als Tab speichert, konnte ich nun doch lösen.
preserveWhiteSpace=True vor dem SAVE (nicht nur/schon vor dem Load)

Aber nun noch noch der nächste Schrott, den Delphi verbockt.

in der BASE heißt es noch <PostBuildEvent><![CDATA["... aber dann, obwohl es sich "eigentlich" nicht ändert, wird nochmal für jede Config ein <PostBuildEvent>&quot;... gespeichert.


OK, abgesehn davon, dass man nun sinnlos redundanten Dreck in der DPROJ hat (wunderschön für einen GIT-Diff),
speichert XMLDOM das &quot; als " ab.

Im Node.Text ein Replace von " zu &quot; würde natürlich &amp;quot; ergeben.

Gibt es da nun irgendeinen Weg dem XML-DOM beizubringen das nicht zu ändern, bzw. die " in Node-Texten als &quot; zu speichern? (außer im CDATA)
* der Code an sich funktioniert dennoch
* ich könnte diese Nodes auch einfach löschen und es wäre alles OK
* oder ich muß doch wieder nachträglich in der Datei Replacen
-> die ersten Beiden würden gehen, aber ergeben "beschissene" Änderungen im GIT-Diff, die dann später durch Delphi nochmals geändert wurden (ein krankes hin und her, mit nervigen Änderungen im Commit)


Also ein billiges StringReplace über den kompletten XML-Text .... nja, die meißten " müssen ja " bleiben.
Die kompletten Nodes Replacen, da müsste man aufpassen, wenn zukünftig dort etwas geändert würde-







Diesen PostBuildEvent-Bug gibt es nun schon ewig ... glaub nicht dass Emba das zeitnah repariert bekommt.

Code:
' in der Projektdatei die entsprechende Default-Config aktivieren (Release, Debug oder DebugOhneEurekalog)
function UpdateDefaultConfigInProjectFile(Action)
  File  = ExpandVarQuiet(Action.BuildFile)
  Config = FBVariables.MAKE_CONFIG

  set XML = CreateObject("Microsoft.XMLDOM")
  XML.preserveWhiteSpace = True
  XML.async = False
  if not XML.load(File) then call Err.Raise(1, "FinalBuilder", File + " not loaded : " + CStr(XML.parseError.errorCode) + " " + CStr(XML.parseError.reason))

  set Node = XML.selectSingleNode("//ItemGroup/BuildConfiguration[@Include='" + Config + "']")
  if Node is Nothing then
    Action.Echo "does NOT found Config '" + Config + "' in " + File
  else
    Action.Echo "found Config '" + Config + "' in " + File

    set Node = XML.selectSingleNode("//PropertyGroup/Config")
    Node.text = Config

    XML.preserveWhiteSpace = True
    if XML.save(File) <> 0 then call Err.Raise(1, "FinalBuilder", "write error")
  end if
end function
Ja, beim MSBuild kann ich via Parameter die zu verwendende Config übergeben, aber es soll dann auch im Delphi die entsprechende Config "standardmäßig" aktiv sein, beim Debuggen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 1. Aug 2023 um 14:31 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz