Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Umkehrfunktion zu ReadSection() (https://www.delphipraxis.net/189449-umkehrfunktion-zu-readsection.html)

bernhard_LA 14. Jun 2016 08:08


Umkehrfunktion zu ReadSection()
 
ich möchte eine Stringliste in einer Ini Datei Speichern
IniFile.ReadSection() mit Readsection könnte ich alles Lesen, allerdings gibt es hier zu keine Funktion "IniFile. WriteSection" ;
Muss ich hier selber etwas basteln ?

Sir Rufo 14. Jun 2016 08:16

AW: Umkehrfunktion zu ReadSection()
 
Mit
Delphi-Quellcode:
ReadSection
bekommst du aber nur eine vereinfachte Darstellung der Inhalte. Um das wieder zu schreiben musst du hier eine aufwändige Prüfung machen, ob die Struktur der Daten auch wirklich passt.

Was passen könnte wäre eine Instanz von
Delphi-Quellcode:
TMemIniFile
, die könnte man dann auch wieder gefahrlos zurückschreiben (mit wenig Aufwand).

Uwe Raabe 14. Jun 2016 08:41

AW: Umkehrfunktion zu ReadSection()
 
Delphi-Quellcode:
ReadSection
gibt dir nur die Names bis zum Gleichheitszeichen, aber nicht die Values aus dem Inifile. Willst du die gesamte Zeile, nimm besser
Delphi-Quellcode:
ReadSectionValues
. Kommentare gehen dabei aber auch verloren. Nebenbei ist das in TMemInifile aber auch effizienter implementiert.

Du kannst auch nur solche Stringlisten in einem Inifile speichern, deren Zeilen nicht
  • mit einem Semikolon beginnen
  • in eckige Klammern eingeschlossen sind
  • leer sind
  • Leerzeichen um das erste Gleichheitszeichen enthalten

Bjoerk 14. Jun 2016 09:28

AW: Umkehrfunktion zu ReadSection()
 
Was du machen könntest, wäre mit WriteString Stringlist.Text speichern.Da würde ich allerdings vorher die LineBreaks durch ein anderes Zeichen ersetzen und beim Lesen wieder zurück.

Delphi-Quellcode:
const
  cLineBreak = #124;

..

  S := StringReplace(SL.Text, sLineBreak, cLineBreak, [rfReplaceAll]);
  Ini.WriteString(‘Section’, ‘Ident’, S);

..

  S := Ini.ReadString(‘Section’, ‘Ident’, ‘’);
  SL.Text := StringReplace(S, cLineBreak, sLineBreak, [rfReplaceAll]);


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