Einzelnen Beitrag anzeigen

Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#1

Benötigte Informationen für eine Anwendung speichern

  Alt 28. Mai 2009, 09:40
Moin Moin liebe DPler

Ich stehe vor dem Problem, dass ich Informationen benötige um meine Datenbank zu initialisieren aber nicht weiß wohin ich die Informationen speichern soll beziehungsweise welche Methode dafür zu nutzen.

Meine Anwendung speichert Anwenderinformationen in einer Firebird-Datenbank.
Als Firebird Server habe ich den Firebird Super-Server am laufen.

Innerhalb meiner Anwendung greife ich über die ZEOS Komponenten auf die Datenbank zu.

Damit meine Anwendung flexibel bleibt kann der Connect String, der den "Pfad" zur Datenbank enthält, natürlich geändert
werden. Wenn zur Laufzeit die Datenbank auf die zugegriffen werden soll geändert wird, ist dass alles kein Problem. Ich muss aber innerhalb meiner Anwendung die Informationen, den Connect String, irgendwie speichern, damit ich beim nächsten Start automatisch die
Verbindung zur Datenbank herstellen kann.

Also ist ein Kriterium der Anwendung dass diese Information gespeichert wird.
Das zweite Kriterium ist dass die Anwendung auf Windows XP und Windows Vista lauffähig sein soll.
Und als drittes Kriterium ist zu nennen, dass die Daten nur über die Anwendung manipulierbar sein sollten.

Von Visual Studio 2008 kenn ich die Möglichkeit, in den Projekt-Eigenschaften Variablen zu definieren, die gelesen
und auch beschrieben werden können.

Visual Studio Beispiel:
Ich könnte eine Stringvariable definieren, in der ich den Datenbankpfad hinterlegen kann.
Wenn ich den Wert dieser Variable verändere, wird diese gespeichert und der neue Wert steht mir,
bis zur nächsten Änderung, bei jedem Neustart zur Verfügung. Wie Visual Studio diese Werte
speichert weiß ich leider nicht.

So ... ich hab in CodeGear RAD Studio 2007 keine vergleichbare Möglichkeit gefunden und nehme an
dass es so eine Möglichkeit auch nicht gibt.

Nun hab ich mir überlegt was für Möglichkeit mir zur Verfügung stehen:

1. Informationen in die Registry schreiben
Ich könnte einen Key in der Registry speichern und dort den Pfad auslesen.
Für meine Begriffe zählt dies aber nicht zum guten Stil einer Anwendung und möchte es tunlichst vermeiden Daten
in der Registry zu speichern.

Gründe hierfür sind:
- Ein Anwender mit genug Hintergrundwissen könnte den Wert in der Registry ändern und somit die Informationen inkonsistent machen.
- Die Registry wird bereits von genug Softwareentwicklern aufgebläht.

2. Informationen in einer Datei speichern
Ich hätte die Möglichkeit Informationen in eine Datei zu schreiben und diese auf einer lokalen Festplatte zu speichern.
Dank der UAC von Vista müsste ich überprüfen welches Betriebsystem eingesetzt wird. Um eine Datei zu speichern benötige ich
ein Admin-Token dass meiner Anwendung erlaubt eine Datei überhaupt auf die Festplatte zu schreiben.
Auch diese Variante möchte ich ungern nutzen, da nicht gesagt ist ob in windows 8 oder 9 überhaupt eine UAC zum Einsatz kommt oder Microsoft wieder ein anderes Verfahren einsetzt um unberechtigte Dateizugriffe zu kontrollieren. Hinzu kommt noch dass
die Datei wieder manipuliert werden kann.

3. Informationen in eine Tabelle der Datenbank speichern
Diese Variante verfällt bereits im Vorfeld, da ich zur Datenbank eine Verbindung aufbauen müsste in der die Informationen stehen, aber die Informationen bereits vorher benötige.

Ich hoffe ich habe meine Ansätze verständlich erläutert.

Nun meine eigentliche Frage ...
Wie speichert ihr Informationen die ihr für die korrekte Auführung eurer Anwendung benötigt?

Vielen Dank für eure Posts

Euer f4k3
Sascha
  Mit Zitat antworten Zitat