AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein In welches Verzeichnis Benutzerdaten speichern?
Thema durchsuchen
Ansicht
Themen-Optionen

In welches Verzeichnis Benutzerdaten speichern?

Ein Thema von Catbytes · begonnen am 20. Okt 2015 · letzter Beitrag vom 21. Okt 2015
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#1

In welches Verzeichnis Benutzerdaten speichern?

  Alt 20. Okt 2015, 16:02
Hallo,

ich benötige Informationen, wie man mittlerweile Benutzerinformationen (z.B. Ini-Dateien) abspeichert. Genauer gesagt: Wo werden die abgespeichert?

Früher hieß es, in das eigene Verzeichnis, irgendwann mal die Registry und dann mal wieder das Homedir.

Was ist z.Z. "State of the Art" bzw. von Windows empfohlen?

Angeregt durch Michael Puff mit seinem Artikel (http://michael-puff.de/Programmierun.../HOMEDIR.shtml) frage ich mich nun, ob das noch relevant ist. Der Artikel ist ja schon von 2010.

Vielen Dank!
Catbytes
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: In welches Verzeichnis Benutzerdaten speichern?

  Alt 20. Okt 2015, 16:11
Delphi-Referenz durchsuchenTPath (System.IOUtils)

z.B. Delphi-Referenz durchsuchenTPath.GetHomePath


Je nachdem, wer und wo die Daten verfügbar sein sollen:
C:\ProgramData
C:\Users\CURRENT_USER\AppData\Roaming
C:\Users\CURRENT_USER\AppData\Local
...

Und ja, in TPath fehlt irgendwie Vieles.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (20. Okt 2015 um 16:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#3

AW: In welches Verzeichnis Benutzerdaten speichern?

  Alt 20. Okt 2015, 17:14
...

Und ja, in TPath fehlt irgendwie Vieles.
Na ja, so viel nun auch wieder nicht:

C:\ProgramData = TPath.GetPublicPath
C:\Users\CURRENT_USER\AppData\Local = TPath.GetCachePath

Die Roaming-Profile sind halt sehr Windows-spezifisch, weshalb es nicht leicht sein wird, die als multi-plattform zu gestalten. Der Charme an TPath ist halt, daß es auf allen Zielplattformen halbwegs sinnvolle Ergebnisse liefert.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#4

AW: In welches Verzeichnis Benutzerdaten speichern?

  Alt 20. Okt 2015, 18:27
Der Charme an TPath ist halt, daß es auf allen Zielplattformen halbwegs sinnvolle Ergebnisse liefert.
Das Hauptprogramm läuft ausschließlich unter Windows.

Evtl. Zusatzprogramme vielleicht auch mal auf Android.

Grüße!
Catbytes
  Mit Zitat antworten Zitat
SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#5

AW: In welches Verzeichnis Benutzerdaten speichern?

  Alt 20. Okt 2015, 18:32
Das Hauptprogramm läuft ausschließlich unter Windows.
Unter Windows kann man einfach die Umgebungsvariablen benutzen.

Delphi-Quellcode:
// System.SysUtils.GetEnvironmentVariable
GetEnvironmentVariable('ALLUSERSPROFILE') // C:\ProgramData
GetEnvironmentVariable('APPDATA') // C:\Users\<NAME>\AppData\Roaming
GetEnvironmentVariable('LOCALAPPDATA') // C:\Users\<NAME>\AppData\Local
Für eine Liste aller Umgebungsvariablen einfach mal ein Terminal starten (cmd) und "set" eingeben.

Die Werte sollte man natürlich validieren (gut möglich, dass nicht alle in älteren Windowsversionen präsent sind), und wahrscheinlich eher TPath benutzen, in Hinblick auf Multiplattform.
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

AW: In welches Verzeichnis Benutzerdaten speichern?

  Alt 20. Okt 2015, 19:04
Hallo,

mal so nebenbei eine Frage - weil's doch etwas zum Thema passt. Wie haltet ihr es mit der Speicherung benutzerdefinmierter Daten?

Ich handhabe das so:

- Wenn es sich um Dateien handelt, die für den Benutzer wichtig sind, z.B. Konfigurationsdateien mit seinen persönlichen Einstellungen, speichere ich sie im Dokumentenpfad (z.B. C:\Users\USERNAME\Documents\MEIN_APP_NAME\ Hier gehe ich davon aus, dass der User seinem Dokumentenpfad erhöhte Aufmerksamkeit bei der Datensicherung schenkt (wer macht Vollbackups, z.B. mit Acronis?) und darum auch die Bezeichnung "wichtig".

- Weniger wichtige Dateien werden in C:\Users\USERNAME\AppData\Local\MEIN_APP_NAME\ gespeichert. Das sind dann z.B. Exportdateien die jederzeit wieder erzeugt oder hergestellt werden können.

- Wenn es unwichtige Dateien sind, verwende ich C:\Users\USERNAME\AppData\Roaming\MEIN_APP_NAME\

Ist das eigentlich im Sinne von Microsoft (nach den offiziellen Regeln)? So richtig schlau werde ich nämlich bei den Unterschieden zwischen AppData\Local, AppData\LocalLow und AppData\Roaming nicht.
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: In welches Verzeichnis Benutzerdaten speichern?

  Alt 20. Okt 2015, 19:11
So richtig schlau werde ich nämlich bei den Unterschieden zwischen AppData\Local, AppData\LocalLow und AppData\Roaming nicht.
http://superuser.com/a/21462
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#8

AW: In welches Verzeichnis Benutzerdaten speichern?

  Alt 20. Okt 2015, 19:38
Meins:
System.IOUtils.TPath.GetHomePath +'\'+Application.Title
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai
Online

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#9

AW: In welches Verzeichnis Benutzerdaten speichern?

  Alt 20. Okt 2015, 21:49
Unter Windows kann man einfach die Umgebungsvariablen benutzen.
Das sollte man eher nicht, genau wie der Zugriff auf die Registry für diesen Zweck Unsinn ist.

Zitat:
Delphi-Quellcode:
// System.SysUtils.GetEnvironmentVariable
GetEnvironmentVariable('ALLUSERSPROFILE') // C:\ProgramData
GetEnvironmentVariable('APPDATA') // C:\Users\<NAME>\AppData\Roaming
GetEnvironmentVariable('LOCALAPPDATA') // C:\Users\<NAME>\AppData\Local
Für all diese Verzeichnisse gibt's entsprechende CSIDLs, die man in den SHGet* Funktionen einsetzen kann.

- Wenn es sich um Dateien handelt, die für den Benutzer wichtig sind, z.B. Konfigurationsdateien mit seinen persönlichen Einstellungen, speichere ich sie im Dokumentenpfad (z.B. C:\Users\USERNAME\Documents\MEIN_APP_NAME\
Eine Speicherung dort empfinde ich als frech. Warum? Documents ist MEIN Verzeichnis für MEINE Dokumente, nicht für den Krempel, den Programme meinen da ablegen zu müssen. Gerade Spiele tun sich hier als sehr unrühmlich hervor, weil die teilweise mehrere Gigabytes an Savegames & Co dort ablegen. In Documents gehören Dokumente, keine Savegames, keine Anwendungsdaten und ähnliches Zeug.

Sowas hindert mich auch daran, meine Daten von Anwendungsdaten (die der Programme) zu trennen. Weiterhin wird es schwieriger, die Datenpartition möglichst klein zu halten, wenn Documents auf eine andere Partition verlegt wurde (was man nebenbei gesagt immer tun sollte).

Eine Ausnahme gibt es natürlich: Mit der Software erstellte Dateien, also z.B. Dateien, die mit der Anwendung verknüpft sind. Aber eben keine Konfigurationsdaten, denn die gehören in %AppData%.

Zitat:
Hier gehe ich davon aus, dass der User seinem Dokumentenpfad erhöhte Aufmerksamkeit bei der Datensicherung schenkt (wer macht Vollbackups, z.B. mit Acronis?) und darum auch die Bezeichnung "wichtig".
Wenn du dir Sorgen machst, dass der Benutzer kein Backup der Konfigurationsdaten deiner Software machst, ist das fehl am Platz, denn das ist das Problem des Nutzers. Stell im Zweifel lieber eine Anleitung bzw. eine Liste von Verzeichnissen zusammen, die der Nutzer sichern soll, wenn er sich dafür interessiert. Oder bau eine Backup-Möglichkeit in die Software ein, die eine Kopie an einem durch den Nutzer definierten Ort ablegt.

Zitat:
- Weniger wichtige Dateien werden in C:\Users\USERNAME\AppData\Local\MEIN_APP_NAME\ gespeichert. Das sind dann z.B. Exportdateien die jederzeit wieder erzeugt oder hergestellt werden können.
Sind die Dateien groß? Dann ist das richtig. Sind die Dateien relevant für den Nutzer in Domänen? Dann ist der Ort falsch, Roaming wäre besser geeignet.

MfG Dalai

Geändert von Dalai (20. Okt 2015 um 21:51 Uhr)
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#10

AW: In welches Verzeichnis Benutzerdaten speichern?

  Alt 20. Okt 2015, 22:28
Ich nehme für alles was zum Programm gehört "APPDATA" als Speicherort. Unter "Documents\APPname" lege ich per default nur "Projekte&Daten" ab. Solange der Path "Documents\APPname" existiert, speichere ich dort "nebenbei" als DefaultBackup auch eine (kleine) "Documents\APPname\config.zip", damit nach einem Restore per "ZIP-Reconfig" auch die zu den Daten passenden Settings wieder hergestellt werden (können). Bisher hat sich noch niemand beschwert. Wer das nich will, der löscht das "Documents\APPname" Verzeichnis und muss sich dann eben selbst um alle Einstellungen und Backups kümmern.

Vor gaaaaanz langer Zeit hatte ich "Documents\Company\APPname", aber da viele Anwender nur das Programm kennen und nicht wissen welcher Firmenname der Herausgeber dazu ist(und so ihre Daten nicht finden oder beim "Ausmisten" löschen), habe ich per Default auf "Documents\APPname" für "Daten" umgestellt und speichere solange möglich dort nebenbei ein KLEINE "config.zip"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz