Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Einstellungen speichern und verwalten (https://www.delphipraxis.net/56945-einstellungen-speichern-und-verwalten.html)

Lord Dave 14. Nov 2005 11:38

Re: Einstellungen speichern und verwalten
 
Was ist mit dem Userverzeichnis \ Anwendungsdaten?
Wozu ist das von Microsoft erdacht?

Aber mal um ein bißchen von dem Speichern wegzukommen, die benötigten Daten werden erst bei Bedarf eingelesen, versteh ich das richig?

Ich habe immer gerne Methoden wie saveSettings() oder loadSettings() die ich auf einzelne Forms anwende. Oft habe ich ein globales Objekt in dem ich alle Einstellungen verwalte, das ich dann einfach an die Methode übergebe und diese die benötigten Informationen ausliest.

Luckie 14. Nov 2005 11:41

Re: Einstellungen speichern und verwalten
 
Zitat:

Zitat von Lord Dave
Was ist mit dem Userverzeichnis \ Anwendungsdaten?
Wozu ist das von Microsoft erdacht?

Eine ganze Adresskartei willst du doch wohl nicht in der Registry ablegen oder? ;)

Hansa 14. Nov 2005 14:27

Re: Einstellungen speichern und verwalten
 
Microsoft Bashing ? :shock: Aber das ist ja auch was ganz anderes. :mrgreen:

Aber egal. Gehen wir mal von den Fensterkoordinaten aus :

FormShow :

Delphi-Quellcode:
  try
    FensterIni := TIniFile.Create(FensterDateiName);
    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;
Jetzt fummelt da einer an den Forms rum und schiebt sie sinnlos durch die Gegend. Deshalb muß der letzte Zustand für den nächsten Programmstart wieder verfügbar sein. Also :

FormClose :

Delphi-Quellcode:
  try
    FensterIni := TIniFile.Create(FensterDateiName); //FensterDateiName));
    FensterIni.WriteInteger(Name,'Left',Left);
    FensterIni.WriteInteger(Name,'Top',Top);
(*
    FensterIni.WriteInteger(Name,'Width',Width);
    FensterIni.WriteInteger(Name,'Height',Height);
*)
  finally
    FensterIni.Free;
  end;
Es wäre ein leichtes, da jetzt noch Voreinstellungen von Checkbooxen usw. unterzubringen. Und das Wort "Name" ist nicht zu unterschätzen ! Das´ist der Form-Name aus dem Quelltext und man braucht somit auch nur eine INI. Speichert man nun diese INI auch noch im User-Verzeichnis, dann kann jeder angemeldete Benutzer sich seinen eigenen Desktop zusammenbauen. Und ein Servicetechniker, der eventuell vor Ort was machen muß, der kann bei total verkorksten Einstellungen durch einfaches kopieren zumindest schnell wieder den Ursprungszustand wiederherstellen.

Luckie 14. Nov 2005 15:05

Re: Einstellungen speichern und verwalten
 
Und genauso gut kann man das auch mit der Registry machen. Wenn man da in HKCU schreibt, muss man sich noch nicht mal darumkümmern, dass die Benutzer getrennt verwaltet werden.

woki 14. Nov 2005 16:20

Re: Einstellungen speichern und verwalten
 
Zitat:

Zitat von himitsu
Ihr wißt aber, daß Microsoft zum Speichern von Programmspezifischen Daten das SPeichern in der Registry empfiehlt?
INIs sind offiziell am Aussterben.

Nun, das war einmal. Nachdem Microsoft neben der "DLL-Hölle" auch die Auswirkungen der "Registryhölle" verstanden hat, wird mit .NET ja alles anders, insbesondere sollte die Registry nur noch verwendet werden, wenn es um Dinge geht, die mit Konfigurationsdateien nicht gelöst werden können. Bier sind mit .Net natürlich xml-Konfigurationsdateien gemeint, aber wer zukunftssicher sein will, und sich und seinen Usern unendliche Probleme ersparen will, verwendet auch unter Win32 die Registry nur wenn es unweigerlich notwendig ist.
Unter Win32 kann man sich da natürlich mit ini Dateien behelfen, wenn xml hier unbequemer erscheint.

Grüsse
Woki

Hansa 14. Nov 2005 17:41

Re: Einstellungen speichern und verwalten
 
Zitat:

Zitat von woki
...wird mit .NET ja alles anders, insbesondere sollte die Registry nur noch verwendet werden, wenn es um Dinge geht, die mit Konfigurationsdateien nicht gelöst werden können...

Quelle (insbesondere von M$) :?: Das hat mir zwar schon vorher der gesunde Menschenverstand gesagt, aber wie man sieht wird die Registry noch liebend gern verwendet. Mir liegen Informationen vor, daß die Richtung eindeutig in Richtung XML geht (als Ersatz für INIs). Allerdings war da nie die Rede von der Registry in diesem Zusammenhang.

Und das hier ist dann auch in einem etwas anderen Licht zu sehen :

Zitat:

Mickysoft ist nicht gerade berühmt dafür, sinnvolle Ratschläge zu geben.
Was ist denn davon zu halten, wenn die Registry tatsächlich nur für Ausnahmefälle genutzt werden soll ? Alle, die Mickysoft-konform programmiert haben, tja, die haben eben die A-Karte gezogen. :mrgreen:

woki 14. Nov 2005 19:08

Re: Einstellungen speichern und verwalten
 
Zitat:

Zitat von Hansa
Zitat:

Zitat von woki
...wird mit .NET ja alles anders, insbesondere sollte die Registry nur noch verwendet werden, wenn es um Dinge geht, die mit Konfigurationsdateien nicht gelöst werden können...

Quelle (insbesondere von M$) :?: Das hat mir zwar schon vorher der gesunde Menschenverstand gesagt, aber wie man sieht wird die Registry noch liebend gern verwendet. Mir liegen Informationen vor, daß die Richtung eindeutig in Richtung XML geht (als Ersatz für INIs). Allerdings war da nie die Rede von der Registry in diesem Zusammenhang.

Die Registry sollte ja schon die Ini's ersetzen. Jetzt geht es halt zurück zu Kofigurationsdateien. Alles andere unterläuft die MS-Strategie des XCopy-Deployments. Das ergibt sich eigentlichauch ohne weitere Quellenangabe, aber z.B.

Holger Schwichtenberg:
Programmierung mit der .Net Klassenbibliothek
Addison Wesley
s. 453:

Sie sollten also nur dann auf die Registry zugreifen, wenn sie sicher sind, dass dieser Zugriff auch wirklich nötig ist ...
Andernfalls benutzen sie die XML- Konfigurationsdateien ihere Applikation, in denen Sie relevante Werte ablegen können.


Zitat:

Zitat von Hansa
Und das hier ist dann auch in einem etwas anderen Licht zu sehen :

Zitat:

Mickysoft ist nicht gerade berühmt dafür, sinnvolle Ratschläge zu geben.
Was ist denn davon zu halten, wenn die Registry tatsächlich nur für Ausnahmefälle genutzt werden soll ? Alle, die Mickysoft-konform programmiert haben, tja, die haben eben die A-Karte gezogen. :mrgreen:

Na ja, das war halt die Meinung von MS vor einigen Jahren, und bezogen auf Win32. Mit .Net ändert sich hier halt einiges, und deshalb ist es dann meine Meinung, dass man auch unter Win32 jetzt mit der Registry nicht mehr mehr machen sollte, als man dann unter .Net damit tun wird, nämlich nur das was unbedingt nötig ist. Das veinfacht den Übergang. Außerdem, wennn denn einfach jetzt endlich klar ist, dass die Registry in dieser Form ein Fehler war....

Grüsse
Woki

Hansa 14. Nov 2005 19:44

Re: Einstellungen speichern und verwalten
 
Wirklich sehr schön. :-D Sogar M$ ist endlich auf den Trichter gekommen mit der Schrott-Registry. Aber seeeehr spät. Wer sich an deren "Richtlinien" gehalten hat, der ist in Zukunft eben der Dumme. *duck* Wer D2005 hat, der soll mal nach XML suchen und sich nicht wundern, was er da in den Borland-Verzeichnissen findet. Der Weg scheint also wieder zurück zu Textdateien zu gehen. Mit jedem Text-Editor lassen die sich bearbeiten. :thumb: Für mein Beispiel mit den Fensterkoordinaten macht es allerdings keinen Sinn, dafür XML einzusetzen. Da reichen INIs völlig aus. Falls das doch nicht reicht, dann würde ich auch auf XML umstellen, zumindest bevor in wichtigem Programm irgendwo das Wort "TRegistry" auftaucht.

Es fehlt allerdings noch eine Variante, um Einstellungen zu speichern : in einer Datenbank. Man kann auch mit der Datenbank (eventuell sogar leerer) gleich einen voreingestellten "Desktop" mitliefern. Wegen der leichten Editierbarkeit von INI/XML bevorzuge ich aber eher das.

Luckie 14. Nov 2005 19:47

Re: Einstellungen speichern und verwalten
 
Das
Zitat:

<?xml version="1.0" encoding="ISO-8859-1"?>
<adressdb><XMLFile><MajorVersion>1</MajorVersion><MinorVersion>226</MinorVersion><Computer>HAL9000</Computer><User>Michael</User>
<ModifyDate>2005-10-29</ModifyDate><ModifyTime>07:05:18</ModifyTime><RecordCount>44</RecordCount><HighestID>44</HighestID></XMLFile>
<Kontakt><ID>1</ID><Name>Alt</Name><Vorname>Stephan</Vorname><Strasse>Ellerhofer Straße 11</Strasse><PLZ>34121</PLZ><Ort>Kassel</Ort>
<Land>Deutschland</Land><Telefon1>(0561)2860736</Telefon1><Telefon2>01603052660</Telefon2><Fax></Fax><EMail1>stephan.alt@gmx.net</EMail1>
<EMail2></EMail2><URL></URL><GebDat></GebDat><Firma></Firma><Position></Position><Bem></Bem><InBericht>0</InBericht></Kontakt><Kontakt>
<ID>2</ID><Name>Kollatz</Name><Vorname>Angie</Vorname><Strasse>Philosophenweg 49</Strasse><PLZ></PLZ><Ort>Kassel</Ort><Land></Land>
<Telefon1></Telefon1><Telefon2>0176 24524122</Telefon2><Fax></Fax><EMail1></EMail1><EMail2></EMail2><URL></URL><GebDat></GebDat><Firma>
</Firma><Position></Position><Bem></Bem><InBericht>0</InBericht>
(Die Zeilenumbrüche habe ich schon eingefügt, damit es nicht den Thread zerschießt.)
ist ein Ausschnitt aus einer XML datei die von einem programm angelegt wurde. Also unter einfach mit dem Editor bearbeiten verstehe ich as anderes.

Daniel Schuhmann 14. Nov 2005 19:57

Re: Einstellungen speichern und verwalten
 
Könntest Du bitte noch ein paar Umbrüche einfügen, damit der Thread auf mit 1280 noch auf den Bildschirm paßt? :lol:

Ordentlich formatiert, dazu mit einem Editor, der Syntax-Highlighting beherrscht, lässt es sich schon deutlich besser lesen. Ist bei HTML genau das selbe, das kann man häßlich schreiben (oder von Wysiwyg-Editoren schreiben lassen), oder man strukturiert es ordentlich und kann es auch lesen. Auch bei Delphi-Quelltexten ist es das selbe ;)
XML ist halt bei verschachtelten Datenformaten im Vorteil, das kann eine Ini nicht. Und so ein Format ist mir tausendmal lieber, als eine binäre Datei. Die eierlegende Wollmilchsau ist XML natürlich nicht, und für das Speichern von drei Häkchen im Programm würd ich schon lieber ne Ini oder die Registry vorziehen.

Daniel


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:09 Uhr.
Seite 2 von 4     12 34      

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