INI-File , wohin ?

Hallo,

möchte mal Meinungen zu folgendem Thema einholen.
Ein Student mach gerade ein kleines Programm zur Visualisierung
von Meßdaten.
Nun möchte ich, daß aktuelle Parameter/Einstellungen in einer
INI-Datei gespeichert werden.

Wo und wie sollte das aber erfolgen?

Infos dazu:

  • Das Programm wird mit Delphi erstellt.
  • Installtion ist nicht vorgesehen (nur EXE starten und gut is’ses)
  • Lauffähig unter allen Windowsversionen ab Win98.
  • Nutzer sind auch Mitarbeiter von Firmen

Ich würde das INI-File einfach ins Programmverzeichnis schreiben.
Das wird aber natürlich Probleme machen, wenn das Programm von
einem ADMIN in einen Schreibgeschützten Verzeichnis gestellt wird.

Ein Kollege meint, alle Einstellungen müßten in die Registery,
weil das der einzige Ort ist, der immer zugänglich ist.

Mir gefällt das mit dem Registery-Dinosaurier nicht.

Alternativ könnte man unter „Dokumente und Einstellungen“ speichern,
aber das gibt’s ja nicht in älteren WIN-Versionen.
Oder der der Nutzer müßte einen Pfad eingeben (nicht sehr
komfortabel und nicht DAU-sicher).

Hat jemand noch eine andere Idee und was ist heute zeitgemäß?

Gruß Uwi

Hallihallo

INI-Dateien werden üblicherweise im Windows-Verzeichnis gespeichert. Wo dieses ist bzw. wie es heißt, müsste in allen Windows-Versionen in der Umgebungsvariable „windir“ stehen.

Statt in eine INI-Datei das Zeug in die Registry zu schreiben, ist zwar die „modernere“ Variante, aber dafür ein bisschen umständlicher zu handhaben.

Zum Thema „zeitgemäß“:
Z.B. VisualStudio.net verwendet für so etwas XML-Dateien, die vom Visual Studio selbständig verwaltet werden.
Ich hab keine Ahnung, was mit Delphi möglich ist, aber ich würde die einfachste Variante nehmen.

MfG
Roland

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

möchte mal Meinungen zu folgendem Thema einholen.
Ein Student mach gerade ein kleines Programm zur
Visualisierung
von Meßdaten.
Nun möchte ich, daß aktuelle Parameter/Einstellungen in einer
INI-Datei gespeichert werden.

Hallo,

im folgenden ein Auszug aus der Beschreibung meiner Version davon - ist für RK-Software Standard und alles in einer Unit implementiert.

Gruss Reinhard

ZITAT:
Die Konfigurationsdaten für Programme der Fa. RK elektronik GmbH werden nach folgenden Prinzipien verwaltet. Registry-Einträge werden dafür i.a. nicht verwendet.
Dateiname:
Grundsätzlich hat die INI-Datei den gleichen Dateinamen wie das betreffende Programm, nur mit der Erweiterung .INI statt .EXE. Mit einigen der weiter unten beschriebenen Optionen kann auch ein anderer Dateiname vereinbart werden. Die Struktur bleibt immer die einer Windows-INI-Datei, auch wenn als Dateierweiterung .TXT, .CFG o.ä. angegeben wird.
Pfad:
Die INI-Datei wird beim Programmstart an folgenden Stellen im Dateisystem gesucht:

  1. Angabe durch Kommandozeilen-Parameter /ini=Pfad[\Datei]. Es kann der Pfad angegeben werden (Datei = Programm.INI) oder ein ganzer Pfad mit Dateiname. Dies erlaubt, das Programm mit verschiedenen Parametersätzen aufzurufen.
  2. Befindet sich im Home-Verzeichnis eine gültige INI-Datei, so wird diese verwendet. Home wird (unter Windows) durch die Environment-Variablen %HOMEDRIVE und %HOMEPATH definiert und zeigt standardmässig auf „Eigene Dateien“, kann aber vom Netzwerk-Admin auf einen Server verlegt werden; ebenso verfügen Unix-Server normalerweise über ein persönliches Home-Verzeichnis für den angemeldeten Benutzer, dann ist zu prüfen, ob dieses auch korrekt in %HOMEDRIVE und %HOMEPATH eingetragen ist. Achtung bei älteren Windowsversionen, dort ist Home einfach auf C:\ gesetzt.
  3. Treffen 1 und 2 nicht zu, so wird eine INI-Datei im gleichen Verzeichnis wie das Programm selbst verwendet und notfalls neu angelegt. Dies ist der Normalfall.
  4. Befindet sich in einer vorhandenen Datei im Abschnitt [General] der Eintrag UseHomeDir=ON, so wird eine INI-Datei im Home-Verzeichnis notfalls neu angelegt; dabei kann der Pfad in %HOMEDRIVE, %HOMEPATH durch die Angabe UseHomePath= … überschrieben werden – dies definiert praktisch ein spezielles Home-Verzeichnis für das Programm. Alle anderen Einträge ausser UseHome… werden dann in der dadurch definierten Home-INI-Datei verwaltet.
    Allgemeingültige Parameter:
    Alle Programme verwenden folgende Parameter im Abschnitt [General]:
  5. SavePos=ON (oder OFF) gibt an, ob die Position des Fensters am Bildschirm gespeichert werden soll (d.h. das Programm taucht beim Start immer dort auf, wo es zuletzt positioniert war). Andernfalls ist die Position des Programms immer die gleiche, siehe 2.
  6. StartX, StartY geben die Position des Programmfensters beim Start an, ist das Fenster in der Grösse veränderlich, so werden noch StartW und StartH für Breite(Width) und Höhe benutzt.
  7. UseHomeDir und UseHomePath siehe oben.
  8. DataPath= definiert den Zugriff auf die vom Programm verwalteten Daten. Der Zugriffspfad kann durch den Kommandozeilen-Parameter /datapath= überschrieben werden, z.B. um auf die Daten verschiedener Firmen zuzugreifen.
  9. PublicIni= definiert den Zugriff auf allgemeingültige Konfigurationsdaten, siehe nächster Abschnitt. Es kann dazu ein Verzeichnis angegeben werden oder ein ganzer Pfad mit Dateiname. Ein Kommandozeilen-Parameter /publicini= hat Vorrang vor dem Eintrag in einer INI-Datei. Sinnvoll ist nur ein Pfad oder eine Datei, die auf einem Server für alle Benutzer zugänglich ist.
    Local und Public:
    Die Daten in einer lokalen INI-Datei gelten je nach Speicherort für einen bestimmten Benutzer oder auf einem bestimmten Rechner. Daten in der extra zu definierenden Public-INI-Datei sind dagegen für alle Benutzer einer Software gedacht, z.B. um mit gleichen Einträgen für Formatierung, Schriftart usw. ein einheitliches Aussehen von Rechnungen und anderen Formularen zu erreichen bzw. allgemein eine „Corporate Identity“ sicherzustellen. Einstellungen aus der Public-Datei werden nur verwendet, wenn kein entsprechender Eintrag in der lokalen Datei existiert.
    Alle Einstellungen, die ein Benutzer macht, werden in seiner lokalen INI-Datei gespeichert, die Einträge in der Public-INI-Datei sollten nur von einem Administrator verändert werden. Empfohlen wird, an einem Arbeitsplatz eine Konfiguration mit allen gewünschten Eigenschaften zu erstellen und an eine für alle zugängliche Stelle auf einem Server zu kopieren. Zur weiteren Pflege kann ein Texteditor benutzt werden unter Beachtung der zu jedem Programm mitgelieferten Dokumentation der Parameter (siehe Hilfe-Datei), oder es wird ein „Master“-Account eingerichtet, von dessen lokaler Datei dann kopiert werden kann.
    Stand: Juni 2006

Moinsen!

Und wieso wird keine Datenbank verwendet? Ich meine was spricht dagegen? Hab das mal in C# gemacht da war das die beste und auch effektivste lösung für mich. Ausserdem kann man so auch Daten besser handhaben-finde ich(vor allem was Zugriff angeht, auch für Leute die diese nur mal „ansehen“ möchten).

Gruß

nmerkung: Wobei natürlich mit xml auch eine sehr feine Sache ist. Mit Delphi habe ich das zwar noch nicht gemacht dürfte aber heutzutage auch kein prob sein.

Gruß

Hallo,

Nun möchte ich, daß aktuelle Parameter/Einstellungen in einer
INI-Datei gespeichert werden.

wo eine Windows-Anwendung Benutzer- und Anwendungsdaten speichern darf und soll ist im Punkt 3.2 der „Designed for Windows XP Application Specification“ (http://www.microsoft.com/downloads/details.aspx?Fami…) beschrieben. Der empfohlene Ort hängt von der Art der Daten ab.


Philipp

Hallo Uwi,

möchte mal Meinungen zu folgendem Thema einholen.
Ein Student mach gerade ein kleines Programm zur
Visualisierung
von Meßdaten.
Nun möchte ich, daß aktuelle Parameter/Einstellungen in einer
INI-Datei gespeichert werden.

Wo und wie sollte das aber erfolgen?

Nach

 getenv("WINDIR")

bzw.

 echo %WINDIR%

Alles andere kann man schon machen, wenn es benötigt
wird, aber im geschilderten Falle bringt das imho nicht
viel.

Spart Euch eine Menge Aufwand und Stress …

Grüße

CMБ

Hallo Uwi,

möchte mal Meinungen zu folgendem Thema einholen.
Ein Student mach gerade ein kleines Programm zur
Visualisierung
von Meßdaten.
Nun möchte ich, daß aktuelle Parameter/Einstellungen in einer
INI-Datei gespeichert werden.

Wo und wie sollte das aber erfolgen?

WAS, also welche Informationen, sollen da abgespeichert werden?

Möglicherweise macht es auch Sinn die Daten aufzuteilen.
Grundeinstellungen für das Programm
und Einstelleungen für die Auswerten oder was das Programm so macht.

Die Daten für die Auswerten könnte man dann unter einem einzugebenden Namen abspeichern und laden.

DIe Daten welche das Programm selber betreffen kommen dann in die Registry.

Ich würde das INI-File einfach ins Programmverzeichnis
schreiben.
Das wird aber natürlich Probleme machen, wenn das Programm von
einem ADMIN in einen Schreibgeschützten Verzeichnis gestellt
wird.

Nicht nur dann !
Auch wenn es auf einem Server liegt und von dort direkt gestartet wird. Schon die Dateipfade sind dann für jeden Client unterschiedlich.

Ein Kollege meint, alle Einstellungen müßten in die Registery,
weil das der einzige Ort ist, der immer zugänglich ist.

Das war die Idee von MS. Mit WIn95 sollten eigentlich alle .INI-Dateien, welche unter Win3.x bestanden, zentral in der Registry verwaltet werden…

Das mit der Zugänglichkeit stimmt unter der NT-Familie nicht mehr. Man kann jedem Benutzer die Zugriffsrechte, genau wie bei Dateien, auf die Registry zuweisen.

Alternativ könnte man unter „Dokumente und Einstellungen“
speichern,
aber das gibt’s ja nicht in älteren WIN-Versionen.
Oder der der Nutzer müßte einen Pfad eingeben (nicht sehr
komfortabel und nicht DAU-sicher).

Die Registry ist auch in unterschiedliche Bereiche aufgeteilt.
HK_CurrentUser entspricht „Eigenen Dateien“
HK_LocalMachine ist global.

MfG Peter(TOO)

Hi,

Und wieso wird keine Datenbank verwendet? Ich meine was
spricht dagegen?

  1. um ein paar Byte abzuspeichern installiert man nicht eine DB (das ist das mit den das mit Kanonen und den Spatzen)

  2. ein Filesystem habe ich immer wenn die Software läuft - eine lauffähige und konfigurierte DB eher selten

Gruss
q

Hallo,

und deine Software läuft, ganz egal, ob MS Access, MS SQL-Server, MySQL, Oracle oder IBM DB2 installiert ist? Wirklich erstaunlich, ich habe als Admin eher Probleme damit, dass jedes Programm eine ganz bestimmte DB fordert und nachher 5 verschiedene laufen - oder besser gesagt, nicht laufen, weil so ein Chaos unverantwortlich ist.

Gruss Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Danke für die Hinweise! o.w.T.

Gruß Uwi

Ja also ich musste nix weiter drauf haben. In C# war das mit der ganzen Programmierung auch fast nen Witz weil es recht schön über die SQL Befehle alles ging…aber C# macht ja eh alles zum Kinderspiel…

Gut die einstellungen hätte ich in ne XML gemacht. nur evtl DB falls man nochmal die Einstellungen zu den gewünschten Messdaten holen kan. Das ganze dann über relative Pfadangaben damits auch portabel ist. zu der sache mit den admin… glaub ganz lösen wirst du das problem wohl nie zu 100% weil´s an irgendner Ecke immer hapern wird… aber ich würde die Einstellungen in nen Ordner nahe der exe packen und hoffen das keiner dei rechte zum schreiben nimmt… wenn nicht einfach admin um schreibzugriff bitten:wink:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]