Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Ini-Dateien und ReadSection (https://www.delphipraxis.net/193134-ini-dateien-und-readsection.html)

H.Bothur 24. Jun 2017 11:40

Ini-Dateien und ReadSection
 
Moin,

ich verstehe etwas bei INI-Dateien nicht ganz ... angenommen ich habe folgende Ini-Datei:

Delphi-Quellcode:
[ADNummern]
1. AD = A
2. AD = B
3. AD = C
4. AD = D
5. AD = E
6. AD = F
Angebommen ich möchte die Buchstaben A-F in eine Stringlist bekommen, wie mache ich das ??

Mit
Delphi-Quellcode:
Ini.ReadSection('ADNummern', TStringList);
bekomme ich die Texte "1. AD", "2. AD" usw. in die TStringList
Mit
Delphi-Quellcode:
Ini.ReadSection[B]S[/B]('ADNummern', TStringList);
bekomme ich "ADNummern" usw. in die TStringList

Natürlich kann ich die Texte einfach umdrehen und in diesem Fall es so schreiben ... aber entweder ich denke falsch oder es ist komplett anders als bei allen anderen Ini-Einträgen.

Delphi-Quellcode:
[ADNummern]
A = 1. AD
B = 2. AD
C = 3. AD
D = 4. AD
E = 5. AD
F = 6. AD
Oder mache ich da was vollkommen falsch ??

Gruß
Hans

Helmi 24. Jun 2017 11:44

AW: Ini-Dateien und ReadSection
 
Hallo,

was du willst die die Werte, also die Values.

Probier mal
Delphi-Quellcode:
Ini.ReadSectionValues

SneakyBagels 24. Jun 2017 12:01

AW: Ini-Dateien und ReadSection
 
Zitat:

aber entweder ich denke falsch oder es ist komplett anders als bei allen anderen Ini-Einträgen.
Ich glaube du denkst falsch.

Wobei ich das hier auch viel zu umständlich ansehe
Delphi-Quellcode:
[ADNummern]
1. AD = A
2. AD = B
3. AD = C
4. AD = D
5. AD = E
6. AD = F

himitsu 24. Jun 2017 12:04

AW: Ini-Dateien und ReadSection
 
PS, im Gegensatz zu XML sind in INI/CSV/usw. führende&folgende Lehrzeichen gültig und werden nicht automatisch entfernt.

Der Name "1. AD " hat also den Valud " A".

juergen 24. Jun 2017 12:25

AW: Ini-Dateien und ReadSection
 
Hallo,

wie wär's mit:
Delphi-Quellcode:
sl.Add(my_ini.ReadString('ADNummern', '1. AD', '1. AD-Error'));
sl.Add(my_ini.ReadString('ADNummern', '2. AD', '2. AD-Error'));
sl.Add(my_ini.ReadString('ADNummern', '3. AD', '3. AD-Error'));
...
sl.Add(my_ini.ReadString('ADNummern', '6. AD', '6. AD-Error'));

himitsu 24. Jun 2017 12:53

AW: Ini-Dateien und ReadSection
 
Delphi-Quellcode:
Ini.ReadSection('ADNummern', SL);
for i := SL.Count - 1 downto 0 do
  SL[i] := SL.ValueByIndex[i];
Nun ja, im Allgemeinen ist eine INI eine Liste aus Name&Wert-Paaren,
wobei immer einem "eindeutigen" Name irgendein "beliebiger" Wert zugewiesen ist. (gleiche Werte können auch mehrmals vorkommen)

Da ein Wert praktisch ohne seinen Namen keine Bedeutung besitzt, gibt es standardmäßig auch keine Funktion, um alle Werte ohne ihren Namen auszulesen.

Luckie 24. Jun 2017 13:23

AW: Ini-Dateien und ReadSection
 
Mal klarer gefragt: Was ist der Bezeichner und was ist der Wert?

H.Bothur 24. Jun 2017 18:40

AW: Ini-Dateien und ReadSection
 
Moin,

Zitat:

Zitat von Helmi (Beitrag 1375272)
Hallo,

was du willst die die Werte, also die Values.
Probier mal
Delphi-Quellcode:
Ini.ReadSectionValues

bei
Delphi-Quellcode:
Ini.ReadSectionValues
bekomme ich aber beide Seiten vom Gleichheitszeichen. :-(
ich will aber nur die rechte Seite wie sonst auch.

Hans

H.Bothur 24. Jun 2017 18:41

AW: Ini-Dateien und ReadSection
 
Zitat:

Zitat von juergen (Beitrag 1375276)
Hallo,

wie wär's mit:
Delphi-Quellcode:
sl.Add(my_ini.ReadString('ADNummern', '1. AD', '1. AD-Error'));
sl.Add(my_ini.ReadString('ADNummern', '2. AD', '2. AD-Error'));
sl.Add(my_ini.ReadString('ADNummern', '3. AD', '3. AD-Error'));
...
sl.Add(my_ini.ReadString('ADNummern', '6. AD', '6. AD-Error'));

so in der Art geht es - hätte aber den Nachteil das ich schon vorher wissen muss wie viele Einträge es gibt.

Hans

Helmi 24. Jun 2017 18:47

AW: Ini-Dateien und ReadSection
 
Zitat:

Zitat von H.Bothur (Beitrag 1375283)
Moin,

Zitat:

Zitat von Helmi (Beitrag 1375272)
Hallo,

was du willst die die Werte, also die Values.
Probier mal
Delphi-Quellcode:
Ini.ReadSectionValues

bei
Delphi-Quellcode:
Ini.ReadSectionValues
bekomme ich aber beide Seiten vom Gleichheitszeichen. :-(
ich will aber nur die rechte Seite wie sonst auch.

Hans

ist ja nicht tragisch

führe ini.ReadSectionValue aus und schreibe in eine StringList
danach kannst du folgendes machen:

Delphi-Quellcode:
for i := 0 to Pred(StringList.Items.Count) do
  S := Stringlist.ValueFromIndex[i];
So bekommst du den einzelnen Wert jeder Zeile.

H.Bothur 24. Jun 2017 18:56

AW: Ini-Dateien und ReadSection
 
Zitat:

Zitat von Luckie (Beitrag 1375279)
Mal klarer gefragt: Was ist der Bezeichner und was ist der Wert?

Bezeichner sind A, B, C usw und die Werte sind 1. AD, 2. AD, 3. AD usw.

Zur Erklärung: Ich habe eine Kundenkartei, da steht unter anderem drin welcher AD zuständig ist, allerdings nicht so einfach wie hier sondern einfach nur mit Nummern willkührlich gewählt und die NICHT in einer Reihenfolge sind.

Außerdem hat natürlich jeder AD eine Email-Adresse. Mein einfacher Ansatz war: In der INI-Datei eine Section mit den Nummern der ADs und eine zweite mit den Email-Adressen .. also so:

Delphi-Quellcode:
[ADNummern]
1. AD = 1
2. AD = 2
3. AD = 5
4. AD = 9
5. AD = 12
6. AD = 25
[ADAdressen]
1. AD = h.bothur@email.de
2. AD = h.bothur@email.de
3. AD = ke.bothur@email.de
4. AD = m.mueller@email.de
5. AD = j.meyer@email.de
6. AD = h.schulze@email.de
Dann einfach in zwei TStringList einlesen, die gesuchte Nummer in der ersten TSringList suchen und dann die entsprechende EmailAdresse aus der zweiten nehmen.

Und da ich sowieso eine INI habe fand ich die Idee nicht schlecht. Es geht ja auch wenn ich mit
Delphi-Quellcode:
ReadSection
das einlese - dann muss ich eben nur die Reihenfolge tauschen.

es hat mich eben nur gewundert warum das so ist.

Hans

H.Bothur 24. Jun 2017 18:58

AW: Ini-Dateien und ReadSection
 
Zitat:

Zitat von Helmi (Beitrag 1375285)
ist ja nicht tragisch

führe ini.ReadSectionValue aus und schreibe in eine StringList
danach kannst du folgendes machen:

Delphi-Quellcode:
for i := 0 to Pred(StringList.Items.Count) do
  S := Stringlist.ValueFromIndex[i];
So bekommst du den einzelnen Wert jeder Zeile.

Es geht ja noch einfacher indem ich für diesen Fall es einfach "umgekehrt" in die INI schreibe - ich fand es eben nur komisch.

Hans

himitsu 24. Jun 2017 20:42

AW: Ini-Dateien und ReadSection
 
Zitat:

Zitat von H.Bothur (Beitrag 1375286)
Zitat:

Zitat von Luckie (Beitrag 1375279)
Mal klarer gefragt: Was ist der Bezeichner und was ist der Wert?

Bezeichner sind A, B, C usw und die Werte sind 1. AD, 2. AD, 3. AD usw.

Zitat:

Es geht ja noch einfacher indem ich für diesen Fall es einfach "umgekehrt" in die INI schreibe - ich fand es eben nur komisch.
Wieso komisch?

Du hast dir doch selber schon beantwortet, dass es "falsch" ist,
und das zeigt sogar dein Beispiel.
Code:
[ADAdressen]
1. AD = h.bothur@email.de
2. AD = h.bothur@email.de
3. AD = ke.bothur@email.de
4. AD = m.mueller@email.de
5. AD = j.meyer@email.de
6. AD = h.schulze@email.de
Wenn man hier Name und Wert tauscht, dann geht das nicht auf, da dann der Name "h.bothur@email.de" doppelt wäre.
Zum Glück hat niemand meinen Beitrag gelesen. :roll:


hmmmm
Code:
[AD]
1=h.bothur@email.de
2=h.bothur@email.de
5=ke.bothur@email.de
9=m.mueller@email.de
12=j.meyer@email.de
25=h.schulze@email.de

p80286 24. Jun 2017 22:12

AW: Ini-Dateien und ReadSection
 
Irgendwie sieht es so aus, als wolltest Du Datenbank-Daten in eine Ini-Datei quetschen.
Eines der üblichen Austauschformate XML,CSV wäre hier wohl besser geeignet.
Gruß
K-H

haentschman 25. Jun 2017 06:52

AW: Ini-Dateien und ReadSection
 
Moin...:P
Zitat:

Zur Erklärung: Ich habe eine Kundenkartei
...
Außerdem hat natürlich jeder AD eine Email-Adresse...
Zitat:

Irgendwie sieht es so aus, als wolltest Du Datenbank-Daten in eine Ini-Datei quetschen.
...so sieht es auch für mich aus. Diese Daten gehören in eine Datenbank. 8-) Mit einer Tabelle wärst du schon fertig.

H.Bothur 25. Jun 2017 10:09

AW: Ini-Dateien und ReadSection
 
Zitat:

Zitat von haentschman (Beitrag 1375291)
Zitat:

Irgendwie sieht es so aus, als wolltest Du Datenbank-Daten in eine Ini-Datei quetschen.
...so sieht es auch für mich aus. Diese Daten gehören in eine Datenbank. 8-) Mit einer Tabelle wärst du schon fertig.

Ja - wahrscheinlich ahbt ihr recht. Ich hab das nur deswegen so realisiert weil ich keine Extra-Datei habe und das Handling eigentlich rewcht einfach ist. Aber wahrscheinlich über eine CS>V genauso gut machbar.

Gruß
Hans

nahpets 25. Jun 2017 10:40

AW: Ini-Dateien und ReadSection
 
Schau mal nach TClientDataSet, da gibt es auch ein LoadFromFile und ein SaveToFile. Damit hast Du dann auch eine Datei, ob das jetzt nun 'ne Ini ist oder 'ne CSV oder sonst was ist. Für Deine Daten benötigst Du exakt eine Datei.

Aber beim Programmieraufwand können da Welten dazwischen liegen. Und Inis sind bei Datenbanken gewiss nicht die erste Wahl.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:33 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