AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

INI-Datei sortieren

Ein Thema von Uncle Cracker · begonnen am 25. Mär 2007 · letzter Beitrag vom 25. Mär 2007
Antwort Antwort
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#1

INI-Datei sortieren

  Alt 25. Mär 2007, 10:37
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


Thx UC
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: INI-Datei sortieren

  Alt 25. Mär 2007, 10:43
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
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: INI-Datei sortieren

  Alt 25. Mär 2007, 10:45
Wie wäre es mit MyBase dafür brauchst Du kein Datenbanksystem.
http://www.dsdt.info/tutorials/mybase/
Blackheart
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

Re: INI-Datei sortieren

  Alt 25. Mär 2007, 10:55
Habe hier Ini-format
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
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#5

Re: INI-Datei sortieren

  Alt 25. Mär 2007, 11:05
Zitat von marabu:
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

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:
[rst]
a=1
b=2
c=3
[abc]
a=2
b=4
c=1
[ghi]
a=0
b=3
c=2
...
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...
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: INI-Datei sortieren

  Alt 25. Mär 2007, 11:17
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:
rst
abc
ghi
Nach dem Sortieren deiner Liste:

Code:
abc
ghi
rst
Wenn du dann über die Liste iterierst, kannst du indexsequentiell zugreifen.

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#7

Re: INI-Datei sortieren

  Alt 25. Mär 2007, 11:18
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.
Lukas Erlacher
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#8

Re: INI-Datei sortieren

  Alt 25. Mär 2007, 11:26
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
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#9

Re: INI-Datei sortieren

  Alt 25. Mär 2007, 11:31
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 meinen Ini-Parser als Grundlage nehmen, denn dann musst du nach dem Parsen nur einmal kurz die ObjectList von Sectiosn sortieren (TYIniFile.Fsections.sort(SortFunc)). Du musst dir nur die SortFunc schreiben, aber das sollte ein 3-Zeiler sein.

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...
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#10

Re: INI-Datei sortieren

  Alt 25. Mär 2007, 11:49
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

Danke nochmal!
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:25 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