![]() |
INI, Registry, ThaXML-Library was ist sinnvoll
Hallo,
ich möchte bestimmte Daten von einer Anwendung z.B. die letzte Fensterposition speichern. Bisher habe ich das über INI – Dateien realisiert. Das soll aber nicht mehr Zeitgemäß sein. Was ist besser euer Meinung nach, dass über die Registerdatenbank, INI – Dateien oder einer ThaXML-Library Konfigurationsdatei zu programmieren. Bis bald Chemiker |
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Ich weiß gar nicht, was alle immer gegen Inis haben. Du solltest nur auf den Speicherort achten, also nicht ins Programmverzeichnis, sondern ins aktuelle Benutzerprofil. Alternativ kannst Du auch in der Registry unter HKCU speichern.
|
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Es kommt darauf an, ob die Werte userabhängig sind oder nicht.
|
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Naja, bei letzter Fensterposition usw. denke ich schon an benutzerdefinierte Daten.
|
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Ich würde Ini-Dateien wählen, da sie keine Baumstruktur erfordern und man für die Registry wieder einen Deinstaller mitliefern müsste.
|
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Zitat:
...:cat:... |
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Und wieso ThaXML? Es gibt auch genug alternativen. Meine ist aus dem o.g. Grund zur Konfigurationsablage entstanden. Und damals brauchte ich XML, da ich dynamisch viele Objekte mit gleichen Eigenschaften speichern musste und das geht nicht ohne Hierarchie in den Konfigurationsdateien.
|
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Hallo,
es ist schon nicht einfach. @Muetze1: In Delphi – Treff gibt es ein Tut. über ThaXML da wird postuliert, dass es vorteilhaft wäre es statt Registry oder INI zu verwenden. @sakura, Luckie: Man sollte schon hinter sich wieder alles aufräumen. Aber ich denke das ist bei der Registry und bei INI notwendig. @DeddyH, mkinzler: Ich muss zugeben das ich die INI – Dateien immer im Programmverzeichnis mit abgelegt habe. Das hat auch Vor- und Nachteile, eine Arbeitskollege ist mal auf die „geniale“ Idee gekommen das Verzeichnis ‚Eigene Dateien’ von c:\ nach d:\ zu verschieben und hatte dann anschließend erhebliche Probleme. Also wenn ich ein Fazit ziehen soll, so würde ich sagen dass ich weiter auf INI – Dateien setzen kann. Ich habe auch etwas bedenken in der Registry rumzufummeln. Weil sich ein Fehler dabei, doch sehr unangenehm auswirken kann. Bis bald Chemiker |
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Zitat:
C:\Dokumente und Einstellungen\%user%\Anwendungsdaten\ oder im "ALL User Verzeichnis" - Anwendungsdaten. |
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Hallo bigg,
du hast Recht, habe ich Verwechselt. Habe jetzt schon den ganzen Tag gesucht und gelesen, Benutzerrecht bla bla, Vista bla bla usw., werde mal eine Pause einlegen. Bis bald Chemiker |
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Zitat:
![]() |
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Wer ist Raymond Chen ? :shock: Egal, ich sehe das jedenfalls anders als der. :mrgreen: Soll etwas deinstalliert werden, dann muss auch alles weg, was VOR der Installation noch nicht da war. Wozu soll man da irgendwelchen Müll zurücklassen, den keiner mehr braucht ? Selbst wenn jemand was temporär deinstalliert, um es wieder neu zu installieren, seine Fenster wild verschoben hat und diese genauso wiederfinden möchte, dann soll er sich die INI in der das steht vorher sichern, deinstallieren/installieren und die gesicherte INI zurückkopieren und fertig. Jetzt kommen die M$-"Richtlinien" ins Spiel. Wo sollte die INI hin ? Bei mir liegt die genau in dem Odner, wo auch das Programm ist. Und das ist normalerweise einfach ein Verzeichnis. Erkläre mir mal einer, worin der Vorteil besteht, das Ganze in einem Ordner mit ellenlangem Namen zu speichern, den später eventuell keiner mehr findet. Von der Registry ganz zu schweigen. Anders siehts aus, sofern die Einstellungen Windows-benutzerdefiniert gespeichert werden sollen. Sollte dazu mal ein Bedarf entstehen, dann hätte ich immer noch eine INI beim Programm und in der wäre ein Bool-Eintrag, ob benutzerdefiniert gespeichert werden soll, oder nicht. Im ersten Fall würde ich dann im Benutzerverzeichnis speichern, im zweiten eben nicht. Ich brauche so keinen Deinstaller, weil zur Deinstallation einfach nur ein Ordner gelöscht werden muss.
Also : erkläre mir endlich mal einer den Sinn solcher Mickysoft-Vorgaben. Bei > 50 User siehts allerdings anders aus. Oder in sicherheitsrelevanten Bereichen. Aber auch da ist das Windows-Rechtesystem eher lächerlich und wird sowieso nicht richtig verwendet. Siehe Liechtenstein. :mrgreen: |
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Zitat:
|
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Eben, es ist IMHO viel zu kompliziert, um praxisnah eingesetzt werden zu können. Warum soll man sich an solch praxisferne "Richtlinien" denn überhaupt halten. Z.B. beim Delphi-Styleguide ist das ganz anders. Da sind die Vorteile ganz klar zu erkennen und mit etwas Disziplin (oder auch Hilfsmitteln wie GExperts etc.) auch gut umzusetzen. Der Chemiker soll jedenfalls besser bei seinen INIs bleiben. Schließlich kann man die auch schnell mal editieren. Ich sehe darin einen Vorteil und keinen sicherheitskritischen Nachteil.
|
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Hallo Luckie,
ich sehe das genauso wie sakura und Hansa, wenn das Programm deinstalliert wird sollte auch alles aufgeräumt werden. Also ich kann Raymond Chen auch nicht beipflichten. Also ich habe es noch nie erlebt, dass ich ein Programm deinstalliert habe, dass ich anschließend noch Daten von diesem Programm brauche die irgendwo in der Regitry oder als INI – Dateien im USER – Verzeichnis nicht mit deinstalliert wurden. Im Gegenteil, es ärgert mich wenn meine Festplatte mit irgendwelchen Müll vollgestopft wird, ich vermute Dir geht es genauso. Zitat:
Unter XP – Pro ist dies natürlich möglich. Bis bald Chemiker |
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Chemiker, das Schlimme ist, es geht mit der Registry noch schlimmer. :mrgreen: Das Tha-XML Dingens kenne ich nicht, sieht allerdings wegen XML schon komplizierter aus als eine INI. Ein End-User hat durch XML keinerlei Vorteile, sofern aber sogar die Registry wegen Fensterpositionen etc. verwendet wird, hat er sogar Nachteile zu befürchten. Siehe die Ratschläge von Microsoft. Ja, wie Herr Chen empfiehlt, die Registry ruhig zuzumüllen. 8) Oder sowas :
habe mal bei mir geguckt in dem von Microsoft empfohlenen Verzeichnis. Wo steht da was ? Z.B. das hier : C:\Dokumente und Einstellungen\User3\Anwendungsdaten\Free Download Manager\Update Unter Vista sieht es zudem noch völlig anders aus. MS hat also für gewaltige Planungsunsicherheit gesorgt. Der User wird genötigt, vom Arbeitsplatz aus, mindestens 5 Schritte zu machen, um irgendeine Datei zu finden. Zuerst muss er das Laufwerk wissen und auswählen und dann noch 4 mal in ein Unterverzeichnis wechseln, um da dann endlich die richtige Datei suchen zu dürfen. Wenn solcher Schwachsinn auch noch propagiert wird, dann gute Nacht. Weitere Konsequenzen : wie soll man mit Registry, User-Verzeichnis usw. eine lauffähige CD-Demo-Version herstellen ? :shock: Eingriffe ins System (Registry, Abspeichern von Dateien an nicht klar definierten Orten usw.) ? Da spielen sogar DAUs wegen schlechter Erfahrungen mittlerweile nicht mehr mit. Die installieren im Zweifelsfall einfach nichts mehr ! |
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Hallo Hansa,
Unter: ![]() ich habe das Tut. nur gelesen, kann also keine Aussage über die Qualität dieser Methode abgeben. Bis bald Chemiker |
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Nene, damit lockt mich keiner hinter dem Ofen hervor. :mrgreen: Klar, dass die INIs "nur" eindimensional sind. Aber ich brauche doch keine Baumstruktur, um irgendwelche Fensterkoordinaten zu speichern, oder feste Werte. Um dann noch dafür zu sorgen, dass wirklich alles bei Deinstallation weg ist ? Nochmals : wo liegt der Vorteil ? Wann / Wo / Wofür ist es nötig, tatsächlich für einzelne Benutzer separate Einstellungen zu speichern ? Wie gesagt, ist das notwendig, dann lasse ich mir ja noch ein benutzereigenes User-Verzeichnis gefallen. So etwa kann schon Sinn machen. Die Registry niemals ! Und XML ist für den Zweck IMHO auch überdimensioniert.
Wie hat sich negaH letzens geäüßert ? Er sei verknöchert oder wie ? :lol: Tja, vielleicht trifft das auf mich ja auch zu. Ich lasse die INI selber werkeln (zumindest für Fensterkoordinaten usw.).
Delphi-Quellcode:
Ausgeliefert wird das Programm mit einer Standardoberfläche. Werden an den Fensterkoordinaten Änderungen vorgenommen durch verschieben etc., dann werden sie direkt beim Schließen des Formulars gespeichert. Ab dann gelten diese. Und beim erneuten Öffnen eben neu ausgelesen. An der INI-Datei selber wird nichts geändert, die eventuellen Änderungen verwaltet sie selber. Hat sich jemand total verhauen, dann wird sie eben gelöscht und der fängt neu an. Man hätte allerdings immer noch den Ausweg, das einfach zu editieren. Wo die Datei liegt ist dem Programm dabei egal (kann auch User-Verzeichnis sein). Sofern tatsächlich jede Koordinate jedes Buttons/Labels usw. gespeichert werden müsste, dann wäre eine XML wohl doch etwas übersichtlicher. Eventuell könnte man allerdings auch verschiedene INIs zu Unterscheidung verwenden. Aber so etwas würde auch den Support quasi vernichten. Wie soll man denn dann jemand erklären, dass er mal sagen soll, was die Original-CheckBox rechts unten, die mittlerweile mitten im Form, steht anzeigt ? :shock: Betrachtet die User einfach als Kinder, die erst dann hören, wenn sie sich die Finger verbrannt haben. :mrgreen:
procedure Tfrm.FormShow(Sender: TObject);
var FensterIni : TIniFile; begin inherited; FensterIni := TIniFile.Create(FensterDateiName); try Left := FensterIni.ReadInteger(Name,'Left',Left); Top := FensterIni.ReadInteger(Name,'Top',Top); Width := FensterIni.ReadInteger(Name,'Width',Width); Height := FensterIni.ReadInteger(Name,'Height',Height); finally FensterIni.Free; end; end; procedure Tfrm.FormClose(Sender: TObject; var Action: TCloseAction); var FensterIni : TIniFile; begin inherited; if not CDStart then begin FensterIni := TIniFile.Create(FensterDateiName); try FensterIni.WriteInteger(Name,'Left',Left); FensterIni.WriteInteger(Name,'Top',Top); FensterIni.WriteInteger(Name,'Width',Width); FensterIni.WriteInteger(Name,'Height',Height); finally FensterIni.Free; end; end; Action := caFree; end; |
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Zitat:
|
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Wieso soll da was zurückspringen ? :shock: Das caFree im OnClose sagt fast alles. Nämlich, dass die Forms nach dem Close weg sind. Vorher werden noch die dann aktuellen Koordinaten gespeichert. Sie werden zur Laufzeit erzeugt und angezeigt. Vorher guckt sie eben im OnShow zuerst noch in INI nach, wo sie zuletzt auf dem Bildschirm zu finden war. Sie kann also unmöglich wild in der Gegend rumspringen. :mrgreen:
|
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Zitat:
|
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Zitat:
Zitat:
Es ist guter Programmierstil es nicht im Programmverzeichnis zu schreiben, uns sehr guter Stil, wenn man es den Benutzter überlässt. Und der Vorteil? Zum einem das die Datei Benutzerspezifisch ist und zum anderen und das ist viel wichtiger: Als normaler Windowsuser also nicht Admin, hat man, besonders bei installierten Programmen, unter Umständen keine schreibrechte auf den Ordner? Sollte das Programm aber Schreibrechte benötigen wird es nicht benutzt. Besonders seit Vista wird glücklicherweise mehr zwischen User und Admin unterschieden. Die einzigen Programme, die weiterhin benutzt werden obwohl sie das nicht (zu 100%) unterstützen sind Turbo Delphi (MainMenu-Editor) und SWAT 4. Ansonsten kenne ich keine Programme, die nicht wieder runtergeflogen sind. Den Nachteil den du Anführst wird nichtig, wenn du die Entscheidung hast. Als Standardbenutzter (also schön mit allen möglichen Rechten) gönnst du dir dann das speichern im Programmordner. Diejenigen die von sich aus die Chance wahrnehmen und sie die Adminrechte entziehen, können dass dann weiterhin verwenden. Und ansonsten gäbe es auch andere Möglichkeiten (ich habe z.B. A.D.C. programmiert) Benutzerspezifische Daten zu löschen. Back to Topic: Wenn du nur einfache eindimensionale Strukturen hast, sollte INI reichen. Ansonsten würde ich XML verwenden. Also wenn du sowas speicherst:
Da ich nun gerne programmiere habe ich, um Schreibarbeit bei XML zu sparen, so etwas auf der Basis von INI gemacht. Zum Beispiel hast du ein Adressbuch. Ich würde dann folgendermaßen das machen: Zitat:
MfG xZise |
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Liste der Anhänge anzeigen (Anzahl: 1)
@Luckie ; was zum Teufel springt denn da rum ? :shock: Siehe Anhang. Der Ini-Code von weiter oben steckt da drin.
|
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Zitat:
|
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Tja, da sieht mans. :zwinker: Halte dich gefälligst an die MS-Regeln. :mrgreen:
|
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Ich denke eher du solltest dich an die MS Regeln halten. Desweiteren hab eich im Dowloadverzeichnis Schreibrechte und an welche Regeln halte ich mich da nicht?
|
Re: INI, Registry, ThaXML-Library was ist sinnvoll
BOAR was is'n das fürn Stil xD
Programme die man mit'm Taskmgr abschießen muss :shock: MfG xZise |
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Vorab : Das hier soll kein MS-Bashing werden ! Muss das mal klarstellen, weil das eventuell so aussieht. Zumindest von meiner Seite aus ist M$ eher zweitrangig. Aber die sollen praktikable Lösungen anbieten und nicht irgendwelche theoretischen Vorschriften ! Das würde ich auch Bill Gates so sagen.
Mir ist abweichend von der Hauptfrage aber noch folgendes aufgefallen : die EXE im Anhang oben geht schon so. Da springt nichts. Allerdings kommt tatsächlich der von Luckie gemeldete Fehler. Da fehlen offensichtlich Schreibrechte. Ich wollte der Sache deshalb jetzt mal etwas auf den Grund gehen. Also : Admin legt User "Test" neu an (beim Admin geht sowieso alles) -> die EXE wird in %homepath% kopiert (die von User "Test"). Admin meldet sich ab und User Test wird neu angemeldet. Hat aber ansch. auch keine Schreibrechte (Fehler bleibt wie gehabt). Zumindest dieselbe Fehlermeldung. Abhilfe wäre jetzt das, was fast jeder sowieso macht : User=Admin. Wozu dann aber überhaupt Rechte/User ? Dann habe ich mir die Rechte des Users "Test" angesehen und stelle fest : es gibt nur Admins und User mit beschränkten Rechten zur Auswahl (XPpro SP2). Das war doch früher anders oder nicht ? :shock: Habe in Benutzerkonten, Freigaben, Verwaltung usw. nichts gefunden. Wo vergebe ich denn jetzt Rechte für genau benannte Verzeichnisse ? Ich muss doch dem User "Test" ein Verzeichnis zuordnen können, wo er was abspeichern kann. Zu guter Letzt noch das hier : Zitat:
Und das : Zitat:
|
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Zitat:
Zitat:
Zitat:
|
Re: INI, Registry, ThaXML-Library was ist sinnvoll
@hansa: Und wo will dein Programm die Ini-Datei abspeichern? Im Programmverzeichnis wohl nicht, denn da habe ich Schreibrechte, da es in diesem Fall das Downloadverzeichnis war.
|
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Ich habe es unter Ubuntu mit Wine mal ausgeführt, und ich habe dann wie verrückt gesucht (nagut ... es sind ja nicht so viele Dateien, aber gesucht habe ich schon): Zuerst unter "C:\": Nichts Dann Dok. und Einst.: Auch nichts Und dann auf "C:\Programme": Auch nichts Und dann blieb nur ein Ordner übrig: "C:\Windows" und was sehe ich da: "FENSTER.INI" Ich habe mal ein Screen angehangen. Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
-> Quellcode ==> Negativ ==> Bedingung nicht erfüllt MfG xZise |
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Hallo,
@Luckie: Im Forum der Delphi-Treff wird einem Tut. über INI – Dateien auch Form.Show angegeben siehe: ![]() @Hansa: Ich habe mich seinerzeit an das Beispiel in der Delphi – Hilfe orientiert. In diesem Beispiel wurden die INI – Datei in Form.Create aufgerufen. Rein gefühlsmäßig finde ich diese Variante auch charmanter. Ob das Fenster beim Neuzeichnen die INI – Datei wieder ausliest werde ich mal testen. @zZise: Es geht Hansa darum die Datei zu finden und dann kann er schon ziemlich lang werden, keine Frage. @mkinzler: Das funktioniert aber nicht mit XP – Home. Wie es bei Vista geregelt ist, kann ich nicht sagen, da ich kein Rechner mit Vista besitze. @Hansa, @zZise: Bitte keine persönliche Animositäten, das bringt hier keinen weiter. Meinungen vertreten ist o.k.. Vielleicht könnte man die ganze Informationen mal in ein Tut. einarbeiten und die Vor- und Nachteile ausarbeiten. Ich könnte mir vorstellen, dass das für andere Forum – Besucher ganz informativ wäre. Bis bald Chemiker |
Re: INI, Registry, ThaXML-Library was ist sinnvoll
|
Re: INI, Registry, ThaXML-Library was ist sinnvoll
Zitat:
Abgesehen davon, dass es dann auch professioneller wirkt :) Ganz einfach wäre das:
Delphi-Quellcode:
So gravierend länger wird es nicht ;)
APath := GetEnvironmentVariable('appdata') + '\MEINORDNER';
APath := ExtractFilePath(ParamStr(0)) + 'MEINORDNER'; Mit Luckies "GetShellFolder" (so hieß die doch?) kannst du sogar noch ein paar Zeichen raushauen ;) ich würde an deiner Stelle einfach das folgendermaßen machen:
MfG xZise |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz