1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Professor Bernd

Beiträge von Professor Bernd

  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 24. April 2021 um 00:01

    AspirinJunkies Code bereitet die Ist.ini auf und benutzt als Grundlage die Soll.ini. Daraus resulitiert die Ergebnis.ini.

    Kurz gesagt, am Ende geht es also um die Ist.ini und die Ergebnis.ini.

    • Unterscheiden sich die beiden Inis, soll der Inhalt der Ergebnis.ini den Inhalt der Ist.ini ersetzen.
    • Sind beide Inis gleich, soll nicht geschrieben werden.

    Somit scheint mir die Lösung zu sein, die Ergebnis.ini mit der Ist.ini zu vergleichen.? ZIel: Sind beide Inis absolut gleich? Die Prüfung ist eine strikt einfache: Gibt es irgendeinen Unterschied zwischen beiden Inis? Es braucht also nichts besonderes geprüft zu werden, also z.B. ob der Schlüssel X in der einen Ini den gleichen Wert wie in der anderen hat, usw. Selbst wenn Schlüssel X in beiden Inis vorhanden ist, aber an unterschiedlichen Stellen, gilt das als unterschiedlich. Wenn in einer der beiden Inis ein/e Leerzeichen/Leerzeile mehr/weniger als in der anderen ist, gilt das als unterschiedlich. usw.

    Daraus resultiert die Frage, wie macht man das am schnellsten

    • Beide Inis in Arrays laden und zeilenweise vergleichen?
    • Beide Inis in Dictionaries laden und vergleichen?
    • Muss man Arrays, bzw. Dicts unbedingt iterieren, oder gibt es einfacher/schnellere Methoden?
    • Könnte man beide Inis als Strings vergleichen? If $String_1 = $String_2 Then Oder geht das bei 30 KB in die Hose?
    • Gibt es andere Methoden, die beiden (im RAM bedindlichen) Inis zu vergleichen?
  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 23. April 2021 um 23:01

    Wie wäre es mit folgender Idee?

    Zitat von Musashi

    Solange es nur grundsätzlich darum geht, ob sich die Soll.ini und die Ist.ini unterscheiden

    Nicht die Soll.ini und die Ist.Ini vergleichen, sondern die Ist.ini und die Ergebnis.ini. Könnte das funktionieren? Falls ja, wie gehts am schnellsten: Zeilenweise vergleichen (Dateien befinden sich ja schon im RAM), oder gibts dafür auch eine RegExe, die mit 32+ KB zurechtkommt?

  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 23. April 2021 um 22:46
    Zitat von Musashi

    Solange es nur grundsätzlich darum geht, ob sich die Soll.ini und die Ist.ini unterscheiden (nicht wo), wäre dann ein Vergleich z.B. der MD5-Hashes nicht ausreichend ?

    Eine solche Möglichkeit würde ich vorziehen. Ich habe mir Aspirinjunkies Code gerade nochmal angesehen und glaube, eine Änderungserkennung ist da recht schwierig einzubauen.

    Leider ist eine Überprüfung nicht zielführend, bei der lediglich festgestellt wird, ob die Soll.ini und die Ist.ini unterschiedlich sind. Denn beide Dateien dürfen grundsätzlich unterschiedlich sein: In der Soll.ini (quasi Global.properties) stehen die Standard-Werte und in der Ist.ini (User...) stehen die Werte, die dem User gefallen.

  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 23. April 2021 um 22:26

    AspirinJunkie

    Kannst du bitte eine Erkennung hinzufügen, ob die Soll.ini und die Ist.ini unterschiedlich sind? (Bei meinem RegEx-isch würde ich Jahre dafür brauchen.) Damit soll dann die Ergebnis.ini nur geschrieben werden, wenn es eine (1 oder mehr) Änderung gebeben hat. Die Rückgabe kann z.B. in einem zusätzlichen Parameter erfolgen.

    Pseudo-Code zur Veranschaulichung, was gemeint ist.

    AutoIt
    Local $bDiffsFound
    
    $sZusammen = _IniCombine("Soll.ini", "Ist.ini", $bDiffsFound)
    ; ConsoleWrite($sZusammen & @CRLF)
    If $bDiffsFound Then FileWrite("Ergebnis.ini", $sZusammen)
    
    Func _IniCombine(Const $sSourcePath, Const $sAddPath, ByRef $_bDiffsFound)
  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.5 2021.04.04)

    • Professor Bernd
    • 23. April 2021 um 21:29

    Wie ist denn der Status? Ist das neue erste Beispiel soweit in Ordnung? Wird es übernommen? Wie sieht es mit meinem Vorschlag für ein zweites Beispiel aus, wird das übernommen? Und zum Schluß: Die Funktion _ColorGetCOLORREF nicht vergessen, siehe Posting #4.

  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 23. April 2021 um 19:22

    BugFix Danke für den Tipp, ein Konzept mit Global- und User-Properties zu nutzen! Im Moment ist mir das noch zu fremd, aber ich werde mich damit beschäftigen, um damit vertrauter zu werden.

    Musashi Danke fürs Limit austesten!

    Bitnugger Danke für den "RedirectSection"-Tipp!

    Mit all diesen Tipps ist der Himmel das Limit! :saint:


    AspirinJunkie Gut gemacht! :thumbup:

    Zitat von AspirinJunkie

    Das hat nichts mit den Zeichen zu tun sondern lediglich mit dem Umstand, dass Inhalte noch vor der ersten Section stehen.

    Gut dass du das entdeckt und gelöst hast! Inhalte (Kommentare) vor der ersten Section sind in meinem Fall sehr wichtig, wegen dem "gemischten Inhalt". Wie ich eingangs schrieb, geht es um das Updaten der Ini. Deshalb wird in der ersten Zeile ein Kommentar mit einer Versionsangabe stehen.

    Deinen neuen Code (Version 3) habe ich getestet, er hat wunderbar funktioniert!

    Die Test-Dateien im Posting #31 haben noch einen unerwarteten Zusatz-Test gebracht, denn sie sind in einem Unix-Format gespeichert. Dein Code hat auch das mit Bravour gemeistert!

    Zitat von AspirinJunkie

    Also ist es nicht das gewünschte Resultat.
    Bitte also noch eine dazugehörige Beispieldatei.

    Entschuldige meinen Unmut deswegen, ich dachte, du wolltest mich veralbern.

    Als ich den Thread erstellt habe, ging ich von einer Diskussion über verschiedene Methoden und dem Austausch von (theoretischen) Ideen aus. Dass jemand gleich mit einer Lösung aufwartet und den Code erstellt, hatte ich nicht auf dem Schirm. - Beim nächsten Mal bekommst du von mir soviele Beispieldateien, wie du willst. (Solange es nicht mehr als 4 sind.) 8o

    Summa summarum kann ich sagen, dass ich positiv überrascht bin und nicht damit gerechnet hatte. Vielen Dank für deine Mühe! :thumbup:

  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 23. April 2021 um 10:35

    Falls dir langweilig ist und du eine Ini mit Zeichen in allen möglichen Sprachen angehen willst, sind im Anhang Beispieldateien. Wegen der Größe der Datei habe ich die Ausgabe in eine Datei gespeichert (in der 2.au3, Zeile 4: FileWrite("Ergebnis.ini", $sZusammen)).

    In der Ist.ini gibt es 4 Änderungen zur Soll.ini. Falls du WinMerge oder ähnliches hast, kannst du sie dir leicht anzeigen lassen. Ansonsten kannst du nach "Hallo Welt!" suchen, das ich an den 4 Stellen eingefügt habe.

    Edit: AspirinJunkie Bitte nur als Zusatzarbeit verstehen, es wird im konkreten Fall nicht wirklich benötigt (siehe vorheriges Posting).

    Dateien

    5.zip 157,43 kB – 209 Downloads
  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 23. April 2021 um 10:25

    Super Arbeit! :thumbup:

    Lediglich bei asiatischen, arabischen, bulgarischen, ... Zeichen macht der Code nicht mit. Woran es lag, konnte ich nicht rausfinden, ich habe eine Ini mit Sprachen geladen und die Ausführung blieb gleich stecken.

    Aber das ist nicht schlimm, ich habe nicht vor, Language.ini's auf diese Art upzudaten. Im Moment sind nur Settings beabsichtigt, das reicht.

    Vielen Dank für deine Mühe! :) ... Jetzt muss ich nur noch sehen, wie ich das auf VBScript umsetzen kann. :D

  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 23. April 2021 um 09:51
    Zitat von Musashi

    Das 32 KB Limit scheint, zumindest ab Win7, also nicht mehr zu gelten.

    Dann wird sich das 32 KB Limit nur auf IniReadSection() beziehen. Und das wäre ja wirklich kein Problem. Wenn man davon ausgeht, dass die PSPad.ini bei 32 KB Gesamtgröße aus insgesammt etwa 1.500 Zeilen besteht und man das für eine einzelne Sektion benutzen könnte, ... ich kann da kein Problem sehen, die ganze PSPad.ini würde in 1 Sektion passen. Und man kann doch locker mehr Sektionen erstellen, usw.

    Danke fürs Testen!

  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 23. April 2021 um 09:47
    Zitat von AspirinJunkie

    Hast du die Ist.ini gespeichert bzw. ist es die richtige?

    Es ist nicht die gepostete, weil das Kopieren aus der Webseite die Formatierung ändert. Ich habe eine neue Ist.ini erstellt, das ging schneller. Im Anhang sine alle 3 Dateien, inklusive der Ergebnis.ini , die dein Code erzeugt hat.

    Dateien

    Neuer Ordner (2).zip 1,42 kB – 192 Downloads
  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 23. April 2021 um 09:33

    Beeindruckend! :thumbup:

    Ein kleiner Fehler ist noch drin, siehe Screenshot.

  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 23. April 2021 um 08:09

    In "C:\Program Files\Open-Shell\" habe ich eine Ini gefunden mit fast 300 KB. Das 32 KB Limit scheint nicht mehr zu existieren.

    BugFix Kann es sein, dass das Limit nur für IniReadSection() gilt, so wie AspirinJunkie das inPosting #5 geschrieben hat?

  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 23. April 2021 um 07:49
    Zitat von BugFix

    Aus den 16 Bit Windows Zeiten. Mit Einführung der Registry wurden die Ini Dateien durch MS im System selbst nicht mehr verwendet.

    Also kann das Limit in 64 Bit Windows Zeiten durchaus weggefallen sein? Aber selbst wenn das 32KB File Size Limit noch bestehen sollte, wäre das kein Problem. Ich denke nicht, dass Pau3 soviele Einträge erhält, dass das Limit überschritten wird. Und falls doch, gibts eine zweite Ini-Datei. 8o

  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 23. April 2021 um 07:42
    Zitat von AspirinJunkie

    Also ist es nicht das gewünschte Resultat.
    Bitte also noch eine dazugehörige Beispieldatei.

    Ach bitte, wozu soll das den gut sein? Ist der Sinn nicht klar?

    Aber dir zuliebe poste ich oben noch eine "gewünschtes Resultat"-Ini.

  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 23. April 2021 um 07:37
    Zitat von BugFix

    Du brauchst die User Datei niemals bearbeiten, das macht ausschließlich der Anwender.

    Hmm, ... sollte es mal irgendwann einen Settings-Dialog geben, wäre das gar nicht so schlecht. Im Settings-Dialog kann man die Infos unterbringen, die ich derzeit als Kommentare in die Ini schreibe.

    Zitat von BugFix

    32k File Size Limit.

    Witzig, ich habe gerade nachgesehen, die PSPad.ini hat 32KB. Woher kommt das Limit? Ist das noch akutell?

  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 23. April 2021 um 07:29
    Zitat von AspirinJunkie

    Die Soll-Ini ist - wie du sagst - dein gewünschtes Resultat und diese hast du ja bereits in deinem Skript.
    Also muss du die Ist-Ini nur mit dieser überschreiben.

    Nicht ganz. Wie geschrieben sollen die Werte der Ist-Ini erhalten bleiben.

  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 23. April 2021 um 07:23
    Zitat von BugFix

    Du solltest evtl. das Konzept überdenken.

    Deshalb frage ich ja hier. 8o

    Zitat von BugFix

    Ich finde die von SciTE gewählte Variante mit Global und User Properties sehr gut.

    Das hatte ich vor einiger Zeit auch schonmal überlegt. Aber bisher konnte ich das mit meinem Konzept nicht unter einen Hut bringen. Zum Beispiel soll Pau3 einen Settings-Dialog bekommen. Wo sollte der dann hinspeichern? Wahrscheinlich in die User Properties, dann bin ich soweit wie jetzt, oder? Das werde ich nochmal überdenken, ansich ist die Idee nicht schlech, Global... und User... zu trennen.

  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 23. April 2021 um 07:18
    Zitat von Professor Bernd

    Zum anderen soll eine vorgesehene Reihenfolge in der Ini eingehalten werden.

    Zitat von BugFix

    Was ist der Nutzen davon?

    Ordnung. Schlüssel können aphabetisch sortiert werden und somit können zusammengehörende Schlüssel beisammen stehen und in einer sinnvollen Reihenfolge, wie z.B. im Beispiel oben

    ; Close the LogWin automatically if no errors occur ...

    AutoCloseIfNoError=1

    ; ... but not if debug messages occur.

    AutoCloseButNotIfDbgMsg=1

    BugFix Du postest schneller, als ich antworten kann. Ich schicke hier schonmal eine Teilantwort.

    Zitat von BugFix

    Verabschiede dich von der Ini, da geht ins Auge (Limit).

    Welches Limit?

  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 23. April 2021 um 07:09

    Beispiele im Post #4 ergänzt.

  • Gemischte Ini-Datei updaten - Ideen gesucht

    • Professor Bernd
    • 23. April 2021 um 07:02
    Zitat von AspirinJunkie

    Ich meine ini - und zwar alle drei: "Ist"-Ini, "Soll"-Ini und "gewünschtes Resultat"-Ini

    Ein Beispiel für eine "Soll"-Ini habe ich oben gepostet, das auch die "gewünschte Resultat"-Ini. Eine "Ist"-Ini kann ich auch posten, ist einfach eine "Soll"-Ini mit Durcheinander und fehlenden/gelöschten Schlüsseln.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™