![]() |
INI-Datei sortieren
Ich weiß, dass INI-Dateien keine Datenbank ersetzen können, nichts desto trotz habe ich sie als "Datenbank" umfunktioniert, da ich eine Datenbank brauchte die auf jedem Rechner ohne Probleme läuft ohne das man vorerst irgendetwas installieren muss...
Jetzt stehe ich aber vor einem riesigen Problem, denn ich muss die INI-Datei sortieren und bekomme es einfach nicht hin. Es müssen nur die Sections mit ihren Inhalten der Reihe nach angeordnet werden, hätte da jemand einen Vorschlag wie man es machen könnte? Ich hatte erst an Array-Record gedacht, aber das wäre denke ich mal viel zu umständlich, es muss doch auch irgendwie einfacher gehen :roll: :love: Thx UC |
Re: INI-Datei sortieren
Hallo,
du willst doch die Abschnitte nicht in der INI-Datei neu anordnen - oder? Es reicht doch, wenn du auf die Abschnitte in einer bestimmten Reihenfolge zugreifen kannst. Da du kein Sortierkriterium genannt hast, möchtest du wohl die Abschnittsnamen alphabetisch sortieren. Dazu würde ich die Abschnittsnamen mit ReadSections() in eine StringList einlesen und diese mit sortieren (Sorted := True). Grüße vom marabu |
Re: INI-Datei sortieren
Wie wäre es mit MyBase dafür brauchst Du kein Datenbanksystem.
![]() |
Re: INI-Datei sortieren
Habe hier
![]() mal ein Beispiel gepostet allerdings in VB. Kann aber nicht sagen ob es das ist was du benötigst. Wenn du nur die sectionen ordnen willst (leere zeile einfügen) zwischen jeder dann ist es genau das richtige. Vorrausgesetzt du bekommst es portiert. gruss Emil |
Re: INI-Datei sortieren
Zitat:
Wenn ich aber nur die Sections sortiere, da ändert sich doch der Inhalt der Section oder habe ich da grad nen Denkfehler!? Inhalt der INI-Datei
Code:
Jetzt soll alphabetisch so sortiert werden, dass die Section "abc" an Erster Stelle steht mit dem Inhalt "a=2", "b=4" und "c=1"...Wenn ich jetzt aber per ReadSection die Sections in eine StringList laden lasse, müsste doch der Inhalt der Section vertauscht werden...
[rst]
a=1 b=2 c=3 [abc] a=2 b=4 c=1 [ghi] a=0 b=3 c=2 ... |
Re: INI-Datei sortieren
Mein Vorschlag zielt darauf ab, dass der Inhalt der INI-Datei gar nicht neu angeordnet wird, sondern lediglich die Zugriffsfolge im Programm festgelegt wird - quasi ein index-sequentieller Zugriff.
Nach dem Einlesen mit ReadSections() hast du in deiner Liste stehen:
Code:
Nach dem Sortieren deiner Liste:
rst
abc ghi
Code:
Wenn du dann über die Liste iterierst, kannst du indexsequentiell zugreifen.
abc
ghi rst Freundliche Grüße |
Re: INI-Datei sortieren
Hallo,
warum willst du sortieren? Eine Datenbank z.B. wird normalerweise nicht sortiert - die Datenbankengine legt sich die Daten genau so hin, wie es performancetechnisch am günstigsten ist. Wenn du nur dem user eine sortierte Liste anbieten willst, dann leg deinen eigenen Layer drüber. Da die Ini-Datei (sprich, der TINIFile-Zugriffslayer) ja eh keine Indizierung hat, kannst du z.B. eine Listbox einfach sortieren. Den Namen der Section hast du ja, und mehr brauchst du nicht. |
Re: INI-Datei sortieren
Ich habe das Problem, dass ich sie in ein ListView lade und eine bestimmte Zeile in einer anderen Farbe darstelle:
Delphi-Quellcode:
var
aktiv: array of Boolean; ... aktiv[i] := ini.ReadBool(sl.Strings[i], 'Aktiv', true); ... procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); begin if aktiv[item.Index] then DefaultDraw := True // item normal zeichnen else Sender.Canvas.Font.Color := clMedGray; // Schrift-Farbe Grau end; In dem Array steht also dann welche Zeile Aktiv, also in einer anderen Farbe dargestellt werden soll und welche nicht...nur leider ist es es nicht schön, wenn in einer ListView die Werte durcheinander sind, also habe ich die Möglichkeit gegeben sie zu sortieren, nur leider ändert sich dann auch die komplette Reihenfolge, deswegen wollte ich einfach die INI sortieren... Ich hoffe es hat jemand verstanden was ich meine :P |
Re: INI-Datei sortieren
Wenn du die Liste sortieren, bleibt dir aber nichts anderes übrig, als die ganze Datei zu laden und sie dann zu sortieren.
Wenn du damit nicht von 0 anfangen willst, kannst du ![]() Ansonsten muss ich DGL-luke aber recht geben: Warum willst du überhaupt sortieren? Oder willst du nicht die ini-Datei sorteiren, sondern nur die Ausgabe? Dann könntest du auch alle Werte in eine StringList laden und diese dann sortieren... |
Re: INI-Datei sortieren
Ok, habe grad festgestellt, dass ich ja die Sections vorher schon in eine StringList laden lasse, bevor ich sie in ein das ListView lade...Also reicht es wirklich nur die StringList zu sortieren, anstatt die gesamte INI-Datei zu verändern...Manchmal sieht man den Wald vor lauter Bäumen nicht :D
Danke nochmal! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz