Ok, durch unsere Diskussion (das war das Ziel dieses Threads) ist mir das Ziel nun klarer geworden. Kürzer formuliert sähe es nun so aus:
Neue Namen: Soll.ini = Master.ini; Ist.ini = User.ini; Ergebnis.ini = Merged.ini - "Ini" ist hierbei sinnbildlich zu verstehen, es sind nicht zwingend Dateien auf der Festplatte, sondern können auch nur im RAM existieren.
- Die Master.ini wird zunächst 1:1 in die Merged.ini kopiert.
- Dann werden alle Schlüssel-Werte in der Merged.ini durch die in der User.ini ersetzt.
- User.ini und Merged.ini werden miteinander verglichen und falls es auch nur 1 Unterschied gibt, wird der Inhalt der User.ini durch den Inhalt der Merged.ini ersetzt.
- Als unterschiedlich wird gesehen, wenn die Inhalte nicht 1:1 stimmen, inkl. Groß- / Kleinschreibung.
Somit könnte man einfach alle Schlüssel und -Werte der User.ini in ein Dictonary laden, z.B. mit AspirinJunkies Code. Dann braucht man nur noch die Merged.ini zu durchlaufen und alle Schlüsselwerte zu prüfen, ob sie im Dictionary exitieren. Falls ja, wird der Schlüssel-Wert in der Merged.ini mit dem aus dem Dict ersetzt.
Am Schluss, wie gesagt, die Merged.ini mit der User.ini vergleichen, ob sie unterschiedlich sind und bei Bedarf in die User.ini schreiben.