Delphi-PRAXiS
Seite 2 von 3     12 3   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Was passiert mit der INI-File beim beschreiben ? (https://www.delphipraxis.net/40954-passiert-mit-der-ini-file-beim-beschreiben.html)

Hansa 23. Feb 2005 21:34

Re: Was passiert mit der INI-File beim beschreiben ?
 
Zitat:

Zitat von roderich
@Hansa:

eine Inidatei hat mit einer .pas-Datei aber nun wirklich gar nix zu tun..... :???:

Von wegen. Das ist ja das Problem ! Es ist genau dasselbe. Nichts anderes als eine stinknormale Textdatei. Ob die .TXT .INI .PAS oder .ROD heißt ist egal. :!:

roderich 23. Feb 2005 22:53

Re: Was passiert mit der INI-File beim beschreiben ?
 
@Hansa:

No :warn:

Eine Inidatei ist nicht eine stinknormale Textdatei. Eine Inidatei ist nach einem festen Schema aufgebaut, und zwar in Sections (oder Gruppen) organisiert, deren Namen in eckigen Klammern eingefaßt sind. Innerhalb dieser Sections stehen Einträge im Format <Identifier> = <Value>. Der Zugriff erfolgt mit den Methoden von TIniFile, wobei Einträge nur mit Angabe des Sections-Namen manipuliert werden können.

Z.B.

Delphi-Quellcode:
  Inifile.WriteString(Section, Identifier, Value);

Die Datei-Extension ist allerdings wurscht, da stimm ich dir zu. Es hat sich aber .ini etabliert.


Roderich

Hansa 24. Feb 2005 00:30

Re: Was passiert mit der INI-File beim beschreiben ?
 
Zitat:

Zitat von roderich
@Hansa:

No :warn:

Nene, nix Warn ! Das ist und bleibt eine Textdatei. Ob die jetzt *.ROD heißt, oder mehrere []]}}{] usw. enthält, vielleicht auch nur ääääääää s oder xyz ist völlig egal.

jim_raynor 24. Feb 2005 07:11

Re: Was passiert mit der INI-File beim beschreiben ?
 
Zitat:

Zitat von Hansa
Zitat:

Zitat von roderich
@Hansa:

No :warn:

Nene, nix Warn ! Das ist und bleibt eine Textdatei. Ob die jetzt *.ROD heißt, oder mehrere []]}}{] usw. enthält, vielleicht auch nur ääääääää s oder xyz ist völlig egal.

Ich frage mich gerade, was das mit dem Thema zu tuen hat. Technisch gesehen sind alles, Binär-Dateien. Und Technisch ist es nicht möglich ein Byte physikalisch aus einer Datei so zu löschen, dass die anderen nachrücken. Sollen Daten gelöscht werden, muss die Datei komplett neu geschrieben werden. Aber das hat überhaupt nichts mit dem Thema zu tuen.

Diese *.~Pas dateien sind einfach nur Backupfiles die von Delphi angelegt werden.

phXql 24. Feb 2005 07:36

Re: Was passiert mit der INI-File beim beschreiben ?
 
INI-Files werden nicht gelöscht und neu geschrieben. Wers nich glauben will, darfs gerne ausprobieren. Wenn man vorher 2 sections hatte, diese läd, und dann im Inifile mit writesection nur eine am ende wieder schreibt, is die 2te trotzdem noch drin. Deswegen das INI vor dem beschreiben mit DeleteFile() löschen.

Darty 24. Feb 2005 10:27

Re: Was passiert mit der INI-File beim beschreiben ?
 
Danke Leute, nun habe ich Gewissheit weil es mich zunächst verwirrt hatte als ich es in ein Text Editor angeschaut habe. Also werde ich wohl die Ini löschen bevor ich es neu schreibe.
Oder wenn man auf der sichere Seite will das die Speicherfunktion unterbrochen wird sollte man doch lieber die Ini zunächst Temporär speichern, dieses dann die Ini überschreiben und dann die Temporäre Datei wieder löschen.

Übrigens INI ist zwar anders eingeteilt mit Section u.s.w. aber so oder so sie ist trotzdem eine Text Datei. Man könnte auch eine BlaBla.XYZ als Ini File benutzen anstatt BlaBla.Ini .

roderich 24. Feb 2005 11:37

Re: Was passiert mit der INI-File beim beschreiben ?
 
also, um das ganze leidige Thema mal abzuschließen.....

Inidateien sind (natürlich) Textdateien, genau wie *.pas, *.c, *.bat, ... und 1000 andere -> sie sind also z.B. mit einem Texteditor lesbar.
Sie sind aber nach ihrer Definition nicht "ganz normale" Textdateien, sondern in einem festen Format aufgebaut. Dieses Format sieht Gruppen (Sections) vor, innerhalb derer die Einträge (Identifier) stehen. Gruppen sind in eckigen Klammern [] eingefaßt. Einträge werden immer von einem "=" Zeichen gefolgt, nach dem der Wert (Value) steht.


Beispiel:

[System]
GUI=1
Bootlogo=Splash.bmp

[Printer]
Default=HP Deskjet


So, falls jetzt mit Inifile.WriteString('Printer', 'Default', 'Epson Stylus') der Default-Eintrag in der Printer-Gruppe geändert wird, bleibt NATÜRLICH auch die erste Gruppe "System" bestehen. Wär ja auch schlimm, wenn nicht.
Wenn mit Inifile.DeleteKey('Printer', Default') der Default-Eintrag gelöscht wird, bleibt die Gruppe "Printer" trotzdem bestehen, nur eben leer (d.h. ohne Einträge).

Eine Inidatei löschen zu müssen, bevor sie neu geschrieben wird, deutet zumindest mal auf ein "seltsames" Programmkonzept hin. Oder Inidateien werden dort nicht in ihrem eigentlichen Sinn verwendet.

Die Delphi-Hilfe zu TIniFile erklärt das Konzept übrigens auch recht gut.


Roderich

IngoD7 24. Feb 2005 11:43

Re: Was passiert mit der INI-File beim beschreiben ?
 
//EDIT: Dieses Posting hat sich mit dem von roderich zuvor überschnitten.
--------------------------------------------------------------------------

Oh man, ihr habt aber auch alles in den Thread reingeschmissen, was es zum Thema Datei gibt, wie? :shock:

Zitat:

Zitat von Darty
Also werde ich wohl die Ini löschen bevor ich es neu schreibe.

Wieso das denn? :roll:

Wenn du eine Ini als das benutzt, wofür sie da ist, was gibt es dann für Probleme? Wenn du eine Ini bearbeiten wilst, dann tue das über TIniFile. Damit stehen dir genügend Methoden zur Verfügung, die Bestandteile einer Ini (Sektionen, Schlüssel und Werte) zu lesen, zu schreiben oder zu löschen.

Diese Bestandteile einer Ini sind separat zu betrachten und zu bearbeiten. Dabei ist es völlig egal, in welchem Fileformat eine Ini auf die Platte geschrieben wird. Und ja, das Fileformat ist Textfile.
Es ist ein Textfile mit vorgegebener inhaltlicher Struktur (Sektionen, Schlüssel, Werte). Eben der Struktur einer gemeinhin als Ini bezeichneten Datei.

Wenn du die Sektion A bearbeitest, bleibt Sektion B natürlich unberührt. Das ist doch gerade der Witz an TIniFile, dass du die Bestandteile einer Ini separat bearbeiten kannst und nicht die ganze Datei lesen, bearbeiten und zurückschreiben musst.

Änderungen (schreiben, löschen) sind bei NT (und in der Familie aufwärts) sofort in die Ini-Datei auf der Platte eingepflegt. Bei Windows95 (und spätere Verwandte) wird der Plattenzugriff möglicherweise noch gepuffert. Da kann man dann aber das Schreiben auf Platte mit TIniFile.UpdateFile erzwingen.

Darty 24. Feb 2005 11:51

Re: Was passiert mit der INI-File beim beschreiben ?
 
Damit keine Missverständnisse gibt.

Ich verwende die Ini Datei (eine einzige Datei) um die Einstellungen u.s.w. im Programm zu speichern. Klar die braucht man dann nicht zu löschen u.s.w. ABER ich verwende diese Datei auch um die Daten aus einer ListView zu speichern (darüber kann man streiten da andere Möglichkeiten gibt). Und gerade wenn ich die Daten speicehre wird es in Section Data1 Data2 u.s.w. erstellt. Sobald ich aber mal 100 Data gespeichert habe. Und irgendwann dann die 50 Datas lösche dann stehen die "alten" 50 Datas immer noch drin. Also wird die Datei nur unötig aufgebläht obwohl nicht mehr benötigt wird. Deswegen das löschen.

IngoD7 24. Feb 2005 12:08

Re: Was passiert mit der INI-File beim beschreiben ?
 
Zitat:

Zitat von Darty
ABER ich verwende diese Datei auch um die Daten aus einer ListView zu speichern (darüber kann man streiten da andere Möglichkeiten gibt)

Wenn es denn so sein soll ...

Zitat:

Zitat von Darty
Sobald ich aber mal 100 Data gespeichert habe. Und irgendwann dann die 50 Datas lösche dann stehen die "alten" 50 Datas immer noch drin.

Wovon ist denn abhängig, ob du 50, 20, 76 oder alle 100 löscht? Lösche doch einfach immer dann ein Data raus, sobald du es nicht mehr brauchst.


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:30 Uhr.
Seite 2 von 3     12 3   

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf